目錄:
1、Git工作區、暫存區、分支的區別
2、Git版本回退和撤銷修改
3、Git刪除文件
4、vim說明
5、總結
進擊的小仙
參考資料:Git教程 - 廖雪峰的官方網站
1. Git工作區、暫存區、分支的區別
1488360764(1).png
在每天吃一點Androidの二中,我們在電腦上創建了一個名為Git_Repo的文件夾,并在里面啟動bash,通過
git init
初始化了一個空的版本庫,git自動生成了一個隱藏的.git文件夾。
-
.git
文件夾就是版本庫,里面存放了很多的東西。 -
Git_Repo就是工作區,我們在里面新建工程,或者新增文件,如
readme.md
; - 然后我們在bash中add添加后,工程或文件就被加入到了.git版本庫中的stage暫存區;
- 繼而再commit提交后,工程或者文件就被提交到了master分支。
2. Git版本回退和撤銷修改
2.1. 版本回退
查看版本日志:
git log
查看簡化的版本日志:
git log --pretty=oneline
Paste_Image.png
如上圖,黃色一長串“bbcd...b070”是commit id,也就是版本號,使用SHA1計算出來的id,這個id在版本回退中扮演很重要的角色。后面的白色字符串,如"rm readme2.md"是版本修改說明。
回退到上個版本:
git reset --hard HEAD^
回退到上上個版本:
git reset --hard HEAD^^
回退到十個版本:
git reset --hard HEAD~10
回退到指定版本號的版本:如版本號開頭部分為bbcd...
git reset --hard HEAD bbcd
另一個版本日志的查看方式:
git reflog
Paste_Image.png
2.2. 撤銷修改
- 撤銷工作區的修改:
git checkout -- file
如果暫存區有內容,那么工作區撤銷成與暫存區一樣。
如果暫存區沒有內容,那么工作區撤銷成與分支一樣。
- 撤銷暫存區的修改
git reset HEAD file
撤銷后,暫存區的內容與分支一樣
<a>注意:</a>修改工作區的readme.md,add添加工作區內容到暫存區,但未commit提交,再次修改工作區的readme.md內容,不add添加到暫存區,也就是說現在工作區、暫存區、分支三個位置的readme.md都不同,此時commit提交,提交的內容是暫存區的,而工作區第二次修改的readme.md是沒有提交上去的。
3. Git刪除文件
刪除工作區的文件:
rm readme2.md
分兩步:一:git rm刪除,二:git commit提交
git rm readme2.md
git commit
撤銷刪除:
git checkout --readme2.md
查看文件內容:
cat filename
4. vim說明
vim分為編輯模式和命令模式兩種。
命令行模式下的命令:
dd
:刪除行
i
或a
或o
:進入編輯模式
數字n+d
:刪除當前行開始n行
u
:回退
p
:d
刪除后,可以用p
粘貼進入命令模式:
esc
5. 總結
區別好工作區、暫存區和分支
- 情景1:添加并且提交了一個改錯了的文件到分支,要回退到某個歷史版本。
#查詢分支的各個歷史提交的版本,根據版本描述確定要撤回到的版本
git log --pretty=oneline
#或者用這個指令,HEAD前面的一串就是版本號
git log reflog
#根據版本號輸入版本回退指令,版本號可以不用寫完整
git reset --hard HEAD 版本號
- 情景2:添加了一個改錯了的文件到暫存區,但還沒有提交到分支
# 將暫存區的文件替換成分支里的文件
git reset HEAD file
- 情景3:修改錯了工作區的文件,要取消修改
git checkout -- filename
- 情景4:刪除分支的文件
git rm filename
git commit