Git作为程序员必备的技能,有些命令长时间不用就慢慢遗忘了比如rebase -i
、branch -f
,花了一个小时完了把游戏,强化这些命令…游戏入口传送门
我已经通关啦,哈哈哈哈…
玩游戏的过程中又重新回顾的知识点:
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…