2012-03-20 52 views
1

有時候我並沒有意識到我在git中的master分支上,並沒有意識到這一點,並且當我想將它提交給另一個分支dev時,我最終提交了一些要掌握的東西。在git中的分支之間遷移單個文件的簡單方法?

我在這種情況下所做的只是將文件複製到其他地方,結賬dev,將文件複製回來並提交。

我確定有更好的方法做到這一點不在嗎?

dev分支剛剛將合併到主反正。我可以只在開發分支git merge master?有一些分支特定的更改似乎並沒有合併,當我在主頁上執行git merge dev時。如果我將master合併到dev中,這些更改會混亂嗎?

+0

我也有失去跟蹤工作分支。一個建議,設置git的bash_completion和$(__ git_ps1)到你的bash提示符。 (我假設你在Unix平臺上使用bash,msysgit已經在windows上爲你做了這個)。它會將當前的結帳分支添加到提示中。有關詳細信息,請參見[GIT自動完成和增強bash提示](http://en.newinstance.it/2010/05/23/git-autocompletion-and-enhanced-bash-prompt/)。 – 2012-03-20 21:09:03

回答

2

git cherry-pick是你在找什麼。

說,你承諾master修訂A,並希望有Adev代替:

git checkout dev 
git cherry-pick A 

完成。現在,Adev

我們仍然必須擺脫master中的A。如果A是最後一次提交你這樣做,這一次會有所幫助:

git checkout master 
git reset --hard HEAD~ 

如果有一些因爲A,你既可以git rebase A~和刪除A然後或–  ,如果你推到別的地方  –只是更多的提交git revert A

+0

但這個假設他已經承諾掌握。他在問什麼? – 2012-03-20 20:56:57

+0

@ why-el:這就是他寫的:「**我最終提交了一些東西來掌握** [**]」。聽起來像他已經承諾要掌握,不是嗎? – eckes 2012-03-20 22:12:23

+0

是的,但他不想,或者至少這是他的意思,當他說:「當我想把它交給另一個分支」。 – 2012-03-20 23:45:34

0

將master合併到dev是一個非常常見的工作流程。但如果你不想合併,但仍然想要做複製的事情,你只需要簽出開發分支,你可以用git來簽出文件:

git checkout master -- path/to/file 
相關問題