Tôi có một số thay đổi cục bộ (không có trong các tệp riêng biệt .gitignore không hoạt động) mà tôi không muốn cam kết.
Tôi làm git reset --hard
đôi khi sau khi cam kết xóa các thay đổi không thường xuyên nhưng đáng ngại tôi cũng mất các thay đổi hữu ích mà tôi muốn rời khỏi.
Làm cách nào để giữ các thay đổi hữu ích?Cách tôi có thể lưu trữ một số thay đổi cục bộ tồn tại git reset --hard
Trả lời
Bạn cũng có thể thử:
git update-index --skip-worktree -- file
# to cancel it:
git update-index --no-skip-worktree -- file
Nó nên cưỡng lại một git reset --hard
. (xem this answer về cách sử dụng dấu gạch nối kép '--
')
Xem này blog post.
- Dường như
skip-worktree
đang cố gắng hết sức để bảo vệ dữ liệu trên máy của bạn. Nhưng nó không ngăn cản bạn thay đổi ngược dòng nếu nó an toàn. Plus git không đặt lại cờ khi kéo. Nhưng bỏ qua lệnh ‘reset --hard’ có thể trở thành một bất ngờ khó chịu cho một nhà phát triển.assume-unchanged
cờ có thể bị mất khi thao tác kéo và thay đổi cục bộ bên trong các tệp như vậy dường như không quan trọng đối với git.
Giả sử không thay đổi giả định rằng nhà phát triển không nên thay đổi tệp. Nếu một tệp đã được thay đổi - thay đổi đó không quan trọng. Cờ này có nghĩa là để cải thiện hiệu suất cho các thư mục không thay đổi như SDK. Nhưng nếu lời hứa bị hỏng và một tệp thực sự bị thay đổi, git sẽ chuyển đổi cờ để phản ánh thực tế. Có lẽ nó là ok để có một số lá cờ không nhất quán trong các thư mục thường không có nghĩa là để được thay đổi.Mặt khác,
skip-worktree
hữu ích khi bạn hướng dẫn git không chạm vào tệp cụ thể. Đó là hữu ích cho một tập tin cấu hình đã được theo dõi. Upstream lưu trữ chính lưu trữ một số cấu hình sẵn sàng sản xuất nhưng bạn muốn thay đổi một số thiết lập trong cấu hình để có thể làm một số thử nghiệm địa phương. Và bạn không muốn vô tình kiểm tra các thay đổi trong tệp như vậy để ảnh hưởng đến cấu hình sản xuất. Trong trường hợp đó,skip-worktree
sẽ tạo cảnh hoàn hảo.
Bạn có thể sử dụng git stash
để lưu trữ các thay đổi của mình tạm thời, sau đó kéo lại các thay đổi sau - xem Pro Git chapter on stashing.
Có Tôi biết về '' 'git stash''' nhưng tôi không muốn giấu các thay đổi của mình mỗi lần. – freemanoid
@freemanoid, được rồi, hãy giả vờ lệnh 'git preserve-these-and-these-changes 'của bạn có tồn tại; sau đó mỗi lần bạn muốn giữ gì đó để tồn tại 'git reset --hard', bạn cần gọi lệnh tưởng tượng đó và sau đó gọi một lệnh khác để" hoàn tác "trạng thái lưu trữ được đặt trên các tệp đã chọn. Bây giờ làm thế nào điều này sẽ khác với 'git stash' /' git stash pop'? – kostix
Nếu bạn không bao giờ muốn những thay đổi này được cam kết nhưng luôn cần chúng cục bộ thì hãy xem xét tạo và cam kết tập lệnh hoặc tệp vá cho các thay đổi cục bộ của bạn. Sau đó, bạn có thể giữ và ghi lại các thay đổi của mình cũng như dễ dàng áp dụng chúng sau khi khôi phục cài đặt gốc.
Nếu bạn có những thay đổi cụ thể đối với môi trường của mình thì có thể đáng để chúng bên ngoài chúng thành tệp cấu hình.
- 1. Git reset --hard và một kho lưu trữ từ xa
- 2. "git checkout tag-name" vs "git reset --hard tag name"
- 3. Sự khác nhau giữa "git checkout -f" và "git reset --hard HEAD" là gì?
- 4. Cách đẩy các thay đổi cục bộ vào kho lưu trữ git từ xa trên bitbucket
- 5. Git vô hiệu đẩy từ kho lưu trữ cục bộ
- 6. git khi thay đổi kho lưu trữ
- 7. Ẩn danh kho lưu trữ git cục bộ?
- 8. Tại sao maven sử dụng kho lưu trữ nội bộ của tôi trước kho lưu trữ cục bộ của tôi?
- 9. Có sự khác biệt giữa "git reset --hard hash" và "git checkout hash" không?
- 10. Sử dụng kho lưu trữ Git cục bộ với kho lưu trữ Subversion chính
- 11. Cách tìm đường dẫn của kho lưu trữ git cục bộ khi tôi có thể trong thư mục con
- 12. Lưu trữ Git của kho lưu trữ với các thay đổi không được cam kết
- 13. Tại sao đôi khi tôi thấy tên tệp "Entry" không được tăng lên. Không thể hợp nhất. " sau khi 'git reset --hard' và 'git pull'?
- 14. Làm cách nào để tôi có thể tạo kho lưu trữ cục bộ của mình cho git-pull?
- 15. Có thể mất một số thay đổi thông qua git
- 16. git pull cho một kho lưu trữ cục bộ tại vị trí được chỉ định (thay vì pwd)
- 17. pip cài đặt kho lưu trữ git cục bộ
- 18. Nhân bản kho lưu trữ Git cục bộ
- 19. Làm thế nào tôi có thể có nó đến nơi "git push" đẩy tới kho lưu trữ cục bộ?
- 20. Đẩy vào kho lưu trữ git được lưu trữ cục bộ qua HTTP
- 21. Tại sao 'git commit' không lưu thay đổi của tôi?
- 22. Git: Hoàn tác thay đổi cục bộ; git add. + git rm?
- 23. Cập nhật một kho lưu trữ cục bộ với các thay đổi từ kho lưu trữ Github
- 24. Không thể thực hiện thay đổi đối với kho git cục bộ
- 25. Cách thay đổi tên kho lưu trữ cục bộ trên GitHub cho Windows
- 26. Git reset = fatal: không thể đọc cây
- 27. Git: cập nhật một kho lưu trữ để sửa đổi nhất định
- 28. Tôi có thể sử dụng html5 lưu trữ cục bộ để lưu trữ thông tin người dùng phiên xác thực
- 29. Làm thế nào tôi có thể hiển thị tất cả các biến lưu trữ cục bộ lưu trữ?
- 30. Làm thế nào để giữ một kho lưu trữ git sao lưu đồng bộ với cục bộ, "git push --mirror" hoặc "git remote update"
Cảm ơn, nó hoạt động! Làm thế nào tôi có thể loại bỏ lá cờ này? – freemanoid
@freemanoid chỉ đơn giản là 'git update-index --no-skip-worktree - aFile' – VonC
Hmm Tôi không tìm thấy điều này khi nhìn qua người đàn ông nhưng nó đã ở đó. Vì vậy, '' 'git update-index --no-skip-worktree my_file''' hoạt động. – freemanoid