所以我分叉了一个项目,并进行了一些更改并将其推送到origin/master.我不打算将这些更改发送回上游.到目前为止一切都很好,但是现在我有一些改变,我想推进上游.
我可以在不同的分支中重新绑定到上游,并提交到该分支吗?我可以从我的分支机构提交这些更改吗?我是否可怕地破坏了我的回购?
不,没有破坏.只需从上游/主站分支,在那里进行提交,然后你可以推送(或拉取请求)那些整齐地适合上游/主站的提交.
如果你有A --- B --- C,其中upstream/master在A,master在C,意味着B和C是你不想向上游发送的提交,那么:
git checkout -b to-send-upstream A
# work, work, work
# commits
git log A..HEAD # this will be the commits to send upstream
Run Code Online (Sandbox Code Playgroud)
如果你有提交你不会发回master,那么如果你将它们移动到另一个分支并让你的master与upstream/master保持同步,那么跟踪它可能会更简单:
git branch my-stuff-not-sent-upstream
git reset --hard A # will wipe out local changes!
git push origin master -f # can lose history if a shared remote!
git push origin my-stuff-not-sent-upstream
Run Code Online (Sandbox Code Playgroud)
以"我 - 东西 - 不发送上游",并设置主产地和/主,将有效取代"大师"回到同一提交上游/大师.
假设提交A,B,C是您的私人更改,并且提交1,2,3是您想要推送的,您的历史将如下所示:
(origin/master)
/
.... o - A - B - C - 1 - 2 - 3 (master)
\
(upstream/master)
Run Code Online (Sandbox Code Playgroud)
现在你想将1,2,3从上游移到一个新的分支:
git checkout master
git checkout -b upstream
git rebase origin/master --onto upstream/master
Run Code Online (Sandbox Code Playgroud)
这样做是切换到一个名为upstream当前位置的新分支master.然后它在引用提交后重新提交1,2,3 upstream/master.
手术后您将拥有:
1' - 2' - 3' (upstream)
/
/ (origin/master)
/ /
.... o - A - B - C - 1 - 2 - 3 (master)
\
(upstream/master)
Run Code Online (Sandbox Code Playgroud)
现在,您将准备将上游分支推送到上游远程.
| 归档时间: |
|
| 查看次数: |
11518 次 |
| 最近记录: |