2010-01-31 62 views
8

如果我在Git的工作目錄中對單個文件有一堆未提交的更改,那麼在這些更改中有選擇地選擇和選擇最簡單的方法是什麼?Git對單個文件的「櫻桃挑選」未修改更改最簡單的方法是什麼?

我目前的做法是「git diff」文件,然後手動檢查diff文件旁邊的差異。如果我想恢復舊代碼的位,我可以從diff複製並粘貼到文件中。

在某些情況下,如果用戶可以在單個文件中查看和編輯更改,這樣做會容易得多。例如,是否有Git命令可用於將工作文件轉換爲類似衝突解決方式的格式 - 即在未提交的更改周圍使用「< < <」符號進行轉換?通過這種方式,用戶可以選擇更改,而無需從一個文件剪切並粘貼到另一個文件。

我不知道該如何實現這一點,因爲它不是一種三向(合併)的情況。相反,這是一種雙向的情況,對一個文件進行一組更改(因此沒有衝突)。謝謝。

+0

您可以選擇厚片選擇性地與 「添加」, 「階段」(同ADD), 「結賬」, 「重置」 和 「藏匿」。每個都採用-p選項。 (截至1.6.6) – 2010-01-31 15:47:47

+0

謝謝,威廉。是的,在我的特殊情況下,使用-g和git-checkout比使用git-add更方便。 – cjerdonek 2010-01-31 19:33:48

回答

11

您可以通過git add --patch來選擇在提交中添加哪些區塊。如果您想添加該變更集,這將會要求您爲文件更改中的每個大塊。如果一個特定的胖子對你來說太大了,你可以進一步分割它。還有另一個選項git-add--interactive,它可以讓你使用多個文件。

有關詳細信息,請參閱git-add man pagethis post從谷歌搜索。

+0

謝謝,Alok和大家。我已經嘗試了這一點,它比我之前做的更容易。 但是,它似乎不如解決衝突的過程方便。看起來像這樣添加應該至少與合併一樣簡單。 我仍然想知道是否有一種方法可以「欺騙」Git創建衝突情況,可以使用「<<<<」行代替diff格式:+/- /。 – cjerdonek 2010-01-31 19:29:31

+0

我同意。如果有一種方法可以使用許多現有合併工具中的任何一種來選擇區塊,那麼對於當前的命令行界面,您將不得不響應文本提示,這會是一個很大的改進。 – davr 2010-02-01 23:44:10

1

除了git add --patch之外還有git add -i:你可以把它看作是git add --patch的一層。

教程上git add --patchgit add -i

+0

Upvote爲教程鏈接。謝謝! – 2013-07-03 17:52:00

相關問題