<span style="color:red;font-weight:bolder">场景1:</span>本地提交并推送了代码到远程仓库(此时本地和远程对应分支都是最新的代码),然后本地改了一些代码,发现有问题,要回退至提交推送以后,但是改代码之前的代码,执行命令:```git reset --hard```,如图所示:
![](https://img.kancloud.cn/ac/9a/ac9ab8b2b1e8a9b087541d2e9423bd7e_558x118.png)
<span style="color:red;font-weight:bolder">场景2:</span>本地提交并推送了代码到远程仓库(此时本地和远程对应分支都是最新的代码),然后线上发生报错问题,此时线上代码要回退至上一个(指定提交版本commit_id)没问题的仓库,此时执行回滚命令:```git reset --hard <commit_id>```,再执行推送命令:```git push```,即可解决此问题
注意:此种方式线上代码可以回滚到指定版本,但是本地已经修改的代码是不会回滚的,直接拉取线上最新到本地[本地会不会报错,具体分析.,不过可以确定线上回滚到了Bug报错前的代码]
<span style="color:red;font-weight:bolder">场景3:</span>执行合并到主分支的操作时,如果遇到代码冲突,怎么处理
1. 确认合并失败:执行以下命令进行分支合并(当前所在master主分支):
~~~
git merge test
~~~
如果出现冲突,Git 会给出相应的提示信息。
2. 查看冲突文件:执行以下命令查看发生冲突的文件列表:
~~~
git status
~~~
这会列出所有发生冲突的文件。
3. 打开冲突文件:选择一个冲突文件,使用文本编辑器打开它。在文件中,Git 会用特殊标记标示出冲突的部分,例如:
~~~
<<<<<<< HEAD (master)
222
=======
111
>>>>>>> test
~~~
在这个例子中,`<<<<<< HEAD`到`=======`之间是`master`分支的内容,`=======`到`>>>>>>> test`之间是`test`分支的内容。
4. 解决冲突:根据实际需求,选择保留所需的代码并删除特殊标记,或进行其他修改来解决冲突。例如,你可以修改文件为:
~~~
111
~~~
表示选择保留`test`分支的修改。
或者,你也可以修改文件为:
~~~
222
~~~
表示选择保留`master`分支的修改。
根据具体情况解决完冲突后,保存文件。
5. 添加解决后的文件:执行以下命令将解决冲突后的文件添加到暂存区:
~~~
git add <冲突文件>
~~~
替换`<冲突文件>`为实际发生冲突的文件名。
6. 提交合并:执行以下命令将解决冲突后的文件提交到本地仓库:
~~~
git commit
~~~
这将打开文本编辑器以输入提交信息。在编辑器中,你可以提供合适的提交信息来描述你的修改。保存并关闭编辑器后,提交完成。
7. 推送改动(可选):如果你想将合并后的改动推送到远程仓库,执行以下命令:
~~~
git push origin master
~~~
这会将本地的`master`分支推送到名为`origin`的远程仓库