Git文件常用操作總結(jié)及拓展
1、Git本地版本庫(kù)結(jié)構(gòu)
如下圖所示:
- 工作區(qū)(
Working Directory
)
添加、編輯、修改、刪除文件等操作。 - 暫存區(qū)(
Stage
)
打算提交,但還沒(méi)提交的內(nèi)容。最后可以統(tǒng)一提交到Git倉(cāng)庫(kù)中。也可以不提交,撤銷(xiāo)回來(lái)。 - Git倉(cāng)庫(kù)(
Git Repository
)
實(shí)實(shí)在在的項(xiàng)目存儲(chǔ)的每個(gè)一歷史的版本。
2、Git常用操作方法
Git的專屬命令都是以git
開(kāi)始的,然后是索要執(zhí)行的操作,最后還可以加上一些參數(shù)。
以下命令都需在倉(cāng)庫(kù)中執(zhí)行。
(1)狀態(tài)查看。
命令: git status
命令作用:查看工作區(qū)、暫存區(qū)狀態(tài)。
(2)添加文件到暫存區(qū)。
命令:git add [file name]
命令作用:
- 該命令的作用是告訴Git系統(tǒng),將指定文件的當(dāng)前快照寫(xiě)入到版本庫(kù)暫存區(qū)。即,將文件交給Git進(jìn)行版本管理。
- 提交到暫存區(qū),并且轉(zhuǎn)換文件中的換行符。
- 被Git追蹤的暫存區(qū)中的文件可以被提交到本地版本庫(kù)。
(3)文件從暫存區(qū)撤回到工作區(qū)。
命令:git rm --cached [file name]
命令作用:把文件從暫存區(qū)撤回到工作區(qū)。
(4)提交文件。
命令:git commit -m '本次提交的說(shuō)明'
命令作用:提交操作就通過(guò)命令將Git暫存區(qū)中的文件快照永久性地寫(xiě)入到本地版本庫(kù)中。
3、補(bǔ)充:添加多個(gè)文件到暫存區(qū)
有兩種方式:
git add
命令后添加多個(gè)文件,文件之間使用空格分隔。
git add
命令后使用通配符*
指定多個(gè)文件。
示例:
# 1.查看工作區(qū)、暫存區(qū)狀態(tài) L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git status On branch master Untracked files: (use "git add <file>..." to include in what will be committed) hello.java # 文件名為紅色 test.java # 文件名為紅色 xyj-sha_hs.py # 文件名為紅色 xyj-sun_wk.py # 文件名為紅色 xyj-zhu_bj.py # 文件名為紅色 nothing added to commit but untracked files present (use "git add" to track) # 2.添加多個(gè)文件到暫存區(qū) L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git add hello.java test.java L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git status On branch master Changes to be committed: (use "git restore --staged <file>..." to unstage) new file: hello.java # 文件名為綠色 new file: test.java # 文件名為綠色 Untracked files: (use "git add <file>..." to include in what will be committed) xyj-sha_hs.py # 文件名為紅色 xyj-sun_wk.py # 文件名為紅色 xyj-zhu_bj.py # 文件名為紅色 # 3.使用通配符添加多個(gè)文件到暫存區(qū) L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git add xyj*.py L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git status On branch master Changes to be committed: (use "git restore --staged <file>..." to unstage) new file: hello.java # 文件名為綠色 new file: test.java # 文件名為綠色 new file: xyj-sha_hs.py # 文件名為綠色 new file: xyj-sun_wk.py # 文件名為綠色 new file: xyj-zhu_bj.py # 文件名為綠色
4、補(bǔ)充:提交操作未寫(xiě)備注
如果你在執(zhí)行git conmit
提交命令的時(shí)候,并沒(méi)有寫(xiě)-m
信息,這時(shí)會(huì)啟動(dòng)文本編輯器,以便輸入本次提交的說(shuō)明。
默認(rèn)的提交消息包含最后一次運(yùn)行git status
的輸出,放在注釋行里,如下圖:
另外開(kāi)頭還有一空行,供你輸入提交說(shuō)明。你完全可以去掉這些注釋行,不過(guò)留著也沒(méi)關(guān)系,多少能幫你回想起這次更新的內(nèi)容有哪些。
如下:
會(huì)彈出一個(gè)窗口,一個(gè)vim
編輯器窗口:
說(shuō)明:
# Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # # On branch master # Changes to be committed: # modified: readme.txt #
Please enter the commit message for your changes. Lines startingwith '#' will be ignored, and an empty message aborts the commit.
對(duì)于你這次提交中修改的內(nèi)容要進(jìn)行說(shuō)明,
以'#'開(kāi)頭的行將被忽略,并且在第一行填寫(xiě)說(shuō)明信息。
Changes to be committed: modified: readme.txt
readme.txt
的修改已被Git追蹤到。
進(jìn)行提交說(shuō)明的補(bǔ)充:
保存并退出后,提交成功,如下圖:
總結(jié):當(dāng)提交操作的說(shuō)明內(nèi)容比較多,或者需要寫(xiě)的比較詳細(xì)的時(shí)候,可以使用這種方式提交。
5、補(bǔ)充:從工作區(qū)直接提交到版本庫(kù)
盡管使用暫存區(qū)域的方式,可以準(zhǔn)備好要提交的細(xì)節(jié),但有時(shí)候這么做略顯繁瑣。
Git提供了一個(gè)跳過(guò)使用暫存區(qū)域的方式,只要在提交的時(shí)候,給git commit
命令加上-a
選項(xiàng),Git就會(huì)自動(dòng)把所有已經(jīng)跟蹤過(guò)的文件,暫存起來(lái)一并提交,從而跳過(guò)git add
步驟。
命令:git commit -a
示例:
(1)先查看當(dāng)前工作目錄中的文件狀態(tài)。
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git status On branch master nothing to commit, working tree clean
可以看到非常的干凈。
(2)我們創(chuàng)建兩個(gè)文件。
一個(gè)文件是新增文件test.txt
,此前沒(méi)有被Git追蹤過(guò)。
兩個(gè)文件是readme.txt
,已被Git追蹤,我們將該文件變成已修改狀態(tài)。
# 1.新建test.txt L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ echo "hello test" > test.txt # 2.修改readme.txt文件 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ echo "hello git v666" >> readme.txt # 3.查看工作目錄中的文件狀態(tài) L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: readme.txt # 已修改狀態(tài),未在暫存區(qū) Untracked files: (use "git add <file>..." to include in what will be committed) test.txt # 未追蹤狀態(tài) no changes added to commit (use "git add" and/or "git commit -a")
(3)提交到Git版本庫(kù)中。
我們直接使用git commit -a -m
命令直接執(zhí)行提交操作,看看會(huì)發(fā)生什么情況。
# 提交 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git commit -a -m 'test -a' [master 1b0de31] test -a 1 file changed, 1 insertion(+) # 查看工作目錄文件狀態(tài) L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git status On branch master Untracked files: (use "git add <file>..." to include in what will be committed) test.txt # 未追蹤狀態(tài) nothing added to commit but untracked files present (use "git add" to track)
我們可以看到,未被追蹤狀態(tài)的文件,不能直接從工作區(qū)直接提交到版本庫(kù),使用-a
選擇也不可以。
以上就是Git文件常用操作總結(jié)及拓展的詳細(xì)內(nèi)容,更多關(guān)于Git文件操作拓展的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
gradle+shell實(shí)現(xiàn)自動(dòng)系統(tǒng)簽名
這篇文章主要介紹了gradle+shell實(shí)現(xiàn)自動(dòng)系統(tǒng)簽名的相關(guān)資料,需要的朋友可以參考下2019-08-08設(shè)計(jì)引導(dǎo)--一個(gè)鴨子游戲引發(fā)的設(shè)計(jì)理念(多態(tài),繼承,抽象,接口,策略者模式)
設(shè)計(jì)引導(dǎo)--一個(gè)鴨子游戲引發(fā)的設(shè)計(jì)多態(tài),繼承,抽象,接口,策略者模式;這篇博文是從實(shí)際生活中,提煉出來(lái)的設(shè)計(jì)理念,它現(xiàn)在是骨架,現(xiàn)在我加以代碼實(shí)例,完成程序的血肉,以求讓大家活生生的體會(huì)設(shè)計(jì)中的精髓2013-01-01git push & git pull 推送/拉取分支的具體使用
這篇文章主要介紹了git push & git pull 推送/拉取分支的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08