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 commit
或git 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>
可以刪除一個遠端標籤。