2017-07-18 22 views
1

在兩個測試承諾,其中第一隻有操作git mv file moved_file,第二隻mv moved_file moved_again_file && git add -A moved_file moved_again_file,都出現在git status之前提交重命名,但在git commit --verbose他們顯示爲新的和刪除的文件。爲什麼git的差異樹顯示始終顯示更名爲添加和刪除

我期待每一個後git diff-tree HEAD承諾顯示一個R(重命名)狀態,但我不斷收到二:一AD

我試圖編寫一個腳本,它將根據文件狀態執行操作,但如果它們始終顯示爲添加/刪除,我無法正確計劃R(或C)的狀態。

Git是版本1.8.3.1,如果這有所作爲。

回答

3

git diff-tree命令是水暖命令,而不是一個命令,使之具有可預測的行爲。

其中之一是,重命名檢測是關閉,除非明確打開。與git diff(這是瓷器命令)相對比,因此根據您的diff.renames的個人配置設置重命名檢測。

要啓用重命名檢測,請添加-M--find-renames(及其可選閾值)。使用-C--find-copies(及其可選閾值)查找副本;如果需要,請添加--find-copies-harder

+0

我知道這是一個管道命令,這就是爲什麼我使用它的輸入。我只是不知道這些選項必須啓用,因爲手冊頁在「RAW OUTPUT FORMAT」部分中沒有提及任何內容,在其描述之外的每個選項都沒有更多。 – Walf

+0

是的,文檔......好吧,不要把它放在太細的地方,糟糕的是:-)這是特別糟糕的,因爲很多差異生成命令在一些棘手的角落案例中具有不同的默認行爲,但在任何地方都沒有提到這一點。 – torek

相關問題