2016-09-14 87 views
0

我想對我之前編寫的一段代碼做一些改進。所以我創建了一個新的git分支並改變了我想改變的東西。現在變化已經完成,我發現我的新版本不一定更好,但首先是不同的。因此,我認爲最好不要簡單地合併分支並通過這樣做來更改原始文件。
相反,我想創建一個包含新功能的文件的副本,而原始文件保持不變。
(我的工作是一種研究工作,所以我想稍後比較兩個版本。)git:如何在合併分支之前將更改移至新文件?

這樣做的一個顯而易見的方法當然是簽出master分支,複製整個內容將原始文件複製到剪貼板,再次檢查功能分支並在合併之前將所有內容粘貼到新文件中。

但我總是喜歡學習新的東西,我的方法看起來有點neandertaler十歲上下給我,如果你知道我的意思...
所以我的問題是:有沒有辦法讓git的做到這一點的我(當做合併,也許)。

謝謝! :)

+1

Git的許多要點是能夠無縫地回到任何版本,而不必保留同一文件的多個版本。只要你有良好的提交信息,你可以稍後檢查舊版本,並隨時隨地運行它們。這需要一些習慣,但我認爲值得讓它保持清潔(因此易於理解)。 – vroomfondel

回答

1

您可以將feature單獨留下,然後返回master。在確定更新沒有問題之前,並不需要合併featuremaster。所以現在你有兩個不同的分支跟蹤原始文件和更新。假設文件路徑爲foo/bar.txt。現在你在master。如果你想在同一個文件夾中有feature版本,可能只是爲了比較。你可以簡單地運行git cat-file -p feature:foo/bar.txt > feature_bar.txt。同樣的方法,如果您現在在feature並且想要獲得master版本,請運行git cat-file -p master:foo/bar.txt > master_bar.txt

Git的較新版本支持worktree功能,我們可以檢查不同修訂版本到不同的工作樹中。如果您現在使用的是master,那麼您可以運行git worktree add <another_path> feature將結帳feature的文件轉換爲<another_path>。您可以在當前工作樹中操作master,並在<another_path>中操作feature,因此您不必來回切換分支。相反,打開兩個shell窗口,一個用於master,另一個用於feature,因此您不必前後切換文件夾。

+0

'git cat-file'非常適合我!謝謝! – Turysaz

+0

@Turysaz p.s. ':foo/bar.txt'是引用特定版本的更通用的方式。 – ElpieKay

0
cp file file.new 
git checkout file 

這應該允許您將文件複製到新文件並保留原始文件。

相關問題