2012-08-06 85 views
1

在這裏我做了什麼:從主git的日誌文件名--follow沒有顯示提交更改的文件

  • 創建開發分支;
  • 修改了幾個文件並提交了它們;
  • 合併開發分支掌握--no-commit參數;在開發分支中修改的幾個文件上運行git reset --hard因爲master分支只包含來自開發分支的幾個對象 - 即我已經部分地合併了開發變更;
  • 我已經承諾在主人的變化;
  • 經過一段時間,主分支由其他開發人員更新,並更新我的開發分支我合併主分支到它。

我已經準備好了,我的開發對象我沒有承諾要掌握我以前的合併將被主文件覆蓋。但在git log --follow dev-modified-file.txt的輸出中,我無法看到覆蓋我的開發變更的提交。

在我的開發分支上運行git log --follow dev-modified-file.txt我可以看到需要進行開發修改的提交。但無法看到提交恢復該更改(實際上不存在此類提交),但我的工作樹包含dev-modified-file.txt文件的主版本,儘管存在提交添加開發代碼的提交,但沒有提交刪除該代碼。

爲什麼?

那麼master分支的代碼是如何潛入我的開發分支而不留下任何痕跡?

P.S.如果我的描述不清楚,請在評論中提問,我會很樂意解釋和糾正這篇文章。

編輯:將我的主人合併到開發中後,我看不到master和development分支之間的區別(我省略的更改都沒有了!),我沒有看到commit在開發分支中負責!

我認爲這可能與合併策略有關......但是如何?你看,我的日誌在開發分支是這樣的:

  • 我已經添加了對文件的更改 - 工作文件夾中的文件包含更改。
  • 我已經將主分支合併到了開發中 - 儘管沒有任何責任,但我的編輯文件在主分支中變成了等量的許多提交到開發分支!

改變,沒有留下的痕跡消失在合併後我加入更改該文件!

+0

當您看到沒有「no提交刪除該代碼「,或在開發分支上?即是否在'master'上沒有看到開發分支的合併更改,或者在開發分支上出現'master'的版本意外? – Christopher 2012-08-06 15:27:59

+0

在開發分支上。開發分支是引入所有變更的地方。在合併到主人期間,我只部分應用了這些更改。而這些省略的變化僅在開發分支中。我沒有看到他們在主人身上 - 我沒有故意犯下這些事情。但是,在將我的主人合併到開發中後,我看不到master和development分支之間的區別(我省略的更改已經消失了!),但我沒有看到提交對此負責! – shytikov 2012-08-06 15:34:28

+1

我敢打賭,'我的主人融入發展'承諾。試試'git diff 〜1 ',看看它做了什麼改變。 – Christopher 2012-08-06 15:47:55

回答

0

由於git log <filename>在其默認模式下執行的歷史簡化,您沒有看到您正在查找的更改的可能性相當大。這種簡化使得git log <filename>對於查找刪除內容的提交不是很有用。

嘗試使用git log --follow --simplify-merges dev-modified-file.txt代替;這會改變歷史簡化算法,使其在簡化您可能關心的更改方面變得不那麼積極。如果歷史記錄足夠短,並且已安裝gitk,則可能只需瀏覽歷史記錄即可找到要查找的內容:gitk --simplify-merges dev-modified-file.txt