gpt4 book ai didi

Git:在不污染主历史的情况下 merge 分支

转载 作者:太空狗 更新时间:2023-10-29 13:48:40 27 4
gpt4 key购买 nike

好吧:

在 svn 和 bzr 中,我可以分支、提交、 merge ,我的提交历史将如下所示:

41: Theodore R. Smith 2013-09-14 Jump to list by name instead of number.
40: Theodore R. Smith 2013-09-14 [merge] [m] Miscellaneous cleanups.
39.1.4: Theodore R. Smith 2013-09-14 [m] Removed old files.
39.1.3: Theodore R. Smith 2013-09-14 [m] Fixed bug where test could not...
39.1.2: Theodore R. Smith 2013-09-14 [m] Fixed a CSS layout bug from th...
39.1.1: Theodore R. Smith 2013-09-14 [m] Fixed a typo.
39: Theodore R. Smith 2013-09-14 Added a progress bar.
38: Theodore R. Smith 2013-09-14 [merge] Updated the core libraries.
37.1.3: Theodore R. Smith 2013-09-14 Updated HTML Kickstarter.
37.1.2: Theodore R. Smith 2013-09-14 Upgraded to from jQuery 1.8.3 to 2.0.3.
37.1.1: Theodore R. Smith 2013-09-14 Upgraded to jQuery Address v1.6.

如果我不想扩展历史,我可以:

41: Theodore R. Smith 2013-09-14 Jump to list by name instead of number.
40: Theodore R. Smith 2013-09-14 [merge] [m] Miscellaneous cleanups.
39: Theodore R. Smith 2013-09-14 Added a progress bar.
38: Theodore R. Smith 2013-09-14 [merge] Updated the core libraries.

在任何时候,我都可以通过bzr diff -r37.1.2..37.1.3相当轻松地获取单个 merge 提交的差异等,对于实例。

重要的是我的分支历史被保留并且我的主线提交历史没有被次要功能提交污染。

现在,每当我在 git 中进行功能 merge 时,无论是否使用 --no-ff,我都会在我的提交历史记录中得到以下信息:

<hash>: Theodore R. Smith 2013-09-14 Jump to list by name instead of number.
<hash>: Theodore R. Smith 2013-09-14 [merge] [m] Miscellaneous cleanups.
<hash>: Theodore R. Smith 2013-09-14 [m] Removed old files.
<hash>: Theodore R. Smith 2013-09-14 Added a progress bar.
<hash>: Theodore R. Smith 2013-09-14 [m] Fixed bug where test could not...
<hash>: Theodore R. Smith 2013-09-14 [merge] Updated the core libraries.
<hash>: Theodore R. Smith 2013-09-14 [m] Fixed a CSS layout bug from th...
<hash>: Theodore R. Smith 2013-09-14 Updated HTML Kickstarter.
<hash>: Theodore R. Smith 2013-09-14 [m] Fixed a typo.
<hash>: Theodore R. Smith 2013-09-14 Upgraded to from jQuery 1.8.3 to 2.0.3.
<hash>: Theodore R. Smith 2013-09-14 Upgraded to jQuery Address v1.6.

我的问题有很多。

  1. 功能次要提交在主线历史中全部。什么鬼?
  2. 功能次要提交在主线历史中困惑。看起来他们被困在那里是基于他们最初的提交时间,而不是 merge 时间 ;o
  3. 修订 ID 没有直接的数字排名,只有随机哈希值。但我敢打赌这是无法解决的。
  4. 基于此,我完全不知道功能分支在哪里结束或开始。

我想要一个解决方案

  1. 保留所有提交历史记录,并让我区分次要功能提交。这是代码取证所必需的。所以 git rebase 不在画面中,git merge --squash 也是如此。
  2. 不会污染主线提交日志。这可能是最严重的。
  3. 根据 merge 时间,使所有提交保持正确的顺序。拜托,我不能混合匹配次要提交。
  4. Optimally 让我至少可以按正确的顺序查看所有次要功能提交以及主线历史记录,例如 bzr 的工作方式,但我不介意只能通过演练查看此信息-在命令中,例如 git log

感谢您帮助我理解这个过于复杂的程序!

最佳答案

Git 和 Bazaar 的图是完全一样的,我知道因为我写了 Git 官方的 Bazaar bridge,唯一的区别是图是如何通过 log 命令呈现的。

git log 有大量选项,因此可以准确指定您希望如何显示图表。

看起来你想要的是这样的:

git log --oneline --graph

这将以与 bzr log 类似的方式向您显示 merge :

*   eaaec50 Merge git://github.com/git-l10n/git-po
|\
| * 1b5f46f l10n: Add reference for french translation team
| * 6b388fc l10n: fr.po: 821/2112 messages translated
* | 2809258 Merge branch 'sb/mailmap-updates'
|\ \
| * | cdb6b5a .mailmap: Combine more (name, email) to individual persons
| * | 10813e0 .mailmap: update long-lost friends with multiple defunct addresses
* | | 8ed205a git-remote-mediawiki: ignore generated git-mw
| |/
|/|
* | 96cb27a Merge branch 'maint'

你也可以完全忽略“次要提交”

git log --oneline --first-parent

eaaec50 Merge git://github.com/git-l10n/git-po
2809258 Merge branch 'sb/mailmap-updates'
8ed205a git-remote-mediawiki: ignore generated git-mw
96cb27a Merge branch 'maint'

如果您厌倦了输入所有这些选项,您可以配置一个别名:

git config --global alias.l 'log --oneline --graph'

所以你可以只输入git l

关于Git:在不污染主历史的情况下 merge 分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19121749/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com