【问题标题】:Git Branch Diversion Issue and workflowGit 分支转移问题和工作流程
【发布时间】:2013-01-08 04:25:47
【问题描述】:

我怀疑我遵循的工作流程是否正确,或者我是否搞砸了情况。

我正在本地和远程创建的分支上开发一项新功能。我是唯一一个为此工作的人。

我使用以下方法创建它:

git checkout -b rotation upstream/master

现在我进行了更改并提交:

git commit

并将更改推送到远程分支:

git push origin rotation

我的问题从现在开始。我此时输入了git fetch upstream

现在当我git status 我明白了,

vinayan@vinayan-MS-7623:~/QgisGitWorking/Quantum-GIS$ git status
# On branch rotatation
# Your branch and 'upstream/master' have diverged,
# and have 4 and 5 different commits each, respectively.
#
nothing to commit (working directory clean)

我对分支分歧消息感到困惑。

  1. 这里有什么问题吗?
  2. 如果我继续,会有问题吗 在这里提交更改并推送到上游?
  3. 如果有问题,最好的纠正方法是什么?

我对 git 很陌生。以前我只用过VSS。

编辑:

vinayan@vinayan-MS-7623:~/QgisGitWorking/Quantum-GIS$ git remote -v
origin  git@github.com:vinayan/Quantum-GIS.git (fetch)
origin  git@github.com:vinayan/Quantum-GIS.git (push)
upstream    git://github.com/qgis/Quantum-GIS.git (fetch)
upstream    git://github.com/qgis/Quantum-GIS.git (push)

【问题讨论】:

标签: git


【解决方案1】:

您将rotation 推送到origin,但您从upstream 获取。这是两个不同的遥控器,因此是两个具有不同历史的不同存储库。

# list remotes
git remote -v

【讨论】:

  • 所以我搞砸了..我该怎么做才能撤消这个?从那以后我就再也没有做过工作了..
【解决方案2】:

upstream 的想法是允许您自己的 repo 在 upstream repo 的最新版本之上重新定位。
这样,您可以随时了解上游的最新信息,同时将您自己的贡献推送到“origin”(这是一个分支:您拥有的 upstream 存储库的克隆)。

您可以推送到origin。你不能推送到upstream(你不是贡献者)
见“What is the difference between origin and upstream in GitHub?

在你的情况下,我会推荐,因为 upstream/master 有自己的历史(与你的更改平行)

git checkout rotation
git rebase upstream/master
git push -f origin rotation

请注意,您在 fork origin/rotation 上强制推送(即重新创建更改的历史记录):如果没有其他贡献者已经从您的 fork 中拉出,这应该不是问题。
您在rotation 上的工作将基于最新的upstream/master,这将简化您可能想做的future pull request

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 2016-05-23
    • 2016-07-29
    • 1970-01-01
    • 2019-10-26
    相关资源
    最近更新 更多