2009-09-25 34 views
8

Thỉnh thoảng tôi đang ở trong một nhánh tính năng, nhưng tôi đã thực hiện một thay đổi không liên quan mà tôi muốn thấy trong chính. Thường thì tôi chỉ có thể làm:Chuyển đổi nhánh trong git

git checkout master 
git commit -m "..." filename 

Nhưng đôi khi tôi thực hiện thanh toán tôi nhận được một cảnh báo rằng có sự thay đổi địa phương và do đó tôi không thể chuyển đổi các chi nhánh.

Tại sao điều này chỉ xảy ra đôi khi? Có cách giải quyết nào khi tôi thấy thông báo này không? Có lẽ stash?

Trả lời

15

Như Devin Ceartas đã đề cập, điều này xảy ra khi chuyển nhánh sẽ thay đổi một số tệp mà bạn đã thay đổi cục bộ. (Git sẽ không phàn nàn khi bạn có những thay đổi cục bộ trên một tập tin đó sẽ không được thay đổi, hoặc thêm các tập tin mới mà tồn tại trên cả các chi nhánh hay thạc sĩ.)

Hai cách xung quanh này:

  1. "git stash" thay đổi của bạn, thay đổi thành thạo và "git stash apply". Sau đó, cam kết thay đổi.

  2. Cam kết các thay đổi bạn muốn trên nhánh, sau đó "git stash" bất kỳ thay đổi nào khác (nếu có), thay đổi thành chính và chọn cherry thay đổi trên chính.

+5

Bốn cách: 3. bạn luôn có thể cố gắng thực hiện kết hợp 3 chiều với "git checkout -m" và 4. bạn có thể bắt buộc thanh toán (mất các thay đổi) bằng "git checkout -f". –

0

Tôi cũng đã thấy điều này. Tôi nghĩ vấn đề là khi các thay đổi cục bộ của bạn sẽ thay đổi với một cái gì đó trong nhánh khác (trái với một tệp mới không nằm trong nhánh khác). Bạn luôn có thể kiểm tra nhánh khác trong một thư mục khác.

+0

Làm cách nào bạn có thể kiểm tra một nhánh khác trong một thư mục khác? –

+0

Tìm trợ giúp về git-new-workdir, cho phép bạn tạo một thư mục làm việc mới được hỗ trợ bởi cùng một repo. – Phil

+0

Tôi thấy, đó là một kịch bản trong contrib/workdir trong repo git git. Cảm ơn! –

Các vấn đề liên quan