這個問題的短版本是這樣的:我怎麼能彈出git
藏而不觸發自動合併?如何彈出混帳藏而不觸發自動合併
現在對於更長的版本...
考慮替代git stash ... + git pull ... + git pop
以下玩具的例子。
首先,git status
表明工作目錄中的唯一修改是針對某個跟蹤文件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")
現在,爲了工作目錄重置爲乾淨的狀態,作爲一個先決條件運行git pull
,我暫時命名修改後的文件foo
(一些未經跟蹤的名稱),並恢復foo
版本在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,現在我跑git pull
,這對於這個例子來說,我們可以假設是快進:
% git pull
最後,我還原了臨時更名爲foo
。
% mv foo.20130508T110014 foo
...我又回到
% 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
#
這是「道德等價物」一git stash save + git pull + git stash pop
的,不同的是前者,而不是後者,都難「合併衝突」,像這樣的:
% git stash save 'WIP'
% git pull
% git stash pop
Auto-merging foo
CONFLICT (content): Merge conflict in foo
我怎樣才能複製rename-checkout-pull-rename
序列上方使用git stash save + ... + git stash pop
,沒有觸發自動合併?
編輯:順便說一句,rename-checkout-...-rename
程序更加緊密地代表着什麼我期望從一個命令調用stash
。 IOW:現在保存我的工作目錄的狀態,並稍後替換它。 這張圖中沒有「合併」。
這不等於道德。如果你隱藏彈出窗口,更改將被合併。如果您將文件恢復到原來的位置,則原始存儲庫中發生的任何更改都將丟失並被您的文件版本覆蓋。 – knittl 2013-05-08 15:43:07
我不知道你爲什麼重命名的提交和所有這些看到我的答案在這裏http://stackoverflow.com/questions/16180916/git-three-different-repositories-with-common-files/16181046#16181046希望它可以幫助 – uday 2013-05-08 15:43:42
@uDaY:我無法找到如何避免自動合併的答案。 – kjo 2013-05-08 16:51:30