2008-12-23 27 views
2

我在我的項目中使用的唯一分佈式版本控制系統是集市。除了如何結賬外,我對git和mercurial的瞭解不多。我喜歡bazaar的原因是automv插件。它檢測我何時手動移除/刪除文件(來自命令行/ ide等),當我匆忙時我傾向於做很多事情。但集市很慢,我正在考慮轉向混帳。 git有類似於這個功能的東西嗎?git是否具有相當於bazaar automv插件?

+1

我相信bzr的automv插件很受git算法自動檢測重命名文件的影響。 :-) – bialix 2009-04-24 19:40:18

回答

8

Git在移動/重命名情況下的工作方式完全不同。 Git只跟蹤內容,因此它知道文件X在一次提交時具有SHA1散列abc123...,並且在下一次提交時文件Y碰巧具有相同的散列abc123...。因此,Git工具在查看歷史記錄或其他內容時得出結論:文件X必須已在此時重命名爲文件名Y.

通過這種方式,Git可以重建從一次提交到下一次提交所採取的操作,而無需在提交時獲得這些知識。它可以事件檢測您重命名文件更改文件內的某些情況(當然,它不通過比較SHA1哈希值,而是通過在提交中更改的文件之間進行文本比較來完成此操作)。

+0

假設有些微小的變化(例如C#文件中的命名空間聲明),那麼它也足夠聰明地猜測出什麼是動作?會檢查自己,但不能在這檯筆記本電腦上... – 2008-12-23 07:49:37

2

你可能會尋找git add --all

更新文件的git已經知道了(同--update並添加所有未跟蹤文件不受.gitignore機制忽略。

(重點煤礦。)

1

只是僅供您參考集市知道移動。 SVN,Git,hg只知道版本和刪除拷貝。我認爲這是一個different。但正如前面提到的那樣,git很好地處理了automv(據我所知),只有在移動後非常迅速地提交纔是非常聰明的。我聽說egit在你重命名一個類後會自動提交。

相關問題