2012-07-23 60 views
1

我想將相同的變更集應用到兩個不同的分支。簽出到另一個分支後丟失的文件

這是我做的:

git init 
touch README 
git add README 
git commit -m "initial" 

git branch other 

touch file2 
git add file2 
git stash 

git checkout other 
git stash apply 

git checkout master 
git stash apply 
git stash drop 

這工作。 file2在兩個分支上都存在。但是,如果我切換到另一個分支然後再切換到master,那麼file2不再存在於master!爲什麼會發生,我能做些什麼呢?我也有一個限制:應用隱藏的更改後,我無法在主分支上調用git commit。

Git版本1.7.11.msysgit.0

回答

2

git stash apply僅將更改應用於工作樹和索引,到倉庫。所以當你提交之前,你git checkout不同的分支,你會失去這些本地修改。如果您希望他們堅持在該分支上,您已將提交給該分支。

+0

謝謝。我想我將不得不承諾畢竟 – 2012-07-23 12:58:12

0

這對我很有用。

採用同樣的變更更好的方法是可能:

  1. git commit您的master變更。
  2. git checkout other
  3. git cherry-pick master
+0

謝謝Len。我不確定是否可以採摘櫻桃。儘管我不能像前面提到的那樣在主服務器上創建提交,但我仍然嘗試着創建一個提交給主服務器的提交,稍後將其提交到「其他」分支。之後,我調用'reset HEAD ^'來撤銷提交保留文件,但同樣的問題仍然存在:如果我簽出'other'分支,我會丟失master分支上的這些文件。 – 2012-07-23 12:56:22

+0

將變更集應用於兩個分支而不提交是什麼意思?正如@vergenzt所說,這沒有任何意義。如果需要,您可以輕鬆地進行提交;你可以提交給兩者,然後簽出master並說'git reset HEAD ^';它會回滾提交,但將更改留在工作樹中(如存儲)。 – Ashe 2012-07-23 23:30:27

相關問題