2021-05-12 14:32:11
Git使用基礎教學
下面所寫的其實是寫給公司內部的Git使用基礎教學,我在這裡也記錄下。
修改Git設定
windows作業系統換行設定
git config --global core.autocrlf input
使用者名稱、郵箱設定
git config user.name yourname --local
git config user.email yourname@tudou.com --local
克隆v3程式碼庫
git clone git@gitlab.intra.tudou.com:static/v3.git
檢視分支
列出本地所有的分支
git branch
列出遠端所有的分支
git branch -r
建立分支
基於本地分支建立
git branch [BRANCH_NAME]
git push origin [BRANCH_NAME]
基於遠端分支建立
git branch [BRANCH_NAME] origin/master
本地分支與遠端分支系結
繫結後操作就能?省略
origin [branch],使用起來更加方便高效,當然如果有多個遠端需要操作就不能省略了
git push -u origin [branch]
切換分支
切換到本地分支,如果本地分支不存在自動尋找遠端分支
git checkout [BRANCH_NAME]
更新分支
更新master
git pull --rebase origin master
解決rebase衝突。
git status
# 根據提示開啟對應檔案,搜尋"<<<<<<<"字元,解決衝突後執行
git add -u
git rebase --continue
# 停止pull操作,回pull rebase之前的狀態
git rebase --abort
提交程式碼
提交到本地版本庫
git commit -m "commit message"
提交到遠端master
git push origin master
合併分支
切換到master。
git checkout master
合併分支。
git merge --no-ff [BRANCH_NAME]
解決src目錄下的衝突。
https://help.github.com/articles/resolving-a-merge-conflict-from-the-command-line
使用外部工具解決衝突
解決本次合併的所有衝突
git mergetool
解決特定檔案的衝突
git mergetool src/js/g.js
重新構建build、dist目錄下的所有衝突的檔案。
ytpm [PATH]
提交程式碼。
git add .
git commit -m "commit message"
恢復程式碼
放棄本地修改(廢棄本地所有未提交的檔案,和遠端保持一致)
git reset --hard origin/master
恢復一個提交
git revert [COMMIT_ID]
恢復merge
git revert -m 1[MERGE_COMMIT_ID]
恢復到指定版本
git reset --hard [COMMIT_ID]
刪除分支
刪除本地分支
git branch -d [BRANCH_NAME]
刪除遠端分支
git push origin --delete[BRANCH_NAME]
檢視變更記錄
檢視變更歷史
git log --decorate --numstat [PATH]
檢視某個提交記錄
git show --name-only [COMMIT_ID]
對比檔案
git預設方式
對比工作區版本和暫存區版本
git diff --[PATH]
對比暫存區版本和版本庫版本
git diff --cached --[PATH]
對比工作區版本和版本庫版本(HEAD)
git diff HEAD --[PATH]
對比兩個提交過的檔案
git diff [COMMIT_ID_1][COMMIT_ID_2]--[PATH]
對比兩個分支的檔案
git diff develop master -- src/js/g.js
git diff develop:src/js/g.js master:src/js/g.js
檢視其它分支上的檔案
git show master:src/js/g.js
外部比較工具完成比較
比較本次合併的所有修改(只與提交前的記錄比較)
git difftool
比較指定檔案的歷史版本
git difftool [GitHash] HEAD -- src/js/g.js
不小心在develop上進行開發時解決方案
未提交時
git stash
git checkout [BRANCH_NAME]
git stash pop
已提交時
git log -1# 記住COMMIT ID
git reset --hard origin/develop
git checkout [BRANCH_NAME]
git cherry-pick [COMMIT_ID]
不小心將develop或基於develop建立的分支合併到master上時解決方案
A--M---B <---develop
--C--G---J---P---Q <---master
如上例,需要先確認好J這次錯誤提交點以及其之前、之後提交點的hash值,並確保當前HEAD處於Q上,接著執行:
git rebase -i -p --onto P G
執行完後需要手工解決之後每次提交出現的衝突,手工比較解決掉衝突後執行:
git add . // 新增此次衝突修改
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
[alias]
st = status --short--branch
pu = pull --rebase
ca = commit --amend
ci = commit -a -v
br = branch
bv = branch -vv
co = checkout
cb = checkout -b
df = diff
un = reset --hard HEAD
uh = reset --hard HEAD^
ll = log --pretty=format:"%C(yellow)%h%Cred%d %Creset%s%Cblue [%cn]"--decorate --numstat
ld = log --pretty=format:"%C(yellow)%h %C(green)%ad%Cred%d %Creset%s%Cblue [%cn]"--decorate --date=short--graph
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
相關文章