Git 撤銷操作與分支合並操作指南
有時執行git add .
操作后續想要撤銷add某一個文件或者所有文件;
有時執行git commit
操作后續想要回到上一個提交點操作;
前提須知
git status # 查看git狀態
撤銷add
查看Git狀態
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed: # 注意
(use "git reset HEAD <file>..." to unstage)
modified: .idea/misc.xml
modified: .idea/modules.xml
modified: app/app.iml
只要在 “Changes to be committed” 這行下面的,就說明是已暫存狀態。也就是說這些文件被add過,但是沒有commit。如果此時提交,那么該文件此時此刻的版本將被留存在歷史記錄中。
但是這些文件是被.ignore忽略的,所以我們應該取消add
此時: 執行 git reset HEAD <路徑/文件名>
就是對某個文件進行撤銷了.
撤銷對不必要文件的修改:git checkout -- <路徑/文件名>
或者 git restore <file>...
🙅♀️ git reset HEAD 撤銷所有add的文件。
撤銷commit
背景:
git add . //添加所有文件
git commit -m "本功能全部完成"
執行完commit后,想撤回commit,怎么辦?
解決辦法: git reset --soft HEAD^
僅僅撤銷上一次提交,不回滾代碼修改。
學習內容:
--mixed
意思是:不刪除工作空間改動代碼,撤銷commit,並且撤銷git add . 操作
這個為默認參數,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一樣的。
--soft
不刪除工作空間改動代碼,撤銷commit,不撤銷git add .
--hard
刪除工作空間改動代碼,撤銷commit,撤銷git add .
注意完成這個操作后,就恢復到了上一次的commit狀態。
git commit --amend 修改注釋內容
合並分支學習
切換分支:git checkout 分支名
創建新分支: git checkout -b 分支名
合並分支:git merge 分支名,將分支名所在分支合並到當前所在分支。
合並分支出現的三種情況
git merge 命令應用的三種情景
- “快進”(無沖突)
- 非“快進”,修改不同文件。(無沖突)
- 非“快進”,修改相同文件。(有沖突)