【learn Git Branching】

Git作为程序员必备的技能,有些命令长时间不用就慢慢遗忘了比如rebase -ibranch -f,花了一个小时完了把游戏,强化这些命令…游戏入口传送门

我已经通关啦,哈哈哈哈…

image-20210215213758725

玩游戏的过程中又重新回顾的知识点:

1、reset和revert的区别:reset是向上移动分支,相当于本地代码的最后一次提交就被抹去了;而revert则是为了撤销上一次的修改,重新提了一笔代码,它是可以直接push到远程分支的;

2、git branch -f main C3 将main分支强制指向某一次提交;

3、git rebase main 找到当前分支与rebase的目的分支的共同节点,将共同节点以下到当前分支的HEAD所有的修改,拷贝到需要rebase的分支上;

4、cherry-pick 将指定的提交,更新到某个分支上;

项目开发过程中可能会遇到的与Git相关的问题

1、 一个或者几个提交由于种种原因(gerrit超时过期、分支混乱等)无法正常提交合入,有没有一种最原始直接的办法将这一个或几个commit提交合入主干?

最原始的办法当然就是另起一个mr,重新提交;可能之前的commit修改的文件很多,如果手动逐个文件进行更改,那就太离谱了;可以使用git format-patch命令打patch,然后再新的代码仓中应用这个patch即可:

git format-patch <r1>...<r2>两个commit及其之间的修改打成一个patch;

git format-patch -1 <r1> 单个commit打成一个patch;

git format-patch <r1> 从r1到最新代码的变更打成一个patch,不包含r1;

git apply --stat 0001-minor-fix.patch 检查patch文件;

git apply --check 0001-minor-fix.patch 查看能否应用成功;

git am -s < 0001-minor-fix.patch 应用patch;

// loading…

参考文档

1、Git生成patch和应用patch