欢迎光临散文网 会员登陆 & 注册

GIT指北(中篇)

2022-03-30 17:23 作者:vicozan  | 我要投稿

四,时间穿梭

reset这个命令可以让你在各个版本里自由跳转,不能单纯的认为是回退。

git reset branch_1^

git reset branch_1~2

git reset 5d3190e

1,reset:分支名后接^表示回退一档,^^或~2回退两档,^^^或~3回退三档,如果接具体的版本号就会直接跳转。

2,接--mixed:默认参数,保留所有改动,但清空stage缓冲区

3,接--soft:保留所有改动,并保留stage缓冲区。

4,接--hard:所有文件会还原到对应版本。我比较常用的模式!


了解了reset之后,再引入一个新的命令revert,revert和reset的区别在于,revert不是直接跳转,而是在不影响之前的版本的情况下新建一个commit,把要跳转的版本内容还原过来,但这时候比较容易出现冲突,解决完冲突再重新commit即可。


五,再谈谈合并

合并有两种方案,merge与rebase。在没有冲突的情况下,两者功能类似。但在有冲突时会有比较大的分别,下面我分别解释一下。

假设有AB两个分支,当前分支是B,要将A的内容合并到B

merge:有记录可溯源。碰到冲突的话,会将所有冲突点写入冲突的文件中,手动或通过工具修改完成后,再重新commit即可。

rebase:无记录,直接合并。遇到冲突时会开一个临时分支C,将需要修改的文件放在里面,在修改完成后,通过rebase --continue合并到B分支,并删除临时分支C。如果使用rebase --abort可以舍弃本次合并,B还是原来的B。如果使用rebase --skip则会舍弃B分支的所有改动,变成和A分支一样的内容。

GIT指北(中篇)的评论 (共 条)

分享到微博请遵守国家法律