英文:
Merge formatting changes using git
问题
我有一个MR请求。差异除了实际代码更改外,还显示了几个换行更改,这很可能是由于我的本地样式配置不同导致的。
some_var = db.get_name(EMAIL).get('active', {}).get('email', "") << previous
some_var = db.get_name(
EMAIL).get('active', {}).get('email', "") << current
我尝试从主分支本地拉取最新内容,然后使用git merge
将这些更改合并到我的分支。但显然,合并不会合并换行和空格更改。我甚至尝试禁用所有本地样式配置,但仍然没有成功。
有没有办法可以合并它们,这样我的MR只显示实际的代码更改,而不显示这些样式上的差异?
英文:
I have a MR request. The diff beside the actual code changes, also shows several line break changes, most probably due to difference in my local styling configurations.
some_var = db.get_name(EMAIL).get('active', {}).get('email', "") << previuos
some_var = db.get_name(
EMAIL).get('active', {}).get('email', "") << current
I tried to locally pull latest from main branch and merge those changes to my branch using git merge
. But apparently merge doesn't merge line breaks and white space changes. I even tried by disable all local styling configuration but still no success.
Is there a way I can merge those too, so my MR only shows actual code changes and not these styling differences?
答案1
得分: 2
> 但显然合并不会合并换行和空格的更改
不正确。
合并将自分支分歧点以来的两侧更改组合起来。如果自分歧点以来,一侧没有做任何更改,而另一侧有更改,那么有更改的一侧将获胜。因此,如果我们最初在分歧点处有以下代码:
some_var = db.get_name(EMAIL).get('active', {}).get('email', "")
并且一侧仍然保持着相同的代码:
some_var = db.get_name(EMAIL).get('active', {}).get('email', "")
但另一侧的最新更改如下:
some_var = db.get_name(
EMAIL).get('active', {}).get('email', "")
然后将其中一个合并到另一个将导致以下结果:
some_var = db.get_name(
EMAIL).get('active', {}).get('email', "")
因为这是发生了更改的部分。
> 所以我的MR只显示实际的代码更改,而不显示这些样式差异?
这是一个稍微不同的问题。让我们谈谈你的 "MR 显示"。
合并请求提议将一个分支合并到另一个分支。为了帮助审查请求,网站显示了与目标分支的 triple-dot diff。这不是在执行合并时将发生的描述;它是描述这个分支将为合并做出的贡献。
现在,你的合并请求建议将你的分支合并到 main
分支。因此,将 main
合并到你的分支应该对合并请求显示没有实际影响。main
的状态与 main
的状态没有区别;因此,从合并提交的结果来看,main
对你的分支的贡献不会出现在你的分支合并请求的显示中。
英文:
> But apparently merge doesn't merge line breaks and white space changes
Not true.
A merge combines the changes on both sides of the merge since the point where the branches diverged. If, since the point where the branches diverged, one side does nothing, and the other side does something, the something wins. So if we originally have, at the point where the branches diverged,
some_var = db.get_name(EMAIL).get('active', {}).get('email', "")
and one branch still has
some_var = db.get_name(EMAIL).get('active', {}).get('email', "")
but the latest from the other branch has
some_var = db.get_name(
EMAIL).get('active', {}).get('email', "")
Then merging one into the other will result in
some_var = db.get_name(
EMAIL).get('active', {}).get('email', "")
because that's what changed.
> so my MR only shows actual code changes and not these styling differences?
That's a slightly different matter. Let's talk about what your "MR shows".
A merge request proposes a merge of one branch into some other branch. To help with review of the request, the web site displays a triple-dot diff with the target branch. This is not a description of what will result when the merge is performed; it is a description of what changes this branch will contribute to the merge.
Now, your merge request proposes to merge your branch into main
.
Merging main
into your branch should therefore effectively have no effect on what the merge request displays. The state of main
is, trivially, not a difference from the state of main
; thus the contribution from main
into your branch as a result of the merge commit does not appear in the display of your branch's merge request.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论