1. 程式人生 > >git 使用beyond compare來diff與merge

git 使用beyond compare來diff與merge

一、git基礎知識

1. 工作目錄

即平時使用ls命令時看到的檔案與目錄

2. 暫存區

使用git add filename,可以把有修改的檔案新增到暫存區

3. 本地庫

使用git commit可以把檔案從暫存區提交到本地庫中,只有新增到庫中的修改,才有歷史記錄,可以追溯與還原

4. 遠端庫

使用git push可以把檔案從本地庫推送到遠端庫中,

5. diff

git中用來對比差異的有兩條命令,分別是:git diff與git difftool

5.1 git diff

作用:呼叫預設的工具來完成對比
說明:如果指定檔名,則只比較指定的檔案,如果不指定檔名,則會比較所有有改動的檔案,後續的命令也都是如此。
引數:後面不加其餘引數時,是比較工作目錄與本地庫中的檔案差異,後面加引數(–cached)時,是比較暫存區與本地庫中檔案差異,如:git diff –cached

5.2 git difftool

呼叫第三方圖形工具來對比,可以自配置

在本書中,我們使用 git diff 來分析檔案差異。 但是,如果你喜歡通過圖形化的方式或其它格式輸出方式的話,可以使用 git difftool 命令來用 Araxis ,emerge 或 vimdiff 等軟體輸出 diff 分析結果。 使用 git difftool –tool-help 命令來看你的系統支援哪些 Git Diff 外掛。

6. merge

作用:合併分支
操作:如果要將dev分支合併入master分支,則操作如下:
1. 先切換到master分支:git checkout master;
2. 再合併:git merge dev;
3. 如果沒有衝突,則合併成功;
4. 如果有衝突,則解決衝突;

# 執行git status命令,可以檢視有衝突的檔案,【Unmerged paths】段下列出的檔案都是有衝突的
[dengqingyong@DengMacBook helloworld-b]$ git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")

Unmerged paths:
  (use "git add <file>..." to mark resolution)

    both modified:   helloworld-b1/src/main/java/helloworld_b1.java

no
changes added to commit (use "git add" and/or "git commit -a")
  1. 解決衝突:git mergetool,此命令會依次開啟有衝突的檔案,讓你手工解決衝突;
//衝突檔案中會出現如下段,其中【++<<<<<<< HEAD】與【++=======】之間的內容是當前(master)分支的,【++=======】與【++>>>>>>> 】之間的內容是將要合入(dev)分支的,處理衝突時,你可以二選一,刪除一個保留一個,也可以綜合兩者
public class helloworld_b1 {
      public void sayNew(){
++<<<<<<< HEAD
 +        System.out.println("version 2.1: helloworld_b1");
 +      System.out.println("new line: merge test xxxooo");
++=======
+         System.out.println("version 2.0: helloworld_b1 DEVwvf分支 whnt修改mwp修改內容 ");
++>>>>>>> 1f128ee0d56602d61839774f369277323e2a36ca
      }
  }

二、git整合beyond compare

1. mac os 配置

#!/bin/sh
git config --global diff.tool bc4
git config --global difftool.prompt false
git config --global difftool.bc4.cmd '"/usr/local/bin/bcomp" "$LOCAL" "$REMOTE"'

git config --global merge.tool bc4
git config --global mergetool.prompt false
git config --global mergetool.bc4.cmd '"/usr/local/bin/bcomp" "$LOCAL" "$REMOTE" "$BASE" "$MERGED"'
git config --global mergetool.bc4.trustexitcode true

將以上內容保成為setgitconfig檔案,賦可執行許可權:chmod +x setgitconfig

執行前執行:git config –list 檢視可用配置
執行後再執行一次,對比下看有沒有生效,或者直接在一git專案中執行git difftool

2. windows 配置

開啟【開始選單——所有程式——git——Git Bash】,在其中執行以下命令:

git config --global diff.tool bc4
git config --global difftool.prompt false
git config --global difftool.bc4.cmd '"C:\Program Files\Beyond Compare 4\BCompare.exe" "$LOCAL" "$REMOTE"'

git config --global merge.tool bc4
git config --global mergetool.prompt false
git config --global mergetool.bc4.cmd '"C:\Program Files\Beyond Compare 4\BCompare.exe" "$LOCAL" "$REMOTE" "$BASE" "$MERGED"'
git config --global mergetool.bc4.trustexitcode true