2009-11-15 53 views
20

我讀過各種常見問題git沒有明確跟蹤重命名/移動,寧願尋找相同的(或在某些情況下類似?)文件。這很好,但它能應付這種情況:朋友的遠程存儲庫有一個新功能(i18n),涉及debian/po/*.po的一些新文件。我有我自己的這個項目的分支,並且想合併這個特性,但是把這些文件放在po/*.po(我可以做兩個提交或者其他必要的)。我期望遠程回購將繼續接收該功能的更新,並且我想合併/櫻桃選擇這些提交併將它們應用於我的新位置中的文件。 git可以做到這一點,也許有一些「這些文件現在移到這裏」的映射?還是比它的價值更痛苦,我應該接受我回購中有點奇怪的debian路徑嗎?移動文件/目錄但仍然可以輕鬆合併更改?

回答

45

使用git mv,一切都將AOK。

爲什麼不試試而不是詢問?您可以隨時在git中輕鬆重置。 :)

+21

嗯,我只是想看看有沒有人指出任何可能會突然出現的問題,如果有些奇怪的東西我沒有嘗試在遠程回購中發生,並且我在移動時沒有正確的魔法雞或者合併。我只用了幾周的時間,並且仍然有較小的VCS留下(不)健康的偏執狂。 :-) – 2009-11-16 00:25:39

+0

如果文件wildy分歧,那麼它將無法跟蹤更改,但它會遇到這個問題,無論您是否重命名它) – Pod 2009-11-16 00:27:07

+0

謝謝,它確實到目前爲止都看起來確定。 – 2009-11-16 01:14:20

2

或者,使用mv重命名文件,並調用git add --all來暫存所有刪除操作並添加未跟蹤文件(新文件名)。如果沒有--all,則必須分別清除刪除操作和新文件名。不要使用git add --update,因爲這樣會刪除所有的操作,但不會添加新的文件名。

請注意,您可能希望在本地分支中執行這些操作,以便您不會無意中將它們push分配給您的朋友的主分支,或者您的朋友不會將其pull分配到他的主分支中。

3

的Git缺乏一種機制,表明你希望做有兩個項目/分支機構等之間的差異時要路徑重命名和更新

有各種可用的文件重命名選項(如-M和 - 耐心),但可能會很慢。

如前所述,路徑重命名不會影響存儲庫本身,因爲它只是您的內容(blob)和結構(樹節點)的快照。如果您所做的只是添加了一個額外的頂級目錄,那麼下面的所有樹和斑點都將保持不變,並且需要零個額外的存儲空間。所有你需要的是你的提交的一個樹節點和新的tld的一個樹節點。死容易。 Git處理該部分沒有問題。

它只是當你想做一個比較(和任何補丁),它很重要。如果有一個-P選項可以很好地說明您希望進行一些路徑重命名,並且diff可以輕鬆應對。這不是很好,看到200文件刪除和200新文件;-)

找出如何添加-P選項是我的'做'列表項目中的另一個(我希望我得到一些時間)。

相關問題