- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试清理大量主题分支,主要是为了 master
的分支概述由于存在相同的更改,在 github 中不再在不活动的主题分支中显示虚假的“n ahead”指示符。
如果没有这些虚假的指标,这个概览页面将提供一个很好的方式来一目了然地查看是否有来自旧主题分支的任何提交被无意中遗漏并且没有 merge 回 master
中。 .
在下图中,Y
是分支中的提交 topic
后来应用于master
作为Y'
(因此它们具有不同的 sha1 哈希值,但具有相同的补丁 ID)。
A --- B --- C --- Y' --- E <-- master
\
X --- Y <-- topic
git cherry master topic
适当报告:
- Y
但是如果我尝试通过发出 git merge topic
来清理它来自 master
, 自更改后我遇到了 merge 冲突 E
在 master
此后改变了应用补丁的上下文。
有没有办法告诉master
“嘿,你真的有Y
了,所以你可以停止报告你没有。”? (能够以自动/以编程方式应用的方式执行此操作是关键。)
最佳答案
通过将 --cherry-pick 选项传递给 git log,您可以看到分支之间修订的有效差异。
我最喜欢的咒语运行:
git log --left-right --graph --cherry-pick --oneline branch1...branch2
(我的别名为git lr
)。
来自 the man page :
--cherry-pick
Omit any commit that introduces the same change as another commit on the "other side" when the set of commits are limited with symmetric difference.
For example, if you have two branches, A and B, a usual way to list all commits on only one side of them is with
--left-right
(see the example below in the description of the--left-right
option). It however shows the commits that were cherry-picked from the other branch (for example, "3rd on b" may be cherry-picked from branch A). With this option, such pairs of commits are excluded from the output.--cherry-mark
Like
--cherry-pick
(seebelowabove) but mark equivalent commits with=
rather than omitting them, and inequivalent ones with+
.
为了永久地让 git 不再担心实际上是精心挑选的提交,您总是可以 merge 另一个分支。 merge 提交将被标记为先前提交和 merge 修订树的尖端的子修订。
这告诉修订树遍历在那个点停止遍历历史。这样做只有在 merge 来自“其他”分支的修订版 IFF 时才安全,如果您 ** 知道它的所有父级已被 merge (就您希望它们 merge 而言)。
还有一些way to use grafts .这真的意味着你会告诉 git - out of band 1 - 某个修订版本是另一个修订版本的子版本,而不必实际 rebase 到它/从它 merge 。
<子> 1例如,带有成对的 sha1 散列的手写文件:)
积极的一面是,您不必重写历史就可以让它工作。但是,如果您愿意,可以使用 git filter-branch
to make the grafts permanent .那时您不再需要 grafts 文件,但是当然,您将不得不重写历史记录(并且可能使已发布的修订 ID 无效)。
<子>
如果其他所有方法都失败了,有时您可能会被经常想要 merge 的远程(主题)分支所困,但有些差异是您根本不想接受的。这些可能会一遍又一遍地导致相同的 merge 冲突。
在这种情况下,我将指向 git-rerere (Reuse recorded resolution of conflicted merges)这可以使生活变得更加轻松,尽管更加复杂
关于git - git 中跨分支的等效更改的簿记清理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6631649/
在我的 API 中,我有一个类模板 template struct MyType .我的 API 的用户可以实例化模板 MyType有几种类型(例如 MyType, MyType, MyType 。是
我读过 ( http://www.nobugs.org/developer/win32/debug_crt_heap.html ),除了请求的内存块之外,HeapAlloc 还分配了一些内存用于簿记。
我有一个 Action 类,它为我的每个设备输入类型保存一个成员变量。它们在构造后被初始化,但我不保证它们会被初始化。 class Action { private: KeyboardButto
我是一名优秀的程序员,十分优秀!