總結自己的Git常用命令

2021-06-29 05:40:18 字數 3136 閱讀 8918

使用git也有一段時間了,把自己常用的命令用自己的描述記錄起來,方便自己備忘也方便其他人參考。

目錄: 

最基本的命令

git clone 拷貝並跟蹤遠端的master分支。跟蹤的好處是以後可以直接通過pull和push命令來提交或者獲取遠端最新的**,而不需要指定遠端分支名字。

git submodule init

git submodule update

參考示意圖

head 指向當前的commit 物件(可以想象為當前分支的別名),同時也用來表明我們在哪個branch上工作。所以當我們使用head來操作指標的時候,其實就是不改變當前的commit的指向。

對照這張圖來理解兩段提交,工作區(working tree),暫存區(index)和 branch之間的關係

顯示資訊類命令

git ls-files -u 顯示衝突的檔案,-s是顯示標記為衝突已解決的檔案

git diff 對比工作區和stage檔案的差異 

git diff --cached 對比stage和branch之間的差異

git branch 列出當前repository下的所有branch 

git branch --a 列出local 和remote下的所有branch

git ls-files --stage 檢查儲存在stage的檔案

git log 顯示到head所指向的commit為止的所有commit記錄 。使用reset head~n 命令使head指標向前移動,會導致head之後的commit記錄不會被顯示。

git log -g則會查詢reflog去檢視最近做了哪些動作,這樣可以配合git branch 恢復之前因為移動head指標所丟棄的commit物件。如果reflog丟失則可以通過git fsck --full來檢視沒被引用的commit物件。 

git log -p -2 對比最新兩次的commit物件 

log -1 head

git log --pretty=oneline

git log --stat 1a410e 檢視sha1為1a410e的commit物件的記錄

git blame -l 12,22 sth.cs 如果你發現自己**中 的乙個方法存在缺陷,你可以用

git blame

來標註檔案,檢視那個方法的每一行分別是由誰 在哪一天修改的。下面這個例子使用了

-l選項來限制輸出範圍在第12至22行

建立類命令

git brach branchname 建立名為branchname的branch 

git checkout branchname 切換到branchname的branch 

git checkout -b 建立並切換,也就是上面兩個命令的合併

git brach branchname ef71 從commit ef71建立名為branchname的branch

撤銷類命令

如果是單個檔案 

1.use "git reset head ..." to unstage 

如果已經用add 命令把檔案加入stage了,就先需要從stage中撤銷

然後再從工作區撤銷 

2.use "git checkout -- ..." to discard changes in working directory

git checkout a.txt  撤銷a.txt的變動(工作區上的檔案) 

如果是多個檔案 

git chenkout .

如果已經commit 了,則需要 

git commit --amend 來修改,這個只能修改最近上一次的,也就是用乙個新的提交來覆蓋上一次的提交。因此如果push以後再做這個動作就會有危險

$ git reset --hard head 放棄工作區和index的改動,head指標仍然指向當前的commit.(參照第一幅圖)

這條命令同時還可以用來撤銷還沒commit的merge,其實原理就是放棄index和工作區的改動,因為沒commit的改動只存在於index和工作區中。

$ git reset --hard head^ 用來撤銷已經commit的內容(等價於 git reset --hard head~1) 。原理就是放棄工作區和index的改動,同時head指標指向前乙個commit物件。

git revert 也是撤銷命令,區別在於reset是指向原地或者向前移動指標,git revert是建立乙個commit來覆蓋當前的commit,指標向後移動

提交類命令

git add 跟蹤新檔案或者已有檔案的改動,或者用來解決衝突

git commit 把檔案從stage提交到branch

git commit -a 把修改的檔案先提交到stage,然後再從stash提交到branch

刪除類命令

git rm --cached readme.txt 只從stage中刪除,保留物理檔案

git rm readme.txt 不但從stage中刪除,同時刪除物理檔案

git mv a.txt b.txt 把a.txt改名為b.txt

merge類命令

在衝突狀態下,需要解決衝突的檔案會從index打回到工作區。

1.用工具或者手工解決衝突 

2.git add 命令來表明衝突已經解決。 

3.再次commit 已解決衝突的檔案。

$ git reset --hard orig_head 用來撤銷已經commit 的merge. 

$ git reset --hard head 用來撤銷還沒commit 的merge,其實原理就是放棄index和工作區的改動。

git reset --merge orig_head,注意其中的--hard 換成了 --merge,這樣就可以避免在回滾時清除working tree。

git常用命令自己總結

1 提交 git add 檔名 git commit m 備註 git push origin 分支名2 檢視狀態 是否有未跟蹤檔案,是否有已修改未提交檔案等狀態改變 push前可檢視 git status3 檢視提交記錄 git log4 回退 git reset5 在分支中提交修改,確定合併分支...

總結自己的Git常用命令

原文 使用git也有一段時間了,把自己常用的命令用自己的描述記錄起來,方便自己備忘也方便其他人參考。目錄 最基本的命令 git clone 拷貝並跟蹤遠端的master分支。跟蹤的好處是以後可以直接通過pull和push命令來提交或者獲取遠端最新的 而不需要指定遠端分支名字。git submodul...

總結自己的Git常用命令

使用git也有一段時間了,把自己常用的命令用自己的描述記錄起來,方便自己備忘也方便其他人參考。目錄 最基本的命令 git clone 拷貝並跟蹤遠端的master分支。跟蹤的好處是以後可以直接通過pull和push命令來提交或者獲取遠端最新的 而不需要指定遠端分支名字。git submodule i...