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 命令应用的三种情景
- “快进”(无冲突)
- 非“快进”,修改不同文件。(无冲突)
- 非“快进”,修改相同文件。(有冲突)