2011-10-08 90 views
8

我的工作流程:git merge(w squash)的任何gui?

  • 從主分支在我的分支
  • 工作,經常犯(100+)
  • 當工作在我的分支完成,合併高手進我的分支,解決所有衝突。合併回掌握

代碼審查之前

  • 代碼審查的時候,我需要顯示差異兩個頭和壁球之間/整理我提交(約5次提交)。這項任務的最佳GUI(跨平臺?)是什麼?

  • +1

    我懷疑您不需要顯示兩個分支之間的差異,因爲如果在合併和審閱之間對主數據進行更多的提交,您希望將它們排除在外。可能更好的方法是隻顯示分支上引入的更改,不包括主控上引入的任何更改。然後,您可以隨時合併,而不必在審查前立即執行此操作。 –

    回答

    9

    它取決於你的操作系統(git Tower,例如Mac OS上,它是一個特別精細的GUI,但不提供任何交互式底座的特殊功能)。該功能的On Windows, there doesn't seem to be any GUI

    最簡單的方法仍然是一個不涉及界面,在這裏你可以因爲你犯消息!南瓜開始(當這些中間提交大約相同的任務),致力於運行

    git rebase --interactive --autosquash 
    


    請參閱「 Trimming GIT Checkins/Squashing GIT History「。

    +0

    這個命令是否永久壓縮項目歷史中的提交,或者只是爲了審查而以這種方式顯示它們? –

    +1

    @JonathanHartley它會擠壓提交,但是一旦你不需要這個壓扁的提交,你就可以重置。 – VonC

    0

    在Linux上,我最喜歡git的兩個圖形用戶界面是gitgmeld。爲了在您的案例中獲得正確的代碼審查差異,請啓動gitg並查找您合併的主文件中的最新提交(重要的是,您不希望與自上次合併後主文件已升級的當前主文件頭差異)。複製此SHA1,並把它變成你的git difftool

    git difftool -t meld <SHA1> 
    

    要設定,讓你不必指定每次合併爲difftool,設置它的配置:

    git config --global diff.tool meld 
    
    0

    Eclipse可以做比較部分。您可以右鍵點擊該項目,然後選擇

    Team->Advanced->Synchronize With...->(branch you want to compare against) 
    

    它顯示了兩個分支之間的差異。然而,既不是git也沒有任何我知道的git GUI支持壓縮提交,恕我直言,這太糟糕了。

    所以我最終會做一個

    git rebase --interactive HEAD~3 
    

    (萬一我有3個提交我想壁球)。

    2

    可以使用'git difftool'命令在GUI工具中顯示任何'git diff'命令的輸出。

    首先, '差異' 命令,我們希望:顯示由每一個引入的累積diff文件提交於 'mybranch',因爲它從 '主' 發散使用:

    git diff master...mybranch 
    

    git diff master...HEAD 
    

    請注意,這不包括在此期間發生在master上的任何提交,如果您正在查看mybranch,這可能是您想要的。

    如果mybranch是你的現任掌門人,那麼這可以簡寫:

    git diff master... 
    

    Git會從差異命令的輸出饋入約8個已知的GUI工具列表中的一個,用「混帳difftool」。我在OSX上使用kdiff3,過去我也在Linux上高興地使用它。我更喜歡kdiff3,因爲它可以讓我在需要時進行3路合併,並且可以讓我手動編輯合併輸出,並選擇使用hunks。

    首先安裝kdiff3,然後在PATH上添加一個符號鏈接。對我來說,那是:

    ln -s /Applications/kdiff3.app/Contents/MacOS/kdiff3 /usr/local/bin/kdiff3 
    

    然後告訴你要使用kdiff3作爲GUI的比較工具的git:

    git config --global merge.tool kdiff3 
    

    然後在其中查看您進行比較:

    git difftool master...