Git小技巧 - 指令別名及使用Beyond Compare做爲差別比較工具

前言

  本文主要寫給使用命令行來操做Git的用戶,用於提升Git使用的效率。至於使用命令仍是GUI(Tortoise Git或VS的Git插件)就不在此討論了,你們根據本身的的喜愛選擇就好。我我的是比較推薦使用命令行的,由於命令行是原生的客戶端,當熟悉了命令行之後,使用效率並不會比GUI低。並且我是從GUI(Tortoise SVN)轉命令行的,剛開始的時候也是吐槽命令行的「非人性化」,但我走出了溫馨區,真正使用起命令行後,我才發現了本身以前的想法是膚淺的。git

 

指令別名

  指令別名就是給一些經常使用的指令設置一個較短的指令別名來提升Git的使用效率。web

  如git st(git status):app

  

  

  使用指令別名,並不會把原指令覆蓋掉,而是同時生效:工具

  

 

  指令別名輸錯的時候,也會有提示:spa

  

 

  我在這裏會分享我設置的指令別名,但願能幫助提升使用效率。插件

  1. 查看狀態(Show the working tree status) - git status命令行

git st

  

 

  2. 提交(Record changes to the repository) - git commit3d

git ci

  

 

  3. 分支操做(List, create, or delete branches) - git branchrest

git br

   

 

  4. 簽出(Switch branches or restore working tree files) - git checkout日誌

git co

  簽出分支:

  

 

   簽出(還原)工做區文件:

  

 

  簽出(還原)工做區全部文件:

  

 

  5.差別(Show changes between commits, commit and working tree, etc) - git diff

  工做區(working driectory)與暫存區(staging area)的差別:

git df

  單個文件差別:

  

 

  全部文件差別:

  

 

  暫存區(staging area)與本地倉庫(repository)的差別:

git dfs

   單個文件差別:

  

 

  多個文件差別:

  

 

  6.合併(Join two or more development histories together) - git merge

git mr

  

 

  7.日誌(Show commit logs) - git log

   查看最近一條日誌:

git last

  

  

  查看日誌及分支提交信息:

git ls

  

 

  其中綠色的表示local分支,紅色的的表示host分支,從上圖能夠看出,local的master分支、host的master分支、host的dev分支都處於同一個提交,local的dev分支領先於前面提到的3個分支。當版本顯示不全提交時,能夠按回車(回車)繼續加載提交,須要退出是,按字母q。另外,你能夠加「-n」指定查看前n條記錄:

  

 

  查看日誌、分支提交信息、提交人、提交時間:

git lg

   

 

  當版本顯示不全提交時,能夠按回車(回車)繼續加載提交,須要退出是,按字母q。另外,你能夠加「-n」指定查看前n條記錄:

  

 

  8.變基(Reapply commits on top of another base tip) - git rebase

git rb

  

 

  我理解的rebase和merge功能上比較相似,只是rebase操做後,提交基本都會在一條線上,而merge會從一條線合到到另一條線。

  Merge:

  

  

  Rebase:

  

 

  9.揀選(Apply the changes introduced by some existing commits) - git cherry-pick 

git cb

   

  

  從圖中看看出,cherry-pick是把某個提交複製過來做爲一個新的提交,和merge或者rebase的效果不一樣,check pick後能夠進行merge或rebase操做:

  

 

使用Beyond Compare做爲差別比較工具

  命令行自帶的文件差別比較工具功能比較簡單,用來查看或對比文件差別時,可能效果不太好,特別是在解決衝突的時候,可是咱們能夠集成一些比較強大的差別比較工具,好比本文提到的Beyond Compare。那麼,咱們先看一下例子:

 

  自帶的差別比較效果:

  

 

  使用difftool指令調用Beyond Compare的比較效果:

  

  

   

  固然difftool也可使用指令別名:

  

  

  解決合併衝突:

  咱們在dev的a.txt文件中添加「dev」內容,在master分支上添加「master」內容,而後用master分支合併dev。

  

  

  使用mergetool指令調用Beyond Compare合併衝突:

  

  

 

  由上圖能夠看出,左邊是當前分支的版本,右邊的是須要合併的分支的版本,中間的是相同部分的版本,處理衝突的策略大概有如下幾種:

  #1 當前分支版本替換合併分支版本,點擊綠色的箭頭。

  #2 合併分支版本替換當前分支版本,點擊粉色的箭頭。

  #3 同時須要兩個版本的內容,點擊綠色或粉色的箭頭,而後把另外的分支的內容拷貝到下方的文本編輯框。

  #4 只要相同部分的內容,什麼都不幹。

  #5 其餘。

  

  最後,點擊紅色的感嘆號,表示已解決衝突。我這裏選擇#3的策略:

  

   

  關閉Beyond Compare,完成合並操做。

   

 

如何配置

  .gitconfig是配置的主要文件,它通常在C:\Users\{用戶名}目錄中,若是沒有,能夠經過如下兩步建立:

  #1 打開命令行工具

  

  

  #2 執行設置用戶名或者設置郵箱的指令。

  設置用戶名:

git config --global user.name "{your username}"

  

  設置郵箱:

git config --global user.email "{your email}"

  

  打開.gitconfig文件,把如下內容拷貝到文件中,完成指令別名的配置:

  [alias]
  st = status
  ci = commit
  co = checkout
  br = branch
  df = diff
  dft = difftool
  dfs = diff --staged
  dfts = difftool --staged
  mr = merge
  mrt = mergetool
  last = log -1 HEAD
  ls = log --oneline --graph --all --decorate
  lg = log --oneline --graph --all --decorate --pretty=format:"%h%x20%Cgreen%d%x20%Cred%an%x20%C(yellow)%ad%x20%Creset%s" --full-history --date=short
  rb = rebase -i
  cp = cherry-pick

 

  打開.gitconfig文件,把如下內容拷貝到文件中,完成Beyond Compare的配置:

  [diff]
  tool = bc4
  [difftool]
  prompt = true
  [difftool "bc4"]
  cmd = \"D:/Program Files/Beyond Compare 4/bcomp.exe\" "$(cygpath -w $LOCAL)" "$REMOTE"
  [merge]
  tool = bc4
  [mergetool]
  prompt = true
  [mergetool "bc4"]
  #trustExitCode = true
  cmd = \"D:/Program Files/Beyond Compare 4/bcomp.exe\" "$LOCAL" "$REMOTE" "$BASE" "$MERGED"

 

  最終效果如圖所示:

  

 

最後

  但願以上分享的小技巧能夠提升你們的效率,你們也能夠根據本身的須要去設置指令別名,歡迎你們討論及分享指令別名的使用心得。

相關文章
相關標籤/搜索