邪惡融入git?
回答
因爲它將代碼放在沒有人問過的代碼中。因爲如果你有這樣的代碼:
$foo = bar;
$baz = qxx;
而且這種變化:
$foo = bar;
$foo++;
$baz = qxx;
得到了合併,這一變化:
$foo = bar;
$foo--;
$baz = qxx;
的方式,不知怎的,生產:
$foo = bar;
$foo++;
$foo--;
--$baz;
$baz = qxx;
顯然,這是邪惡的。
我猜想它是在man gitglossary
足夠的關注,因爲您的合併算法越多涉及,他們就越有可能產生這樣的事情。
產生這個,只需使用--no-commit選項調用git-merge,添加一些更改,檢入並提交。預生成的合併提交消息將被自動使用。 – Cascabel
@Jefromi通過這個定義,任何需要手動解決的衝突合併是一個邪惡的合併? @chaos說什麼有很強的語義差異;您可能可以得到他的結果,而不會在合併過程中發生任何衝突。這真是邪惡。 – krosenvold
何處 - $ baz;來自。我不認爲GIT隨機產生代碼。對我來說,這是非常邪惡的增量和減量合併,沒有任何人澄清哪一個是正確的代碼。結果是兩個更改破壞了代碼。來自任何地方的線將不得不由某人手動「糾正」合併。那時,這不是GIT的錯!?!?!? –
我認爲它可能被命名爲'邪惡合併',因爲它是解決註釋文件(生成行式歷史註釋)時解決「git blame」的難題。當你在主分支上開發的功能「A」,並在側部的分支功能「B」,以及這些功能衝突語義(非文本)的方式migh需要
邪惡合併。一個例子是對全局變量使用相同的名稱,具有不同的含義 - 這需要將變量重命名爲其中一個功能。
對於邪惡合併「git show --cc
」有非空的緊湊組合diff(但我不確定它是否是等價關係;含義可能只在一個方向上,即「邪惡合併」,則非空「」 )。
直觀上,@ chaos的迴應感覺更爲正確,但我知道你對這些事情很好;)感覺就像你在描述一個很好的舊合併衝突,其中有兩個人解決了同一問題的重疊部分 - 或者甚至可能是同樣的問題。合併完成後,爲什麼要重新創建它?把這個「相當規則」的事件稱爲「邪惡」不是太過詩意嗎? – krosenvold
解決衝突*通常包括選擇其中一個版本,有時從其他版本的行中選擇一個版本行。邪惡的合併有不在其父母中的行,所以即使通過最複雜的(通用)合併策略也不能自動重新創建。 –
*(刪除關於「邪惡」合併和自動化過程的行)* –
在Linus Torvalds的自己的話(從git mailing list拍攝):
一個「邪惡合併」的東西,讓從沒有 身邊走過,並沒有真正解決衝突
變化
值得一提的是,一個來自「邪惡合併」的「邪惡變化」可能在無聲中丟失,同時重新綁定包含與其他提交不衝突的「邪惡變化」的「邪惡合併」。 使用--preserve-merges
在such a case中沒有幫助。
- 1. 適合git log -p的選項,如果擔心邪惡融合
- 2. AutoCompleteBox是邪惡的
- 3. 這是eval邪惡嗎?
- 4. Openfire安全性(Firebug邪惡)
- 5. 爲什麼Class.newInstance()「邪惡」?
- 6. Rails邪惡的寶石
- 7. 寶石邪惡的路線
- 8. 導軌; wicked_pdf是邪惡慢
- 9. 邪惡模式下的Smex
- 10. 'TryAction()'方法是否邪惡?
- 11. Emacs的邪惡領袖和邪惡的書呆子,評議衝突
- 12. GIT有沒有邪惡的雙胞胎問題?
- 13. 爲什麼JFormattedTextField是邪惡的?
- 14. 邪惡模式最佳實踐?
- 15. 邪惡的pdf css邊界框?
- 16. '邪惡'平等減慢代碼嗎?
- 17. Django包括 - 他們是邪惡的?
- 18. 邪惡模式Emacs中的鍵映射
- 19. PHP模塊過濾邪惡HTML
- 20. 嵌套模型邪惡,呈現頁面
- 21. Flurry User ID是否是邪惡的?
- 22. 結合ESC鍵爲邪惡的模式
- 23. Linq,OrderByDescending,首先,和邪惡的DefaultIfEmpty
- 24. 邪惡DICOM列出所有元素
- 25. RJS是邪惡的,爲什麼?
- 26. 完成,在點邪惡模式錯誤
- 27. UCM ClearCase中的邪惡雙胞胎
- 28. 公共領域邪惡如果只讀?
- 29. 關於eval的邪惡:如何清理
- 30. Emacs ElDoc干擾邪惡搜索
我來自[此頁](http:// stackoverflow。com/questions/2910044/does-git-have-evil-twin-issues/2910388#2910388),我發現它非常有幫助意識到,它不是'git的邪惡合併':邪惡的合併是不是一些自然的有時發生的現象**;相反,這是人們有時會在git中做的事情(就像人們有時會導致其他事故,如推動公共回購的變化一樣)。這裏的外賣是:不要這樣做! (_or至少保留合併語義__) – sehe
sehe是正確的,這些是Linus Torvalds本人的話: 「邪惡的合併」是使得既不是來自 方,也不是實際上解決衝突的變化 –