git總結
標簽(空格分隔): git
本文是對廖雪峰的git教程的總結
[TOC]
創建版本庫
- 創建版本庫:git init
- 把文件添加到倉庫:git add <file name>
- 把本目錄所有文件添加到倉庫:git add .
- 提交到本地倉庫:git commit -m "提交信息"
時光機穿梭
- 掌握倉庫的狀態:git status
- 查看文件修改狀況:git diff <file name>
版本回退
- 查看提交log記錄:git log
- log記錄簡化輸出:git log --pretty=oneline
- 版本重置為上一次提交時狀態:git reset --hard HEAD
- 版本重置為上上一次提交時狀態:git reset --hard HEAD^
- 版本重置為某一次提交時狀態:git reset --hard <提交id>
- 查詢所有提交命令:git reflog
撤銷修改
- 放棄對工作區的修改:git checkout -- <file name>
- 撤銷對暫緩區的修改:git reset HEAD <file name>
- 查詢所有提交命令:git reflog
時光機穿梭
- 創建SSH Key:ssh-keygen -t rsa -C "youremail@example.com"
添加遠程倉庫
- 本地倉庫與遠程倉庫關聯:git remote add origin <倉庫地址>
- 第一次推送:git push -u origin master
- 以后的推送:git push origin master
從遠程庫克隆
- 本地倉庫與遠程倉庫關聯:git clone <倉庫地址>
分支管理
創建與合并分支
- 創建dev分支:git branch dev
- 切換到dev分支:git checkout dev
- 創建并切換到dev分支:git checkout -b dev
- 查看所有分支:git branch
- 把dev分支合并到當前分支:git merge dev
- 刪除dev分支:git branch -d dev
解決沖突
- 查看分支的合并情況:git log --graph --pretty=oneline --abbrev-commit
分支管理策略
- 禁用快速合并模式:git merge --no-ff -m "merge with no-ff" dev
Bug分支
- 儲存工作現場:git stash
- 回復工作現場:git stash apply stash@{0}
- 刪除stash內容:git stash drop
- 回復并刪除上一次stash:git stash pop
- 查看stash列表:git stash list
Feature分支
- 強行刪除分支:git branch -D <feature-vulcan>
多人協作
- 查看遠程庫信息,使用
git remote -v
;- 本地新建的分支如果不推送到遠程,對其他人就是不可見的;
- 從本地推送分支,使用
git push origin branch-name
,如果推送失敗,先用git pull
抓取遠程的新提交;- 如果
git pull
提示“no tracking information”,則說明本地分支和遠程分支的鏈接關系沒有創建,用命令git branch --set-upstream branch-name origin/branch-name
。- 在本地創建和遠程分支對應的分支,使用
git checkout -b branch-name origin/branch-name
,本地和遠程分支的名稱最好一致;- 從遠程抓取分支,使用
git pull
,如果有沖突,要先處理沖突。
標簽管理
創建標簽
- 給當前分支打一個新標簽:git tag <tag name>
- 給某一次提交打一個標簽:git tag <tag name> <提交的id>
- 查看所有標簽:git tag
- 查看標簽信息:git show <tag name>
- 打標簽時帶上說明信息:git tag -a v0.1 -m "version 0.1 released" <提交的id>
操作標簽
- 刪除標簽:git tag -d v0.1
- 推送標簽到遠程:git push origin v1.0
- 推送所有本地標簽:git push origin --tags
- 刪除遠程標簽:git push origin :refs/tags/v0.9
使用GitHub
- 在GitHub上,可以任意Fork開源倉庫;
- 自己擁有Fork后的倉庫的讀寫權限;
- 可以推送pull request給官方倉庫來貢獻代碼。
自定義Git
- 讓Git顯示顏色:git config --global color.ui true
配置別名
- 用co表示checkout:git config --global alias.co checkout
- lg縮寫:git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"