2016-05-27 25 views
1

所以我在Git工作,並試圖創建一個新的分支,我可以放棄我的藏匿的內容,並支持我的存儲在這樣做時發生的任何合併衝突。我正在做以下事情:想申請我的藏匿處到一個新的分支,並覆蓋它與我的藏東西的一切

git checkout -b *newbranchname* 
git stash apply 

它告訴我文件合併衝突。我怎樣才能在終端上做這件事,並且自動地在任何衝突中支持隱藏,而不必專門處理它們?

回答

2

在我看來,最簡單的方法是「不這樣做」 :-)

相反,把你的git stash內容變成自己的一個分支:

git stash branch newbr 

現在你有一個新分支newbr,索引準備提交(如果您有索引項目git add),並根據存儲修改工作樹,準備好編寫並提交。如果您之前仔細添加了內容,請立即提交,然後添加其他內容並再次提交。如果沒有,只需現在添加一切並提交。現在你有一個新的分支newbr,其中有一兩個提交 - 有多少取決於你剛剛做了多少個git commit-當你做了git stash時,它加入了任何提交。

現在,您可以從不同的起點創建不同的新分支(如果這是您想要的),並使用git cherry-pick來提交這些提交,然後放棄新分支。或者,您可以使用git rebase -i(使用<upstream>以及可選的--onto參數)以通常的rebase方式複製其他地方的提交,一旦完成複製就丟棄原始提交。或者,如果newbr的現有起點畢竟是你想要的,那麼你已經全部設置好了。


所有這一切說,如果你真的只想檢查工作樹的版本有衝突的文件,完全無視這些文件的最新版本,你可以做到這一點很容易。需要記住的是,(對某些號碼ñ[email protected]{N})引用名稱stashw掃樹犯該git stash做時,它保存了stash bagiw提交。因此:

git checkout stash -- path/to/file 

提取w版本的path/to/file,通過索引寫它(因此解決任何衝突合併),完全無視HEAD版本的文件。

(文件的i ndex提交的版本是stash^2,如果有未追蹤/全部文件提交,這些文件是在stash^3,正如我在that other answer指出,雖然w在技術上是一個合併提交,這是不是一個正常的合併,並且全文件提交尤其是非常不尋常的,因爲它只有這些文件,並且沒有索引/工作樹文件。)

0

你可以嘗試

git merge-recursive --theirs stash^ -- @ stash 

看到,如果你喜歡的結果。

相關問題