如何强制git将更改合并为;“局部修改”;作检讨之用?
我想做的是将两次提交之间的更改合并到当前沙盒中作为本地更改。这可能而且容易做到吗 我知道您可以使用diff,但它不像查看本地更改那样简单。本地更改允许您在查看过程中轻松还原/修改/添加更改。我最接近我想要的是: 1在创建分支之前签出提交 2.创建一个新的临时分支机构(仅出于安全考虑) 3在分支的开始和结束之间创建补丁,如如何强制git将更改合并为;“局部修改”;作检讨之用?,git,merge,Git,Merge,我想做的是将两次提交之间的更改合并到当前沙盒中作为本地更改。这可能而且容易做到吗 我知道您可以使用diff,但它不像查看本地更改那样简单。本地更改允许您在查看过程中轻松还原/修改/添加更改。我最接近我想要的是: 1在创建分支之前签出提交 2.创建一个新的临时分支机构(仅出于安全考虑) 3在分支的开始和结束之间创建补丁,如 git diff f9802a30b589503cd61e..4f6ee3fb127d958b5621 --patience --ignore-space-at-eol &g
git diff f9802a30b589503cd61e..4f6ee3fb127d958b5621 --patience --ignore-space-at-eol > diff.txt
4将补丁应用于本地沙箱(仍在临时分支中)
不过,这种方法存在一些问题。(A) 这是非常缓慢和痛苦的。(B) 我收到大量空白警告。(C) 可能这不是解决问题的方法;)
有更好的方法吗?(在开始之前,我假设git状态是干净的,以免丢失任何本地更改。)
既然您已经创建了一个临时分支,为什么不使用git merge othercommit
在othercommit中进行合并呢?当然,您的工作树和索引将根据合并的结果进行更新——它将创建一个新的提交,但是如果您不喜欢,您可以签出原始分支以返回。如果您想要进行额外的更改来修复合并的结果,那么无论如何,应该在合并的基础上进行额外的提交
或者,您甚至不需要创建临时分支—您可以始终使用git reset--hard
(小心!)将分支移回原来的位置
顺便说一句,在(B)上,您可以将--whitespace=nowarn
传递到git apply
以停止这些警告,或者通过更改配置选项core.whitespace
来更改被认为是空白错误的内容
以上是我的建议,但要回答您提出的问题的确切形式,您可以尝试以下方法: 您可以使用以下方法进行合并,而无需提交结果:
git merge --no-commit othercommit
。。。它将使用合并结果更新工作副本和索引(暂存区域),但不会创建提交。然而,这是有点风险的——如果你继续进行父母中任何一方都没有的进一步更改,然后提交,你就会创建,这可能会在以后检查历史时引起各种问题
类似地,如果您只想了解合并的效果,可以执行以下操作:
git merge --squash othercommit
。。。这会将您的工作树更改为合并的结果,并暂存所有这些更改,但不会创建提交。但是,与--no commit
不同的是,如果您继续进行commit,则不会将其他commit
记录为新commit的父级。(在开始之前,我假设git状态是干净的,以免丢失任何本地更改。)
既然您已经创建了一个临时分支,为什么不使用git merge othercommit
在othercommit中进行合并呢?当然,您的工作树和索引将根据合并的结果进行更新——它将创建一个新的提交,但是如果您不喜欢,您可以签出原始分支以返回。如果您想要进行额外的更改来修复合并的结果,那么无论如何,应该在合并的基础上进行额外的提交
或者,您甚至不需要创建临时分支—您可以始终使用git reset--hard
(小心!)将分支移回原来的位置
顺便说一句,在(B)上,您可以将--whitespace=nowarn
传递到git apply
以停止这些警告,或者通过更改配置选项core.whitespace
来更改被认为是空白错误的内容
以上是我的建议,但要回答您提出的问题的确切形式,您可以尝试以下方法: 您可以使用以下方法进行合并,而无需提交结果:
git merge --no-commit othercommit
。。。它将使用合并结果更新工作副本和索引(暂存区域),但不会创建提交。然而,这是有点风险的——如果你继续进行父母中任何一方都没有的进一步更改,然后提交,你就会创建,这可能会在以后检查历史时引起各种问题
类似地,如果您只想了解合并的效果,可以执行以下操作:
git merge --squash othercommit
。。。这会将您的工作树更改为合并的结果,并暂存所有这些更改,但不会创建提交。但是,与“无提交”不同,如果您随后继续提交,则不会将“其他提交”记录为新提交的父级。您能否绘制回购当前状态的ascii图,并解释您想要的方式?您能否绘制回购当前状态的ascii图,然后用这种方式解释你想要什么?