git命令速查

GoodLiang發表於2018-03-20

克隆專案:

git clone https://github.com/shoukailiang/test.git

設定

如果你不設定可能還push不上去,第一個要配置的是你個人的使用者名稱稱和電子郵件地址。這兩條配置很重要,每次 Git 提交時都會引用這兩條資訊,說明是誰提交了更新,所以會隨更新內容一起被永久納入歷史記錄:

  • git config --global user.name "shoukailiang"
  • git config --global user.email "shoukailiang@qq.com"

git status 檢視狀態

  • [master ≡ +2 ~0 -0!](紅色代表是工作區):工作區有兩個新增的檔案,0個修改,0個刪除

  • [master ≡ +1 ~0 -0(綠色) | +1 ~0 -0 !(紅色)]:綠色表示暫存區 !表示有衝突

  • git add 新增到暫存區

  • git commit 提交到版本庫,會彈出一個檔案填註釋

  • git add .把修改過得檔案全部提交到暫存區(後面是.)

  • git commit -m "change demo01":註釋寫在引號裡面,不會彈出記事本

  • git commit -a -m "drag.js":先新增到暫存區後新增到版本庫的簡寫,引號裡面寫註釋

  • git log:檢視提交的歷史,歷史多了之後要按回車來顯示,退出按q

  • git diff :工作區和暫存區的檔案的差異的對比

  • git diff --cached:暫存區與版本庫之間的對比(或者git diff --staged)

  • git diff master:工作區與版本庫之間的差異 ,master那個是分支的名字

撤銷

  • git reset HEAD drag.js 從暫存區撤銷回工作區
  • git checkout -- drag.js 從版本庫撤銷回工作區(會先從暫存區撤銷,如果沒有才會到版本庫中撤銷)
  • git commit -m "change3 drag.js and demo01.html" --amend :比如有兩個檔案1,2 我把1 add到暫存區,然後commit了全部, 這時候就除了錯誤,可以使用上述程式碼:就達到了撤銷上一次的commit 然後把檔案全部commit ;使用git log 並不會有那次commit的註釋資訊

刪除:

  • git rm test.txt :把暫存區中的test.txt刪除(要先把工作區中的這個檔案刪除,否側會報錯)
  • git rm -f test.txt 會把暫存區和工作區的test.txt刪掉(要先把test.txt add 到暫存區)
  • git rm --cached test.txt 把暫存區的test.txt刪掉,不會吧工作區的test.txt刪掉

恢復:

  • 指定檔案:比如一不小心在工作區把一個檔案給誤刪了,這時候git log 後找到commit 的id 然後 git checkout e154cb8c45eb drag.js

  • git reset --hard e154cb8c45eb 恢復版本,不管有多少檔案,可以去過去也可以去未來(未來至回退之後的未來)

  • git reset --hard HEAD^ 回到上一個版本

  • git reset --hard HEAD~2 回退兩個版本(跳過兩個,回退到第三個)

  • git reflog:把歷史版本全都列印出來

  • git remote 檢視遠端倉庫的名字

  • git remote -v 檢視名字所對應的遠端倉庫的地址

  • git push origin master (origin是遠端倉庫的名字 master是分支名)

解決衝突:

  • git fetch 拉取遠端倉庫程式碼但不進行合併,需要手動合併(在工作區內並不會直接合並還是原來的程式碼,可以先檢視區別後再合併)

    • 檢視區別 git diff master origin/master
    • 合併: git merge origin/master,合併會把兩個都合併,讓我們自己選擇(多餘的刪除)
  • git pull 拉取遠端倉庫程式碼直接合並

開源專案協作(沒許可權):

  • fork:相當於一個映象放在自己的倉庫,克隆在本地,修改程式碼,(也可以在github上直接修改)釋出到自己的倉庫, 然後pull request ,寫一些留言,對方會看到,對方可以選擇 合併

分支:

  • git branch 檢視分支

  • git branch new1 建立new1的新分支

  • git checkout new1 切換到new1的分支

  • git checkout -b new2 建立new2分支並且切換到new2分支上

  • (先切換到master分支上), git merge new1 將new1與master合併

  • git branch --merged :可以知道當前分支下有被合併的分支 ,比如master分支下合併了new1

  • git branch --no-merged 當前分支下沒有被合併的分支

  • git branch -d new1

    • new1和branch合併後,把new1刪除,只能刪掉被合併的分支,比如new2沒有和master合併就不能刪除new2
  • git branch -D new2 強制把沒有合併的分支刪掉

  • 有衝突的合併(兩個分支不同)

    • 在master上git merge new1 會讓你自己選擇留下哪個然後 git commit -a -m "....."
  • git push origin new1 把new1分支提交到遠端倉庫上

  • git tag 檢視標籤

  • git tag v1.0 v1.0版 之後:git push origin v1.0 (這裡v1.0不是分支)

  • git reset HEAD~ 撤銷回上一次提交的,和之前在暫存區裡提交前一樣的狀態

推薦git 教程