首頁 > 軟體

Git使用基礎教學

2020-06-16 17:53:08

下面所寫的其實是寫給公司內部的Git使用基礎教學,我在這裡也記錄下。

修改Git設定

windows作業系統換行設定

  1. git config --global core.autocrlf input

使用者名稱、郵箱設定

  1. git config user.name yourname --local
  2. git config user.email yourname@tudou.com --local

克隆v3程式碼庫

  1. git clone git@gitlab.intra.tudou.com:static/v3.git

檢視分支

列出本地所有的分支

  1. git branch

列出遠端所有的分支

  1. git branch -r

建立分支

基於本地分支建立

  1. git branch [BRANCH_NAME]
  2. git push origin [BRANCH_NAME]

基於遠端分支建立

  1. git branch [BRANCH_NAME] origin/master

本地分支與遠端分支系結

繫結後操作就能?省略origin [branch],使用起來更加方便高效,當然如果有多個遠端需要操作就不能省略了

  1. git push -u origin [branch]

切換分支

切換到本地分支,如果本地分支不存在自動尋找遠端分支

  1. git checkout [BRANCH_NAME]

更新分支

更新master

  1. git pull --rebase origin master

解決rebase衝突。

  1. git status

# 根據提示開啟對應檔案,搜尋"<<<<<<<"字元,解決衝突後執行

  1. git add -u
  2. git rebase --continue

# 停止pull操作,回pull rebase之前的狀態

  1. git rebase --abort

提交程式碼

提交到本地版本庫

  1. git commit -m "commit message"

提交到遠端master

  1. git push origin master

合併分支

切換到master。

  1. git checkout master

合併分支。

  1. git merge --no-ff [BRANCH_NAME]

解決src目錄下的衝突。

  1. https://help.github.com/articles/resolving-a-merge-conflict-from-the-command-line

使用外部工具解決衝突

解決本次合併的所有衝突

  1. git mergetool

解決特定檔案的衝突

git mergetool src/js/g.js
重新構建build、dist目錄下的所有衝突的檔案。

  1. ytpm [PATH]

提交程式碼。

  1. git add .
  2. git commit -m "commit message"

恢復程式碼

放棄本地修改(廢棄本地所有未提交的檔案,和遠端保持一致)

  1. git reset --hard origin/master

恢復一個提交

  1. git revert [COMMIT_ID]

恢復merge

  1. git revert -m 1[MERGE_COMMIT_ID]

恢復到指定版本

  1. git reset --hard [COMMIT_ID]

刪除分支

刪除本地分支

  1. git branch -d [BRANCH_NAME]

刪除遠端分支

  1. git push origin --delete[BRANCH_NAME]

檢視變更記錄

檢視變更歷史

  1. git log --decorate --numstat [PATH]

檢視某個提交記錄

  1. git show --name-only [COMMIT_ID]

對比檔案

git預設方式

對比工作區版本和暫存區版本

  1. git diff --[PATH]

對比暫存區版本和版本庫版本

  1. git diff --cached --[PATH]

對比工作區版本和版本庫版本(HEAD)

  1. git diff HEAD --[PATH]

對比兩個提交過的檔案

  1. git diff [COMMIT_ID_1][COMMIT_ID_2]--[PATH]

對比兩個分支的檔案

  1. git diff develop master -- src/js/g.js
  2. git diff develop:src/js/g.js master:src/js/g.js

檢視其它分支上的檔案

  1. git show master:src/js/g.js

外部比較工具完成比較

比較本次合併的所有修改(只與提交前的記錄比較)

  1. git difftool

比較指定檔案的歷史版本

  1. git difftool [GitHash] HEAD -- src/js/g.js

不小心在develop上進行開發時解決方案

未提交時

  1. git stash
  2. git checkout [BRANCH_NAME]
  3. git stash pop

已提交時

  1. git log -1# 記住COMMIT ID
  2. git reset --hard origin/develop
  3. git checkout [BRANCH_NAME]
  4. git cherry-pick [COMMIT_ID]

不小心將develop或基於develop建立的分支合併到master上時解決方案

  1. A--M---B <---develop
  2. --C--G---J---P---Q <---master

如上例,需要先確認好J這次錯誤提交點以及其之前、之後提交點的hash值,並確保當前HEAD處於Q上,接著執行:

  1. git rebase -i -p --onto P G

執行完後需要手工解決之後每次提交出現的衝突,手工比較解決掉衝突後執行:

git add . // 新增此次衝突修改

  1. git rebase --continue

注意,上面的步驟可能會進行很多次,每次都是上面的方法;手工比較的方法可以參看[外部比較工具][1]的使用方式。

其它
Beyond Compare比較工具設定
在~/.gitconfig檔案中加入以下設定,使用的比較工具為Beyond Compare,大家可以自行下載;如果是win使用者對應的路徑需要相應的修改。

另外,Mac版的 Beyond Compare 4 還需要進行設定讓其支援通過命令列的方式呼叫:點選選單 -> Install Commond Line Tools...然後輸入系統登入密碼即可。
[merge]
tool = bcomp
[mergetool]
prompt = false
keepBackup = false
[mergetool "bcomp"]
trustExitCode = true
cmd = "/usr/local/bin/bcomp" "$LOCAL" "$REMOTE" "$BASE" "$MERGED"
[diff]
tool = bcomp
[difftool]
prompt = false
[difftool "bcomp"]
trustExitCode = true
cmd = "/usr/local/bin/bcomp" "$LOCAL" "$REMOTE"

常用git? Alias

  1. [alias]
  2. st = status --short--branch
  3. pu = pull --rebase
  4. ca = commit --amend
  5. ci = commit -a -v
  6. br = branch
  7. bv = branch -vv
  8. co = checkout
  9. cb = checkout -b
  10. df = diff
  11. un = reset --hard HEAD
  12. uh = reset --hard HEAD^
  13. ll = log --pretty=format:"%C(yellow)%h%Cred%d %Creset%s%Cblue [%cn]"--decorate --numstat
  14. ld = log --pretty=format:"%C(yellow)%h %C(green)%ad%Cred%d %Creset%s%Cblue [%cn]"--decorate --date=short--graph
  15. ls = log --pretty=format:"%C(green)%h %C(yellow)[%ad]%Cred%d %Creset%s%Cblue [%cn]"--decorate --date=relative

GitHub 教學系列文章: 

GitHub 使用教學圖文詳解  http://www.linuxidc.com/Linux/2014-09/106230.htm 

Git 標籤管理詳解 http://www.linuxidc.com/Linux/2014-09/106231.htm 

Git 分支管理詳解 http://www.linuxidc.com/Linux/2014-09/106232.htm 

Git 遠端倉庫詳解 http://www.linuxidc.com/Linux/2014-09/106233.htm 

Git 本地倉庫(Repository)詳解 http://www.linuxidc.com/Linux/2014-09/106234.htm 

Git 伺服器搭建與用戶端安裝  http://www.linuxidc.com/Linux/2014-05/101830.htm 

Git 概述 http://www.linuxidc.com/Linux/2014-05/101829.htm 

分享實用的GitHub 使用教學 http://www.linuxidc.com/Linux/2014-04/100556.htm 

Ubuntu下Git伺服器的搭建與使用指南  http://www.linuxidc.com/Linux/2015-07/120617.htm


IT145.com E-mail:sddin#qq.com