下面所寫的其實是寫給公司內部的Git使用基礎教程,我在這裡也記錄下。
修改Git配置
git config --global core.autocrlf input
git config user.name yourname --local
git config user.email [email protected] --local
克隆v3代碼庫
git clone [email protected]: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"
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]
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
Git 的詳細介紹:請點這裡
Git 的下載地址:請點這裡