情景1
当你在分支a上修改了代码但并未提交,突然要切换到分支b上开发,拉取分支b的代码与你本地修改的代码冲突报错,此时该怎么做?
1、先将本地修改的代码贮藏(git stash)起来,贮藏后工作区和暂存区的代码会放在SourceTree的已贮藏模块中,此时工作区和暂存区非常干净,无提交信息的记录。
2、将分支a切换到分支b,然后拉取代码b分支的代码,本地无冲突报错。
3、在SourceTree的左下角点击应用刚才所保存的贮存信息,本地修改的代码已经回来了。
情景2
当你已经在a分支上提交了某段代码,但是想要回滚到提交前的状态, 并且不产生提交记录,此时该怎么做?
选择你要回滚到的版本,右键选择“将a重置到这次提交”,此时工作台中刚才所提交的代码已经回来了,但是SourceTree有着“revert”的记录。转到命令行,输入git push origin HEAD --force
,与远程仓库的提交保持一致,远程仓库的提交便回来了。
情景3
你将本该提交到a分支的代码提交到了b分支上,此时本地修改又提交了,该怎么做?
此时需要进行一个cherry-pick操作。切换到a分支,拉取代码,点击b分支的某个提交右键选择遴选。