2011-10-14 40 views
11

Cần trợ giúp tìm ra một số quy trình công việc phổ biến với Github. Tôi đến từ một nền tảng VS TFS, vì vậy hãy tha thứ cho tôi.Git: Hoàn tác thay đổi cục bộ; git add. + git rm?

Suy vi Pending Changes

Hãy nói rằng tôi đã nhân bản của một kho git để hệ thống tập tin địa phương của tôi. Tại thời điểm này, các tệp cục bộ của dự án khớp chính xác với những gì trong repoistory từ xa.

Sau đó, tôi quyết định thực hiện một số thay đổi đối với mã và thay đổi các phiên bản cục bộ của một vài tệp. Sau khi thực hiện một số thử nghiệm, tôi tìm ra rằng tôi muốn loại bỏ các thay đổi cục bộ của mình và hoàn nguyên các tệp cục bộ về những gì chúng đang ở trong repoistory từ xa.

Làm cách nào để hoàn tác các thay đổi cục bộ này, khôi phục chúng về các phiên bản hiện tại trong kho lưu trữ?

Cam kết tất cả các thay đổi

Bất cứ khi nào tôi sửa đổi các nội dung của tập tin địa phương trong bản sao kho của tôi, hoặc thêm các tập tin mới, và muốn đẩy những thay đổi, tôi phát hành "git add.", "Git commit" với ý kiến ​​của tôi, sau đó "git push" với chủ nhân của tôi.

Tuy nhiên, khi tôi xóa tệp cục bộ được theo dõi trong kho lưu trữ, "git add." không nắm bắt được thay đổi rm. Thay vào đó, tôi phải "git rm [filename]" trước khi tôi "git commit" để cập nhật kho lưu trữ. Tôi luôn quên làm điều này.

Có lệnh git nào sẽ "git thêm" hay không. và "git rm" bất kỳ tệp nào tôi đã xóa cục bộ, trong một bước? Sau khi sửa đổi các tập tin cục bộ và xóa một cặp vợ chồng, tôi muốn phát hành chỉ một lệnh để nắm bắt tất cả các thay đổi của tôi trước khi tôi "git commit".

Trả lời

22

Làm thế nào để hoàn tác các thay đổi địa phương, khôi phục lại chúng với các phiên bản hiện tại trong kho? '

git reset --hard 

(điều này sẽ thiết lập lại chỉ số của bạn và thư mục làm việc để HEAD)

Có lệnh git nào sẽ "git add" hay không. và "git rm" bất kỳ tập tin tôi đã xóa tại địa phương, trong một bước? '

git add -u 

(nó sẽ không thêm các tập tin mới)

Nếu bạn cũng muốn thêm tập tin mới, loại bỏ rm' các tệp ed và sửa đổi giai đoạn đối với tệp:

git add -A 
+0

Tôi nghĩ đây là câu trả lời đúng. Kiểm tra liên kết này để biết thêm thông tin: http://book.git-scm.com/4_undoing_in_git_-_reset,_checkout_and_revert.html – dresende

3

Bạn có thể trở lại cuối cùng của bạn có giá trị cam kết (tức là bản sao của repo từ xa, trong ví dụ tour) bằng cách phát hành:

git reset --hard HEAD 

Ngoài ra, tôi khuyên bạn nên đọc hữu ích http://progit.org/2011/07/11/reset.html trang để hiểu rõ hơn về cách thiết lập lại công việc và chỉ mục là gì và tại sao git add và git rm là các lệnh riêng biệt.