0

我的商店有一个愚蠢的设置,一个人代码审查和推送,而其他人拉,在本地进行更改,然后将更改发送给一个人进行审查,然后推送。

我们都有两个本地分支,“main”和“work”(“main”是静态的,我们在“work”中工作)。

我需要知道如何执行以下步骤:1)用原点替换我的“main” 2)将我的更改从“work”合并到新更新的“main”中 3)将“main”复制回“work”

这些步骤可以按任何顺序进行,但我需要完成保持最新并在本地工作的基本想法。我一直在阅读文档,但我害怕犯错误。任何帮助表示赞赏。

4

2 回答 2

1

首先,你不应该害怕犯错误。在使用生产代码之前,设置一些测试存储库并查看事情是如何工作的。

用原点替换我的“主要”

假设您的本地main分支与远程分支匹配main,您应该能够:

git checkout main
git pull

这将使您的本地分支与远程分支保持同步。

将我从“work”的更改合并到新更新的“main”中,并将“main”复制回“work”

您之前说过您不会对“主”分支进行任何更改。

将远程更改导入本地main分支后,您可以像这样将它们合并到您的work分支中:

git checkout work
git merge main

这是一个非常典型的工作流程:如果您从上游源跟踪代码并维护一组本地补丁,您会看到几乎完全一样的东西。

于 2012-08-02T01:16:36.247 回答
-1

回答原始问题之前的一件事:查看http://code.google.com/p/gerrit/ 这是一个托管代码审查,它简化了很多“谁可以在 master 中登陆代码以及谁进行审查”工作流程。

回到主题,让我们从几个假设开始:

  • 你的工作副本中有两个分支,'main' 和 'work'
  • 'main' 跟踪 origin/main,'work' 仅是本地的,永远不会被推送到源服务器
  • 让我们称审稿人的遥控器为“审稿人”

这是工作流程:

  1. 遥远的家伙在原产地登陆东西
  2. 每个人都想把这些改变拉进来,git fetch origin
  3. 假设这是一个快进,所以你可以合并分支
    • git checkout main
    • git merge origin/main
  4. 有一些替代方法可以达到与 2/3 相同的结果,但我更喜欢将它们分开以便我有更大的灵活性,尽管这个假设您最初设置 main 来跟踪 origin/main
    • git checkout main
    • git pull --rebase
  5. 现在更新您的工作分支,这会在新主节点之上重播您的更改,让您有机会解决沿途的任何冲突
    • git checkout work
    • git rebase -i master
  6. 将您的更改发回给审核人员,大意是这样的,您可能已经弄清楚了这部分。
    • git push review-guy work:my-new-work-as-a-branch
于 2012-08-02T01:16:23.050 回答