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")
- 解決衝突: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