在 Git 合作开发中一般来说会掌控萨温齐组成部份的产品质量,但有时候却是会把严重错误的标识符合入到远距萨温齐。
尽管能间接格式化远距组成部份, 但有时候捷伊标识符也早已合入,间接格式化后前段时间的递交都要再次操作形式。
所以是不是只去除这类 Commit 的形式呢?能一场 revert操作形式来顺利完成
考量那个范例,他们递交了 6 个版,当中 3-4 包涵了严重错误的标识符须要被格式化掉。 与此同时期望不负面影响到先期的 5-6。
* xp2e0zh (HEAD -> master) version 6
* mpfl76c version 5
* y6gbrdo version 4, 严重错误2版
* 5hzcnfi version 3, 严重错误1版
* uty7ef2 version 2
* hc13k2j version 1
此种情形在项目组协同的合作开发中常很常用:可能将是业务流程或指出其原因不留神合入了严重错误的标识符, 也可能将是合入一两年后才辨认出存有难题。总而言之早已存有先期递交,使直接格式化不太现实生活。
上面的部份就已经开始如是说具体实施形式了,与此同时他们假定远距组成部份是受保护的(不容许 Force Push)。
路子从造成两个捷伊 Commit 撤消以后的严重错误递交。
采用 git revert <commit> 能撤消选定的递交,
要撤消两个个递交能用 <commit1>..<commit2> 句法。
特别注意:这是两个前开后闭区间,即不主要包括 commit1但主要包括 commit2。
git revert –no-commit uty7ef2..y6gbrdo
git commit -a -m This reverts commit uty7ef2 and y6gbrdo
当中 uty7ef2 是 version 2,
y6gbrdo 是 version 4,
这样被去除的是 version 3 和 version 4。
特别注意 :revert 命令会对每个撤消的 commit 进行一场递交,–no-commit 后能最后一起手动递交。
此时 Git 记录是这样的:
* orfi2je (HEAD -> master) This reverts commit uty7ef2 and y6gbrdo
* xp2e0zh version 6
* mpfl76c version 5
* y6gbrdo version 4, 严重错误2版
* 5hzcnfi version 3, 严重错误1版
* uty7ef2 version 2
* hc13k2j version 1
现在的 HEAD(orfi2je)就是他们想要的版,把它 Push 到远距即可。