Nếu bạn muốn di chuyển một cam kết đến khu vực dàn dựng - đó là uncommit nó và di chuyển tất cả các thay đổi trong đó vào khu vực dàn dựng (có hiệu quả đặt các chi nhánh trong tiểu bang mà nó đã có được trước khi cam kết) - bạn làm nó như thế nào? Hay đó là điều mà bạn không thể làm? Gần nhất mà tôi biết làm thế nào để sao chép tất cả các tập tin đã được thay đổi trong cam kết ở một nơi khác, thiết lập lại các chi nhánh để cam kết trước khi cam kết mà bạn đang cố gắng để di chuyển vào khu vực dàn dựng,, Logged di chuyển tất cả các tệp được sao chép trở lại vào kho lưu trữ và sau đó thêm chúng vào vùng dàn dựng. Nó hoạt động, nhưng nó không chính xác là một giải pháp tốt đẹp. Những gì tôi muốn có thể làm là chỉ cần hoàn tác các cam kết và di chuyển của nó thay đổi vào khu vực dàn dựng. Nó có thể được thực hiện? Và nếu vậy, làm thế nào?Làm thế nào để bạn di chuyển một cam kết đến khu vực dàn trong git?
70
A
Trả lời
132
git reset --soft HEAD^
Điều này sẽ đặt lại chỉ mục của bạn thành HEAD^(cam kết trước) nhưng để lại thay đổi trong khu vực dàn dựng.
Có một số sơ đồ tiện dụng trong git-reset
docs
Nếu bạn đang ở trên Windows bạn có thể cần phải sử dụng định dạng này:
git reset --soft HEAD~1
Các vấn đề liên quan
- 1. Vô hiệu hóa khu vực dàn dựng git
- 2. Làm thế nào để lưu trạng thái hiện tại của khu vực dàn dựng của tôi?
- 3. Git: di chuyển cam kết "lên trên"
- 4. git: làm thế nào để di chuyển một số cam kết với chi nhánh mới
- 5. làm thế nào để bạn chỉ đẩy một số cam kết git địa phương của bạn?
- 6. Cấu trúc trong khu vực dàn dựng kho dữ liệu
- 7. Khu vực di động Vs Nhiều khu vực dự án?
- 8. git - di chuyển nhánh "thẻ" sang cam kết khác?
- 9. git dàn dựng và cam kết giữa nhiều chi nhánh
- 10. Dàn dựng tự động với Git
- 11. Làm thế nào để bạn đổi tên một cam kết Git đẩy vào GitHub?
- 12. Tại sao có một quá trình dàn dựng trong git?
- 13. Git: Cách di chuyển qua lại giữa các cam kết
- 14. Làm cách nào để chuyển đến cam kết cụ thể bằng git-subtree?
- 15. Di chuyển các tệp giữa các cam kết
- 16. Làm thế nào để xóa một đứa trẻ mồ côi cam kết trong git?
- 17. Có thể bỏ qua khu vực dàn dựng và (cũng) cam kết không được theo dõi, các tệp mới vào git?
- 18. Làm thế nào để di chuyển tất cả các cam kết từ một chi nhánh khác?
- 19. Làm thế nào để vẽ trong khu vực nonclient?
- 20. Git: di chuyển các cam kết từ chủ này đến chi nhánh khác
- 21. Trên Win32 làm thế nào để bạn di chuyển một chủ đề đến một lõi CPU?
- 22. Làm thế nào để bạn di chuyển theo chương trình của một TextArea Flex đến cùng?
- 23. Làm thế nào để bạn thấy cam kết nào đã xóa một tệp khỏi repo?
- 24. Làm thế nào để hiện đang thực hiện khu vực?
- 25. Git: Làm thế nào để rebase và squash cam kết từ chi nhánh đến master?
- 26. Làm thế nào để bạn di chuyển nhiều tệp trong git?
- 27. Làm cách nào để "mở lại" một cam kết git?
- 28. Làm thế nào tôi có thể chuyển kho git của tôi đến một đặc biệt cam kết
- 29. Làm thế nào tôi có thể thấy các cam kết đến trong git?
- 30. Cách grep thông qua các tệp được dàn dựng của bạn trước khi cam kết?
Nếu đây làm gì, hãy thử 'git reset ĐẦU --soft ~ 1' có nghĩa là điều tương tự nhưng cũng hoạt động trên Windows. –
Để làm rõ, dấu ngã và dấu mũ có nghĩa là những thứ khác nhau trong các phiên bản git. HEAD ~ 1 luôn theo sau người cha/mẹ đầu tiên của một cam kết, mà có thể không phải là những gì bạn muốn nếu nó là một cam kết hợp nhất có nhiều cha mẹ. Về vỏ Windows cmd, bạn chỉ cần thoát khỏi dấu mũ với một dấu sót khác, ví dụ: "git reset --soft HEAD ^^" để quay lại "HEAD ^". Đây hoàn toàn là một tạo phẩm của vỏ Windows cmd, vì vậy bạn không cần phải làm điều đó nếu bạn sử dụng GUI git trên Windows. Dấu ngã và dấu vết được giải thích tại http://schacon.github.io/git/git-rev-parse#_specifying_revisions – ahains