1. git reset 參數說明
git reset 是用來回退版本的,它可以添加三個參數,常用的使用格式是這樣的:git reset [--hard | --soft | --mixed] 版本號
一般使用git
修改文件并提交需要三步,第一步在文本編輯器中編輯文件,也就是在工作區修改文件;第二步使用git add
添加文件,將修改的文件存到暫存區;第三步使用git commit
提交文件,將暫存區的文件提交到當前分支。
git reset 的這三個參數對應的就是回退到目標版本后的上面的三種狀態:
git reset --mixed 版本號
回退后是剛使用文本編輯器修改好還沒有git add
的狀態;git reset --soft 版本號
回退后是使用使用git add
但是還沒有使用git commit
的狀態;git reset --hard 版本號
回退后直接就是已經使用git commit
提交后的狀態;
2. 撤銷文件修改
2.1 撤銷工作區的文件修改
可以使用以下命令來撤銷工作區的文件修改
git checkout -- <filename>
或
git restore <filename>
使用git checkout
撤銷文件修改的時候不能丟掉后面的--
,否則就會變成切換分支的命令,--
的前后都應該有空格。
git checkout
撤銷的是工作區的文件修改,如果撤銷修改的文件還沒有存到暫存區,那就會回到和版本庫一樣的狀態,如果撤銷修改的文件已經存到了暫存區,那就會回到和暫存區一樣的狀態。
git checkout
只會影響工作區,會讓文件回到上一次git commit
或者git add
的狀態。
git restore
使用時候直接在后面加文件名就可以撤銷工作區的修改了。
2.2 撤銷暫存區的修改
撤銷暫存區的修改也是兩條命令
git restore --staged <filename>
或
git reset <filename>
這兩個命令只會撤銷暫存區的文件修改,如果文件保存到暫存區以后又在工作區進行了修改,這時候使用這兩條命令只會影響暫存區的文件,不會影響工作區的內容,如果想同時修改暫存區的工作區就需要和上面的命令結合使用。
如果是文件刪除操作已經git add
到了暫存區,那么只能使用git restore --staged filename
來恢復,這時候git reset
是不能用的。
3. 分支管理
3.1 查看當前分支
使用git branch
顯示當前存在的分支列表。
3.2 創建分支
git branch <dev>
或
git checkout -b <dev>
或
git switch -c <dev>
第一條表示創建分支dev
,但是當前的工作分支還是原來的;后面兩條表示創建分支dev
并將當前的工作分支切換到dev
。
3.3 切換分支
git checkout <dev>
或
git switch <dev>
這兩條命令表示將當前的工作分支切換到dev
分支。
3.4 合并分支
git merge <dev>
git merge命令用于合并dev
分支到當前分支。
git log --graph --pretty=oneline --abbrev-commit
可以查看分支合并圖。
3.5 刪除分支
git branch -d dev
安全刪除本地分支,只有dev
分支合已合并的情況下才能使用這個命令刪除,把d改成D就可以在未合并的情況下刪除本地分支。