通过推或拉分享变化?

时间:2018-04-19 08:05:28

标签: git version-control

当我想分享本地更改以便其他用户/其他分支可用时,我的理解是,我有两种可能的方式:

  1. 我可以从本地分支机构推送到相应的远程分支机构 例如从本地/ dev到远程/ dev
    然后我可以签出另一个分支(例如new_branch)并使用

    git pull origin dev更新local / new_branch
    然后推送到remote / new_branch。

  2. 也许我不需要遥控器/ dev。然后我会直接从本地/ dev推送到remote / new_branch。任何其他用户都可以签出new_branch然后使用

    git pull origin new_branch更新本地/ new_branch

  3. 任何人都可以告诉我这是否正确以及结果是否有差异。哪种方法更可取?还有另一种方法吗?

    image share changes

2 个答案:

答案 0 :(得分:0)

让我总结一下目前的情况:

  • 您正在开发本地dev分支。
  • 有远程分支new_branch
  • 应将本地dev的更改推送至new_branch
  • 您的本地devnew_branch都基于master但已分歧(它们都不包含另一个的所有提交)。

在这种情况下,您应rebasedev更改为当前状态new_branch

git checkout new_branch
git pull
git rebase new_branch dev

您应该使用mergerebase命令,这些命令旨在实现您的目标。尝试使用pull实现相同功能并不是最佳选择(尽管它does merge),至少它会阻止您离线进行合并。

答案 1 :(得分:0)

您可以直接将本地dev分支推送到远程new_branch

在推送之前,您应将本地dev分支与远程new_branch 与以下命令进行比较:

git fetch origin new_branch
git log dev..origin/new_branch --oneline

如果git log dev..origin/new_branch --oneline命令的输出显示提交,则表示远程new_branch包含本地dev分支上不存在的提交。否则(输出显示没有提交),您可以直接将本地dev推送到new_branch,如下面的选项2所示。

当您的本地new_branch分支上的dev上的某些更改(输出显示提交)时,您可以根据您的具体情况执行以下任何选项:

选项1:获取从new_branch到本地开发分支的所有更改

如果您想将远程new_branch的更改应用到本地dev分支,可以使用以下命令:

git checkout dev
git pull origin new_branch
git push origin dev:newbranch

选项2:通过放弃某些更改

将dev推入new_branch

如果您想通过丢弃本地开发分支上不存在的更改来将本地dev分支推送到new_branch,则可以执行以下命令:

git checkout dev
git push origin dev:new_branch -f