簡體   English   中英

git diff顯示太多文件

[英]Git diff shows too many files

當在質量檢查人員中創建TFS拉取請求時,我驚訝地發現它修改了300個文件,盡管預計不會超過20個。

當我運行git log --oneline --graph QA..MyCode ,它返回8個提交(與TFS中所示的相同):

* 4db6392 Message Hidden (3 files)
* 9fdda73 Message Hidden (4 files)
*   64bbab8 Message Hidden (3 files)
|\
| * 1ca059d Merge master -> MyCode (13 files)
| * 3200fe0 Message Hidden (1 file)
| * e27653c Message Hidden (1 file)
| * cd57d2f Message Hidden (1 file)
* e2afeef Message Hidden (9 files)

括號中的文件數是使用git show --name-only *SHA* ,在許多情況下,同一文件在不同的提交中已更改。

但是,當我運行git diff --name-only QA..MyCode ,它列出了304個文件。

最后一個e2afeef之前的提交為41e68bb,如果我按預期運行git log QA..41e68bb ,則它不會返回任何內容。 但是運行git diff --name-only QA..41e68bb返回大約680個文件。

我很困惑! 誰能解釋正在發生的事情,或為我指出進一步調查的正確方向?

diff<commit>..<commit>的含義與log (重定rebase等)的含義不同。 來自git diff --help

  Comparing branches $ git diff topic master (1) $ git diff topic..master (2) $ git diff topic...master (3) 1. Changes between the tips of the topic and the master branches. 2. Same as above. 3. Changes that occurred on the master branch since when the topic branch was started off it. 

我認為您需要的是示例(3) -> git diff --name-only QA...MyCode
更新
運行git merge-base --all QA MyCode給了2 git merge-base --all QA MyCode縱橫交錯的清晰信號。

--o--p--q--r--s   <-QA
   \/
   /\
--A--B--C--D--E   <-MyCode

最好重寫MyCode的歷史記錄(我想這是一個私有分支,沒有人在上面工作)

--o--p--q--r--s   <-QA
   \/
   /\
--A--B--C--D--E   <-MyCode-backup
   \
    \b'-c'-d'-e'  <-MyCode

圖鏈接oB將丟失,但鏈BE的內容不會丟失。

git checkout MyCode
git branch MyCodeBackup  #this branch will keep original B-E reachable
gir rebase --no-ff A  #b'-e' recreation
git diff MyCode MyCodeBackup #for test - should give nothing - content equal
git diff QA...MyCode #supposedly of sane size

您總是可以git reset --hard MyCodeBackup返回原始狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM