git經常使用技能(轉)

學習使用 Git 已經一年有餘,一些經常使用技能也用的爐火純青了,但偶爾碰到一些生僻的技能,老是須要去 Google,第二次用時又忘了。因此這是一篇我自認爲比較重要的 Git 技能表,主要供本身查閱使用,反覆查閱可以加深印象,提高技能熟練度。若是你是還不知道 Git 是什麼,建議先閱讀 廖雪峯的Git教程git

工做流

Git 最核心的一個概念就是工做流。工做區(Workspace)是電腦中實際的目錄;暫存區(Index)像個緩存區域,臨時保存你的改動;最後是版本庫(Repository),分爲本地倉庫和遠程倉庫。下圖真是一圖勝千言啊,就無恥盜圖了。github

遠程倉庫

添加遠程倉庫

git remote add origin git@server-name:path/repo-name.git  #添加一個遠程庫

查看遠程倉庫

git remote      #要查看遠程庫的信息
git remote -v   #顯示更詳細的信息

推送分支

git push origin master    #推送到遠程master分支

抓取分支

git clone git@server-name:path/repo-name.git   #克隆遠程倉庫到本地(能看到master分支)
git checkout -b dev origin/dev  #建立遠程origin的dev分支到本地,並命名爲dev
git checkout origin/dev --track #與上面效果同樣
git pull origin master          #從遠程分支進行更新
git fetch origin master         #獲取遠程分支上的數據

$ git branch --set-upstream branch-name origin/branch-name,能夠創建起本地分支和遠程分支的關聯,以後能夠直接git pull從遠程抓取分支。緩存

另外,git pull = git fetch + merge to localapp

刪除遠程分支

$ git push origin --delete bugfix
To https://github.com/wuchong/jacman
- [deleted]         bugfix

更新遠程分支信息

項目往前推動的過程當中,遠程倉庫上常常會增長一些分支、刪除一些分支。 因此有時須要與遠程同步下分支信息。學習

git fetch -p

-p就是修剪的意思。它在fetch以後刪除掉沒有與遠程分支對應的本地分支,而且同步一些遠程新建立的分支和tag。fetch

歷史管理

查看歷史

git log --pretty=oneline filename #一行顯示
git log -p -2      #顯示最近2次提交內容的差別
git show cb926e7   #查看某次修改

版本回退

git reset --hard HEAD^    #回退到上一個版本
git reset --hard cb926e7  #回退到具體某個版
git reflog                #查看命令歷史,經常使用於幫助找回丟失掉的commit

用HEAD表示當前版本,上一個版本就是HEAD^,上上一個版本就是HEAD^^HEAD~100就是上100個版本。spa

管理修改

git status              #查看工做區、暫存區的狀態
git checkout -- <file>  #丟棄工做區上某個文件的修改
git reset HEAD <file>   #丟棄暫存區上某個文件的修改,從新放回工做區

查看差別

git diff              #查看未暫存的文件更新 
git diff --cached     #查看已暫存文件的更新
git diff HEAD -- readme.txt  #查看工做區和版本庫裏面最新版本的區別
git diff <source_branch> <target_branch>  #在合併改動以前,預覽兩個分支的差別

使用內建的圖形化git:gitk,能夠更方便清晰地查看差別。固然 Github 客戶端也不錯。code

刪除文件

git rm <file>           #直接刪除文件
git rm --cached <file>  #刪除文件暫存狀態

儲藏和恢復

git stash           #儲藏當前工做
git stash list      #查看儲藏的工做現場
git stash apply     #恢復工做現場,stash內容並不刪除
git stash pop       #恢復工做現場,並刪除stash內容

分支管理

建立分支

git branch develop              #只建立分支
git checkout -b master develop  #建立並切換到 develop 分支

合併分支

git checkout master         #切換到主分支
git merge --no-ff develop   #把 develop 合併到 master 分支,no-ff 選項的做用是保留原分支記錄
git branch -d develop       #刪除 develop 分支

標籤

顯示標籤

git tag         #列出現有標籤 
git show <tagname>  #顯示標籤信息

建立標籤

git tag v0.1    #新建標籤,默認位 HEAD
git tag v0.1 cb926e7  #對指定的 commit id 打標籤
git tag -a v0.1 -m 'version 0.1 released'   #新建帶註釋標籤

操做標籤

git checkout <tagname>        #切換到標籤

git push origin <tagname>     #推送分支到源上
git push origin --tags        #一次性推送所有還沒有推送到遠程的本地標籤

git tag -d <tagname>          #刪除標籤
git push origin :refs/tags/<tagname>      #刪除遠程標籤

Git 設置

設置 commit 的用戶和郵箱orm

git config user.name "xx"               #設置 commit 的用戶
git config user.email.com "xx@xx.com"   #設置 commit 的郵箱
git config format.pretty oneline        #顯示歷史記錄時,每一個提交的信息只顯示一行
相關文章
相關標籤/搜索