簡體   English   中英

自動合並git中的單行沖突

[英]Auto-merge single line conflicts in git

我們在git repo中有大量生成的PHP文件。 當有人在應用程序內使用編輯器創建某些內容時,將生成這些文件。 我們需要將內容保持在可部署的形式,因此為什么要將其檢入git。

令人討厭的是,生成的文件在頂部帶有注釋,例如:

//創建:2016-07-21 09:24:25

在很多情況下,此時間戳是對文件的唯一更改。 但是,當本地和遠程都更改時,git當然將其視為沖突。 這導致大量手動合並沖突以在拉動時解決。

有沒有一種方法可以指示git自動將此行合並到“我們的”,而不引起沖突?

我已經搜索並找到了可以自動合並整個文件(“我們的”或“他們的”)以及“糊塗”的解決方案,但是我認為這些解決方案都不能真正滿足我們的需求。 我們希望//創建的注釋被簽入,但是我們只希望git自動合並該特定行的沖突。

有什么想法嗎?

有沒有一種方法可以指示git自動將此行合並到“我們的”,而不引起沖突?

不直接,不。 您可以指示git merge使用“合並工具”(通常是用於合並解析的一些GUI),並實現滿足您需要的自定義工具; 但是我寧願創建一個小腳本,該腳本可以執行以下操作(根據您所使用的環境(Windows / Unix / bash / ruby​​等,應該不那么難):

  • 使用適當的選項運行git merge
  • 如果腳本未檢測到沖突(解析git merge的輸出和/或退出代碼),那么您就完成了。
  • 否則,加載有沖突的文件(您可以從git status獲取它們,這比git merge的輸出要容易解析)
  • 使用正則表達式可以很容易地檢測並自動解決您感興趣的沖突。
  • 保存文件。
  • 檢查是否包含其他沖突標記; 如果沒有, git add
  • 當您處理完所有文件,並且所有文件都沒有沖突標記時,請執行git commit

此后,要么合並完成,要么必須解決所有時間戳后再進行通常的沖突解決。

暫無
暫無

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

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