【问题标题】:Git Commit: replacement, no mergingGit Commit:替换,不合并
【发布时间】:2021-09-30 00:59:41
【问题描述】:

我有一个最近代码的仓库。该 repo 是在代码版本 5 之后启动的。

版本 1 到 4 位于不同的 SCM 中(版本 5 是通过将版本 4 移植到 git 创建的)。

我的任务是对版本 4 进行更改。
我从版本 5 创建了一个新分支。 我用版本 4 替换了版本 5 中的所有文件(与 git 相关的文件除外)。

(Version 5)
 |
 +---+
 |   |
 |   +--> Version 4 upgraded
 |
 | (Version 6)  

第 4 版不会合并到第 5 版中。

如何在不执行任何代码合并的情况下提交我的分支(到本地服务器)?

【问题讨论】:

  • 不确定是否理解问题:提交并推送您的分支version4。如果您不进行合并,它将不会自动发生
  • 我想要一份提交到本地服务器的 Version4 存储库的副本。没有合并,只是逐字传输。我不想将我的版本 4 与任何版本 5 代码合并。
  • 可能有更好的方法将版本 4 引入 Git,而不是分支版本 5 并替换每个文件。但是您问的是一个非问题:除非 you 合并它,否则不会将任何东西与版本 5 合并。如果您的第 4 版分支已签出( 您签出了吗?),那么该分支上的任何提交都不会成为第 5 版分支的一部分。
  • 不清楚第 4 版甚至需要在同一个存储库中,除非您最终将更改合并到第 5 版中。
  • 你需要一个关于如何使用 Git 的教程。

标签: git commit


【解决方案1】:

如果你不想合并,那就不要合并。如果您需要将分支推送到远程服务器,请执行以下操作:

git push origin version4:version4

将您的本地分支version4 推送到配置为origin 的远程存储库,并将远程存储库中的分支命名为version4

当然,分支需要包含要推送的提交。如果您尚未提交本地未暂存的更改,那么现在是执行此操作的最佳时机:

git add -u # stage all changed and removed files
git add newfiles...
git commit -m 'Committing version 4'

【讨论】:

  • 使用commit怎么样?我习惯使用 GitLab 和合并。
  • @ThomasMatthews 提交是什么意思?据我了解您的问题,您已经删除了所有 v5 代码并将其替换为 v4 代码,然后提交了新状态。我没有理解正确吗?
  • 至此,我已经创建了一个分支,并将内容替换为Version4。我还没有提交新的状态。我没有推。
  • @ThomasMatthews 在这种情况下,提交,然后推送
【解决方案2】:

我不确定我是否正确理解了您的问题,可能需要一些改进,但我会尽我所能提供一些可能会导致可接受的解决方案的想法。

我也会尽量保持 GIT 的简单性,因为我觉得你对 git 并不熟悉(抱歉,如果我错了,只是想提供帮助,你知道的)。 因此,我将描述一种“理论方法”来解决您的情况的可能“解决方案”

Git 可以维护多个“远程”分支,对吧?通常人们习惯使用“master”分支(或者在某些组织中有一个“dev”分支)等。但一般来说 git 可以保留许多远程分支,您可以随时选择在哪个分支上工作.

分支是代码库快照上的指针,可以说是处于指定状态的一系列文件。

所以你有一个你通常使用的“版本 5”分支,它是一个远程分支,你可以从中提取代码、进行修改、提交内容并不时推送,对吗?我想这就是你的日常活动。

现在你提到了两件事:

  1. 版本 5 最初是通过从另一个 CSM 移植到 git 从版本 4 创建的。由此我得出结论,对“版本 5”分支的第一次提交包含与版本 4 相同的文件。然后你做了更多的提交,分支也进化了
  2. 您的任务是对版本 4 进行更改。据此我得出结论,您有两个选择:​​i>
  • 如果您的组织决定将第 4 版保留在另一个 CSM 中,您为什么还要将第 5 版和 git 混为一谈?继续以“旧方式”进行并致力于旧的 CSM。如果您需要在 git 中将其移植到版本 5 - 创建一个补丁并应用它。
  • 如果您真的想将版本 4 也移动到 git,您应该考虑在“版本 5”的第一次提交之外创建一个不同的分支(根据我的假设,这与版本 4 相同)。 然后您应该对该版本进行更改(通过将您的工作提交到该分支)并将其推送作为不同的远程分支(在已经存在的“version5”旁边)

因此,您最终会在“远程”存储库中得到两个不同的分支——“版本 4”和“版本 5”,它们永远不会相互合并。在 git 中它完全有可能。 如果您不想合并 - 那就不要这样做。

让我知道这是否是“理论上”可以接受的情况 - 如果是 - 请说明您在具体的 git 命令方面是否有技术困难,以便我们和我的同事可以提供帮助……我不是很熟悉使用您提到的 gitlab,因此我相信从“普通 git”的角度来看,这个问题是有效的,但同样,如果您提供更多详细信息,人们可能会提出最适合您的具体命令。

【讨论】:

    【解决方案3】:

    首先声明我对分段和合并感到困惑。

    我使用 GitExtensions 将所有版本 4 文件添加到暂存区域,然后提交并推送“更改”。

    我最初的理解是,识别为已更改的文件(在版本 4 和版本 5 之间)将被合并。什么都没有合并。 GitExtensions 显示已更改的文件及其差异。由于第 4 版与第 5 版不同,因此发生了一些变化。

    现在一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-05
      • 2012-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多