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

在家和办公室交替工作的良好git过程

git
  •  4
  • Aubin  · 技术社区  · 6 年前

    我一半时间在家工作,一半时间在办公室工作。每项任务都必须在同行评审后,分成专门的、独立的、分支的、合并的。

    我们的项目由Bitbucket支持,我们也使用Jira和Jenkins。

    我只使用一个远程存储库和两个本地存储库。

    我有一个反复出现的问题:我(@home)和我(@agency)…之间发生了一些冲突。

    以下是我的流程:

    星期一,在办公室,在一个名为“jamesbond007”的分支中,这个分支来自master:

    git add --all
    git commit [--amend]
    git push [-f] origin remote/JamesBond007
    

    星期二,在家里:

    git checkout master
    git pull
    git checkout JamesBond007
    git pull --rebase origin master
    

    星期三,在办公室:

    git checkout master
    git pull
    git checkout JamesBond007
    git pull --rebase origin master   **<-- conflict: git mergetool command needed!!!**
    

    我的解决方法:

    rm -fr repo
    git clone ssh:repos-url
    

    我的错误在哪里,如何在不发生冲突的情况下将代码从两个本地repo推送到/从服务器推送到?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Dogweather    6 年前

    我有一个非常相似的设置,从来没有合并冲突:我基本上做你做的事,但我从不使用 rebase 以任何方式,直到可能的最后,作为融合到掌握的一部分。

    Concretely:

    • commit push 在我工作的时候,经常使用 origin 作为备用工具。
    • 我可以很容易地切换到另一台计算机,只要做一个默认的快速前进 pull/fetch 然后去那里工作。
    • 最后,当在pr中检查代码时,我会根据项目的样式执行某种合并、重设基址或挤压/合并。

    我知道这不是首选的“专家”工作方式,但它有两个惊人的好处:

    1. 我在多台开发计算机(这里是台式机,那里是笔记本电脑或两台…)之间切换,完全没有任何想法。只是一个 git pull 我要走了…
    2. 我从不冲突。
        2
  •  0
  •   miaout17    6 年前

    当您在多个地方将工作分支重新设置为master时,就会出现问题。

    每项任务都必须在同行评审后,分成专门的、独立的、分支的、合并的。

    有多种方法可以让它工作(取决于您对git的熟悉程度)。基于此,我假设您必须重新平衡提交日志。

    我建议你对你的工作流程做一个简单的改变:每天结束时,总是把 origin 删除你的本地分支。

    # Assuming you're on JamesBond007 local branch
    git push [-f] origin remote/JamesBond007
    git checkout master
    git branch -d JamesBond007
    

    这样,你就可以确定你推送了本地删除的所有内容。下一次回到同一台计算机时,不会遇到本地分支具有不同的基本提交的问题。