首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >github fork :你的分支是提前5个提交的,如何在不推送的情况下清理这个分支

github fork :你的分支是提前5个提交的,如何在不推送的情况下清理这个分支
EN

Stack Overflow用户
提问于 2015-03-14 21:46:57
回答 2查看 9.4K关注 0票数 28

我在github上创建了一个项目,以便发送拉取请求。问题是我的方法是非常...脏的。

我在fork的本地副本上工作,为我的修改创建了一个分支,并将其合并到master上。然后,我在github fork上推了master,以便创建一个拉取请求。

问题是,最近,我的拉取请求被拒绝了。所以现在我比原来的主节点提前了5次提交。为了与原始存储库保持平衡,有什么解决方案?

我是否必须签出新分支中的上游master,并使用它创建新master (如何操作?)

或者更好的方法是删除我的github fork (我之前已经接受了提交)并重新创建它(你可以在这里看到github repos )https://github.com/cedlemo/ruby-gnome2

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-14 21:53:05

首先,你应该使用always make your PR form a branch,而不是master

master用于镜像upstream/master,其中'upstream‘是您派生的原始存储库的名称。

对于您的情况,请确保upstream存在,创建分支以引用当前修补程序,然后将master重置为upstream/master

之前:

代码语言:javascript
复制
  z--z (upstream/master, with new commits)
 /
z--y--y--y (master with local patches, origin/master)

记住当前的工作:

代码语言:javascript
复制
git checkout master
git checkout -b mybranch
git remote add upstream /url/original/repo
git fetch upstream

# reset master to upstream/master
git checkout master
git reset --hard upstream/master
git push --force

  y--y--y (mybranch)
 /
z--z--z   (master, upstream/master, origin/master)

# replay the patches (even they are rejected for now) on top of master
git checkout mybranch
git rebase master
git push -u origin mybranch

        y'--y'--y' (mybranch, origin/mybranch)
       /
z--z--z   (master, upstream/master, origin/master)

这里:git reset --hard upstream/master将在更新后的upstream/master上重置master头,以便主存储反映与原始存储库中的完全相同的历史记录。

但是,由于一些提交以前在master上完成,并在分支(origin/master)上推送,因此您需要用新的master状态替换该历史记录。因此才有了git push --force

Rebasing允许那些当前的补丁基于原始repo的最新提交。

票数 69
EN

Stack Overflow用户

发布于 2018-07-26 17:46:34

我使用这个小shell脚本将分支重置为它的原点

代码语言:javascript
复制
function git_branch_reset_origin() {
  branch_name="$(git symbolic-ref HEAD 2>/dev/null)"
  branch_name=${branch_name##refs/heads/}
  git checkout -b foo
  git branch -D ${branch_name}
  git checkout ${branch_name}
  git branch -D foo
}

简而言之,它移动到一个新的'foo‘分支,删除您所在的分支,然后再次将其签出。检出本地没有的分支将在原始分支的位置生成该名称的新本地分支。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29049650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档