2017-10-19 181 views
0

我有一個項目作爲輸出幾個表。我需要優化它在每個步驟上驗證輸出表是否相等,或者至少可以說明不同之處。Git分支結果比較

所以我創建了兩個分支,這個想法是迭代地修改一個分支中的代碼,然後運行兩個並在最後比較結果。將第一個分支的最後一個提交的修改應用到第二個分支,再次修改第一個分支,依此類推......

我怎樣才能將一個分支的最後修改重新應用到另一個分支,而沒有合併之前的提交?

+0

爲什麼要使用分支?每次提交併'git diff HEAD^... HEAD'。 – Ryan

+0

他們將結果和日誌存儲在不同的目錄中以便於比較 – Gabriel

回答

0

最好的解決方案是簡單地保持提交線性首先。如果你想要使用兩個分支來執行這個提交行,這是有道理的;但是通過提交兩行代碼就可以創建不必要的工作。

從評論,我推斷你有一些基線配置更改,影響輸出目錄等。在代碼中管理這些配置,以便您需要堅持代碼更改以重定向輸出是一個設計錯誤,您遇到的問題是一個症狀。通過解決這個問題,你會得到更大的回報。然後,您可以簡單地在同一提交中啓動兩個分支,進行更改並將它們提交給測試分支,運行測試;如果通過,則將該更改合併(使用快進)到主分支中,否則,將測試分支回滾。

但是,如果您決定花一次性努力(而且仍然有這樣的設計缺陷等待下一次您想要做的事情時再次啓程),那麼您可以改爲做你正在做的事情,然後從測試分支挑選HEAD提交到主分支。

https://git-scm.com/docs/git-cherry-pick

注意,至少9次了10年,如果我提到的櫻桃採摘它稱之爲最過分推薦的命令飯桶。最接近的相關操作(我更喜歡它們適用的時候)是rebase和squash合併;但在這種情況下,沒有人按照你想要的方式工作。對我而言,這是進一步的證據,表明設計不適合開始。

+0

感謝您的回答,您能否提出設計解決方案或需要更多信息?我 – Gabriel

+0

我可能沒有足夠的信息進入任何真實的細節;但是像輸出目錄這樣的東西可能會被放在一個配置文件中,該文件可以作爲構建過程的一部分進行選擇/填充,或者在運行時提供。從那裏,許多變化是可能的。您可以在源代碼控制中保持配置的「測試」和「主要」版本。或者你可以在源代碼控制中只保留一個模板,並在git之外提供特定的值。你甚至可以做出相關的路徑,並檢查主要和測試分開工作樹。取決於你的項目 –