当我想分享本地更改以便其他用户/其他分支可用时,我的理解是,我有两种可能的方式:
我可以从本地分支机构推送到相应的远程分支机构
例如从本地/ dev到远程/ dev
然后我可以签出另一个分支(例如new_branch)并使用
git pull origin dev
更新local / new_branch
然后推送到remote / new_branch。
也许我不需要遥控器/ dev。然后我会直接从本地/ dev推送到remote / new_branch。任何其他用户都可以签出new_branch然后使用
git pull origin new_branch
更新本地/ new_branch
任何人都可以告诉我这是否正确以及结果是否有差异。哪种方法更可取?还有另一种方法吗?
答案 0 :(得分:0)
让我总结一下目前的情况:
dev
分支。new_branch
。dev
的更改推送至new_branch
。dev
和new_branch
都基于master
但已分歧(它们都不包含另一个的所有提交)。在这种情况下,您应rebase
将dev
更改为当前状态new_branch
。
git checkout new_branch
git pull
git rebase new_branch dev
您应该使用merge
和rebase
命令,这些命令旨在实现您的目标。尝试使用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
上的某些更改(输出显示提交)时,您可以根据您的具体情况执行以下任何选项:
如果您想将远程new_branch
的更改应用到本地dev
分支,可以使用以下命令:
git checkout dev
git pull origin new_branch
git push origin dev:newbranch
如果您想通过丢弃本地开发分支上不存在的更改来将本地dev
分支推送到new_branch
,则可以执行以下命令:
git checkout dev
git push origin dev:new_branch -f