Phiên bản ngắn của câu hỏi này là: làm thế nào tôi có thể bật stash git
mà không kích hoạt tự động hợp nhất?làm thế nào để pop stit git mà không kích hoạt một auto-merge
Bây giờ cho các phiên bản còn ...
xem xét ví dụ đồ chơi sau đây của một thay thế cho git stash ... + git pull ... + git pop
.
Đầu tiên, git status
cho thấy rằng sửa đổi duy nhất trong thư mục làm việc là một số tệp được theo dõi foo
.
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: foo
#
no changes added to commit (use "git add" and/or "git commit -a")
Bây giờ, để thiết lập lại các thư mục làm việc đến một nhà nước trong sạch, như một điều kiện tiên quyết cho việc chạy git pull
, tôi tạm thời đổi tên các tập tin được sửa đổi foo
(đối với một số tên untracked), và khôi phục lại phiên bản của foo
trong HEAD
...
% mv foo foo.$(date +%Y%m%dT%H%M%S)
% git checkout foo
% git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# foo.20130508T110014
nothing added to commit but untracked files present (use "git add" to track)
OK, bây giờ tôi chạy git pull
, trong đó, vì lợi ích của ví dụ này, chúng ta có thể giả định là một nhanh về phía trước:
% git pull
Cuối cùng, tôi khôi phục tạm thời được đổi tên foo
.
% mv foo.20130508T110014 foo
... và tôi trở lại
% git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: foo
#
Đây là "tương đương với đạo đức" của một git stash save + git pull + git stash pop
, TRỪ rằng trước đây, chứ không phải sau này, là miễn dịch với "hợp nhất mâu thuẫn", như thế này một:
% git stash save 'WIP'
% git pull
% git stash pop
Auto-merging foo
CONFLICT (content): Merge conflict in foo
Làm thế nào tôi có thể nhân rộng chuỗi rename-checkout-pull-rename
trên sử dụng git stash save + ... + git stash pop
, mà không cần kích hoạt tính năng tự động hợp nhất?
CHỈNH SỬA: Ngẫu nhiên, quy trình rename-checkout-...-rename
thể hiện chặt chẽ hơn những gì tôi mong đợi từ lệnh gọi là stash
. IOW: lưu trạng thái của thư mục làm việc của tôi ngay bây giờ, và thay thế nó sau này. Không có "hợp nhất" trong ảnh này.
Nó không phải là tương đương đạo đức. Nếu bạn 'stash pop', các thay đổi sẽ được hợp nhất. Nếu bạn 'mv' tập tin của bạn trở lại, bất kỳ thay đổi nào đã xảy ra trong kho gốc sẽ bị mất và bị ghi đè bởi phiên bản tệp của bạn. – knittl
Tôi không biết tại sao bạn đang đổi tên người nộp đơn và tất cả những người thấy câu trả lời của tôi ở đây http://stackoverflow.com/questions/16180916/git-three-different-repositories-with-common-files/16181046#16181046 hy vọng nó sẽ giúp – uday
@ uDaY: Tôi không thể tìm thấy cách tránh tự động hợp nhất từ câu trả lời đó. – kjo