1. 程式人生 > >git的幾個有用的命令

git的幾個有用的命令

初學者的很好網站:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

(1)git init 確定倉庫

(2)git add 1.txt 新增到倉庫

git commit -m "first commit" 提交到倉庫

(3)git status 檔案狀態

(4)git diff 檢視之間的區別

(5)git log 檢視日誌

git log --pretty=oneline 只顯示一行的內容

前面是版本號,是經過sha1計算出來的很大的數字。

(6)git reset --hard  HEAD^ 回退上一個    ###HEAD^^回退上上個,HEAD~100回退前100個。

回退的話,git reset --hard ff99 版本號沒必要寫全,幾個就可以了。

在我的win7下寫git reset --hard  HEAD^無法找到,寫成git reset --hard  HEAD~1就可以。

當然git reset --hard 編號 也是可以的。

(7) git diff HEAD -- 1.txt  命令可以檢視工作區和版本庫裡面最新版本的區別

(8)git checkout -- 1.txt       這個是丟棄工作區的修改

命令git checkout -- readme.txt意思就是,把readme.txt檔案在工作區的修改全部撤銷,這裡有兩種情況:

一種是readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;

一種是readme.txt已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態。

總之,就是讓這個檔案回到最近一次git commitgit add時的狀態。

(9) git reset HEAD 1.txt   提交到暫存區後又返回到工作區

(10)rm 1.txt 刪除工作區檔案

           git rm 1.txt 之後使用git commit -m "rm 1.txt" 徹底刪除

           如果只是刪除本地地檔案,那麼使用git checkout -- 1.txt還是可以恢復的。

(11)分支建立與合併

檢視分支:git branch

建立分支:git branch <name>

切換分支:git checkout <name>

建立+切換分支:git checkout -b <name>

合併某分支到當前分支:git merge <name>  ##合併名為<name>的分支到當前分支

刪除分支:git branch -d <name>

(12)用帶引數的git log也可以看到分支的合併情況

git log --graph命令可以看到分支合併圖。

git log --graph --pretty=oneline --abbrev-commit

(13)git merge --no-ff -m "hebing" dev

通常,合併分支時,如果可能,Git會用Fast forward模式,但這種模式下,刪除分支後,會丟掉分支資訊。

如果要強制禁用Fast forward模式,Git就會在merge時生成一個新的commit,這樣,從分支歷史上就可以看出分支資訊。

(14)git stash 把當前的工作現場“儲藏”起來。等恢復工作後使用。

            git stash list 命令檢視儲藏在哪個位置。

$ git stash list
[email protected]{0}: WIP on dev: f52c633 add merge

            git stash apply [email protected]{0}

            git stash apply恢復現場,需要使用git stash drop刪除儲存內容。使用git stash pop直接刪除不恢復。

$ git stash pop
On branch dev
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   hello.py

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   readme.txt

Dropped refs/[email protected]{0} (5d677e2ee266f39ea296182fb2354265b91b3b2a)
$ git stash list
$ git stash apply [email protected]{0}

(15)git branch -d dev刪除

            git branch -D dev 強行刪除,刪除之後無法修改。

            如果要丟棄一個沒有被合併過的分支,可以通過git branch -D <name>強行刪除。

(16)檢視遠端庫資訊,使用git remote

            檢視更詳細資訊使用git remote -v

$ git remote -v
origin  [email protected]:michaelliao/learngit.git (fetch)
origin  [email protected]:michaelliao/learngit.git (push)

上面顯示了可以抓取和推送的origin的地址。如果沒有推送許可權,就看不到push的地址。

(17)推送分支

git push origin master    推送到主分支

git push origin dev    推送到其它分支

(18)建立標籤

首先切換到需要打標籤的分支上,

$ git branch

$ git checkout master

$ git tag v1.0

$ git tag v0.9 f52c633   對特定內容進行打標籤,其中f52c633是commit id

還可以建立帶有說明的標籤,用-a指定標籤名,-m指定說明文字:

git tag -a v0.1 -m "version 0.1 released" 1094adb
  • 命令git tag <tagname>用於新建一個標籤,預設為HEAD,也可以指定一個commit id;

  • 命令git tag -a <tagname> -m "blablabla..."可以指定標籤資訊;

  • 命令git tag可以檢視所有標籤。

(17) 操作標籤

$ git tag -d v0.1 刪除打錯的標籤

$ git push origin v1.0 推送標籤到遠端

$ git push origin --tags 一次性推送全部尚未推送的標籤到遠端的本地標籤

如果標籤已經推送到遠端,然後刪除遠端的。首先需要刪除本地的標籤,然後刪除遠端的標籤。

$ git tag -d v0.1

$ git push origin  :refs/tags/v0.1

  • 命令git push origin <tagname>可以推送一個本地標籤;

  • 命令git push origin --tags可以推送全部未推送過的本地標籤;

  • 命令git tag -d <tagname>可以刪除一個本地標籤;

  • 命令git push origin :refs/tags/<tagname>可以刪除一個遠端標籤。