Git基本操作回顧

作為git最常用的幾個命令git status、git add、git commit,我們每天可能都會寫個數(shù)十遍。但是越是這種我們熟悉的操作,越容易存在一些我們忽略的細節(jié)。這篇文章就是用來記錄下這些細節(jié),記錄我們常用命令中不常用的操作。

在git中編輯過某些文件之后,由于自上次提交后你對它們做了修改,git 將它們標記為已修改文件。 我們逐步將這些修改過的文件放入暫存區(qū),然后提交所有暫存了的修改,如此反復。所以使用 git 時文件的生命周期如下:


lifecycle.png

回顧完就進入正題

git status

git status會有以下幾種狀態(tài)

$ Changes to be committed:
$ (use "git reset HEAD <file>..." to unstage)

表示已經(jīng)在暫存區(qū),等待添加到工作區(qū)。使用git reset命令可以將暫存區(qū)的內(nèi)容移除。

$ 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)

有修改, 但是沒有被添加到暫存區(qū)。使用git add命令可以將文件添加到暫存區(qū),使用git checkout命令可以撤銷文件修改。

$ Untracked files:
$ (use "git add <file>..." to include in what will be committed)

含有未跟蹤文件, 即未納入版本管理的文件。使用git add可以將文件放入暫存區(qū)。


git add

添加文件到暫存區(qū)

git add file

添加多個文件到暫存區(qū),空格隔開

git add file1 file2

使用通配符批量添加documentation目錄下的所有txt后綴文件

git add documentation/*.txt

添加當前目錄下的所有git-開頭的shell文件

git add git-*.sh

將修改和以刪除的文件添加到暫存區(qū),不包括未被跟蹤文件。

git add -u file

git add .和git add -A(即git add --all)區(qū)別

一.版本導致的差別:
1.x版本:
(1).git add -A可以提交未跟蹤、修改和刪除文件。
(2).git add .可以提交未跟蹤和修改文件,但是不處理刪除文件。
2.x版本:
兩者功能在提交類型方面是相同的。

二.所在目錄不同導致的差異:
(1).git add -A無論在哪個目錄執(zhí)行都會提交相應文件。
(2).git add .只能夠提交當前目錄或者它后代目錄下相應文件。


git commit

當我們執(zhí)行git add命令將文件放到暫存區(qū)之后,還需要提交這些暫存到工作區(qū)(倉庫區(qū)),從暫存區(qū)->工作區(qū),的工作就是git commmit來做的。

# 提交暫存區(qū)到倉庫區(qū),message為提交信息
git commit -m [message]
# 提交可以指定文件
git commit [file1] [file2] ... -m [message]

常用的commit擴展命令

# 提交時顯示所有diff信息
git commit -v
# 使用一次新的commit,替代上一次提交,如果代碼沒有任何新變化,則用來改寫上一次commit的提交信息
git commit --amend
# 重做上一次commit,并包括指定文件的新變化
git commit --amend [file1] [file2]

以上三條如果不帶-m [message]將會在vim的編輯器中添加提交信息。

如果你感覺沒有git add,git commit有點麻煩,想直接將修改到工作區(qū),可以用另外一個命令。

# 會將上次commit之后的變化,直接添加到工作區(qū)
git commit -a -m [message]

git rm

rm file

刪除位置:相當于手動右擊點刪除,只刪除了工作區(qū)的文件。
git statusChanges not staged for commit:
恢復:直接用git checkout -- file就可以。

git rm file

它等價于rm file + git add file
刪除位置:相當于不僅刪除了文件,而且還添加到了暫存區(qū)。
git statusChanges to be committed:。
恢復:先git reset,去掉暫存區(qū)修改,然后再git checkout -- file,恢復文件。

git rm --cached file

刪除位置:從暫存區(qū)移除,不刪除文件。
git statusChanges to be committed:Untracked files:
恢復:git add file

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Git 基礎 基本原理 客戶端并不是只提取最新版本的文件快照,而是把代碼倉庫完整的鏡像下來。這樣一來,任何一處協(xié)同...
    __silhouette閱讀 16,214評論 5 147
  • Git 命令行學習筆記 Git 基礎 基本原理 客戶端并不是只提取最新版本的文件快照,而是把代碼倉庫完整的鏡像下來...
    sunnyghx閱讀 4,163評論 0 11
  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git,從https:/...
    落魂灬閱讀 12,848評論 4 54
  • 你有沒有過這樣的經(jīng)歷: 擔憂、緊張、焦慮、疲憊不堪地上床,知道自己要睡覺,卻總是在床上翻來覆去、無法入睡。整個晚上...
    Amy_04ee閱讀 712評論 3 2
  • 到榮昌去,是此行的重點之一。我們軍校的同班同學祥,就居住在這座美麗的小城里。前幾年,祥遭遇了一點人生的挫折...
    蘇州的雨巷閱讀 378評論 3 2

友情鏈接更多精彩內(nèi)容