代码之家  ›  专栏  ›  技术社区  ›  Wernight

如何推/拉git-rebase

  •  16
  • Wernight  · 技术社区  · 15 年前

    我想使用 git rebase 以便干净地合并主分支中的一个功能(提交较少或至少在更改日志的顶部)。注意 我是唯一一个在仓库工作的人 .

    读后 Git workflow and rebase vs merge questions 我发现 GIT重碱 会很好,像迈卡一样,我想 git push 仅仅因为 我在不同的地方研究它们 (例如:我的笔记本,我的家,某个地方的另一台电脑…)

    所以这里有两个解决方案(双向丑陋合并):

    1. 使用 git push -f 推,然后拉其他机器,但如何干净地得到其他机器的最新版本?
    2. 使用merge合并对feature branch、git push/pull的主变更,并在成熟后执行单个rebase(在一个或多个干净提交中)

    (2)如下:

    git co -b feature-a
    ... change files
    git push origin feature-a
    ... moving to another PC
    git pull origin feature-a
    ... change files
    git merge master
    ... change files (not the "special rebase")
    git rebase master
    git co master
    git merge feature-a
    git branch -d feature-a
    git push origin :feature-a
    

    你认为哪种解决方案可行?到目前为止,我还没有尝试过其中的任何一种(主要是因为担心我的日志会变得更乱)。

    2 回复  |  直到 15 年前
        1
  •  11
  •   Greg Bacon    15 年前

    记住 git rebase 重播更改并创建新提交。通过重新调整平衡和用力推满整个地方,你会碰到工具的纹理。注意如何 "Recovering from an upstream rebase" 剖面图 GIT重碱 文档开始(增加重点):

    重新调整(或任何其他形式的重写)其他人基于其工作的分支是一个坏主意:任何下游的分支都必须手动修复其历史。本节从下游的角度解释如何进行修复。 然而,真正的解决办法是首先避免对上游进行再平衡。

    即使您是唯一的开发人员,在其他克隆中工作时,您仍然是其他人(从一个repo的角度来看)。如您所见,此工作流非常麻烦。

    让你的零钱在树枝上煮。当一个分支准备好进入黄金时段时, 然后 重新设置基码,将其合并到master,并删除其主题分支。如果你保持分支机构的生命周期短和范围窄,你的生命将是最简单的。

        2
  •  13
  •   krosenvold    15 年前

    我总是确保从我离开的任何一台机器上提交和推送所有东西。

    当我到达其他机器时:

     git fetch -v
     git checkout mybranch # Already checked out with old HEAD
     git reset --hard origin/mybranch
    

    这很好,因为我知道不同计算机上的另一个“我”在我离开之前会不断地提交和推送(因此我到达的计算机上没有未经处理的更改)。