关于Git中的一些常用的命令
深入了解git的checkout命令
檢出命令(git checkout)是Git最常用的命令之一,同時也是一個很危險的命令.
因為這條命令會重寫工作區.檢出命令的用法如下:
用法一: git checkout [-q] [<commit>] [--] <path>...
用法二: git checkout [<branch>]
用法三: git checkout [-m] [[-b|--orphan] <new_branch>] [<start_point>>]
第一種用法的<commit>是可選項,如果省略則相當于從暫存區(index)進行檢出.
這和之前的重置命令大不相同:重置的默認值是HEAD,而檢出的默認值是暫存區.
因此重置一般用于重置暫存區(除非使用--hard參數,否則不重置工作區)
而檢出命令主要是覆蓋工作區(如果<commit>不省略,也會替換暫存區中相應的文件).
?
第一種用法:
?
先來合個影:
在Git中,"留影"用的命令是叫做tag,更加專業的術語叫做"里程碑"(打tag,或者打標簽)
"留影"的命令如下:
$ git tag -m "say bye to previous" ?old_practice
只需要知道里程碑也無非是一個引用.通過記錄提交ID(或者創建Tag對象)來為當前版本庫的狀態進行"留影"
$ ls .git/refs/tags/old_practice?
?
留影之后,可以執行git describe命令將最新提交顯示為一個容易記憶的名字.
顯示的時候會選取離該提交最近的里程碑作為"基礎版本號",后面附加標識距離"基礎版本"
的數字,以及該提交的SHA1哈希值的縮寫.因為最新的提交上恰好被打了一個"里程碑".
所以直接顯示"里程碑"的名稱.這個技術會在后面的示例代碼中經常用到.
?
刪除文件:(這個時候工作區只有一個test1.txt文件是已經commit結束,又增加了新的東西,處于modify狀態)
在這個暫存區和工作區都包含文件修改的情況下,使用刪除命令更具有挑戰性.
刪除命令有很多種使用方法,有的方法很巧妙,而有的方法則需要更多的輸入.
為了分別介紹不同的刪除方法.還要使用之前使用過的保存進度的git stash 命令.
保存進度:
?
?
在恢復進度.注意不要使用git stash pop ,而是使用git stash apply,因為這個保存的進度要被多次用到.
本地刪除不是真的刪除.
$ls是看工作區中有哪些文件.
$rm test1.txt 命令執行之后,工作區中處于修改Modified狀態的test1.txt文件被刪除了.
但是執行$ git ls-files 之后還是可以看出有文件的.
從文件的狀態來看,文件只是在本地進行了刪除,尚未添加到暫存區(提交任務)中.
也就是說:直接在工作區刪除,對暫存區和版本庫沒有任何影響.
從Git的狀態中可以看出,本地刪除如果要反應在暫存區中應該用git rm命令,對不向刪除的文件執行
git checkout -- <file>,可以讓文件在工作區中重現.
這個時候如果用checkout命令的話,剛才已經"被刪除"的test1.txt就會恢復在工作區了.
不過這個文件是沒有修改之前的狀態.上面的圖中我也已經$git status 了.
?
執行git rm命令刪除文件
$ git rm test1.txt
這樣刪除的動作加入了暫存區,這時執行提交動作,就從真正意義上執行了文件刪除.
$ git commit -m "delete files(using:git rm)"
不過不要擔心,文件只是在版本庫的最新提交中被刪除了,在歷史提交中尚在.可以通過下面的命令查看歷史版本的文件列表.
$ git ls-files --with-tree=HEAD^
也可以查看在歷史版本中尚在的刪除文件的內容.
$git cat-file -p HEAD^:test1.txt
?
命令git add -u 快速標記刪除
在前面執行git rm命令時,寫下了所有要刪除的文件名,很長.能不能簡化些?
實際上git add就可以.即使用-u參數調用git add命令.含義是將本地有改動(包括修改和刪除)的文件標記到暫存區.
為了重現剛才的場景,先使用重置命令拋棄最新的提交,再使用進度回復到之前的狀態.
文件的整個過程操作:
上圖中$git stash apply -q 恢復保存的進度(參數-q 使得命令進入安靜模式)
執行完上面這個命令恢復到了在test1.txt的modified狀態.
執行 git add -u 命令可以將(被版本庫追蹤的)本地文件的變更(修改,刪除)全部記錄到暫存區中.
?
轉載于:https://www.cnblogs.com/DreamDrive/p/4156493.html
總結
以上是生活随笔為你收集整理的关于Git中的一些常用的命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何使用窗体开发-理解那些函数怎么来的?
- 下一篇: ORACLE DataGuard主备切换