如何修复我损坏的本地 git 回购分支并重新设置我的 Github 分支?
How to repair my corrupted local git repo branch and rebase my Github fork?
我是 git 的新手,我仍在尝试全面了解分叉、起源、上游和分支的工作方式。
我在 Github 中创建了一个分支,创建了分支的本地副本,确定了我的上游和原始分支,并创建了一个 'newbranch'。我在本地 'newbranch' 上进行了开发,将其推送到我在 Github 上的分支,并创建了一个拉取请求返回到上游存储库。然后我直接在 Github 上对我的 fork 进行了一些更改。后来,我在没有从 Github 更新的情况下对本地副本进行了更改。我通过从 Github 分支中的 'newbranch' 合并解决了这个问题。
到目前为止,还不错。但是,我现在一直在尝试从上游仓库更新我的分支,但 运行 遇到了麻烦。
在提交对我的 'newbranch' 的更改并将它们推送到分叉后,我执行了以下操作:
git fetch upstream
git checkout master
git merge upstream/master
这导致了数以千计的冲突。我进行了重置以取消合并,但分支中仍有数千个修改过的文件,我不知道如何清理它们。
我从上游仓库的 'devel' 分支创建了 'newbranch'。如果你想知道我为什么要搞乱 'master' 分支,那就是我们两个。
我的 Github 分支说我的 'devel' 分支在上游回购之后有 40,000 次提交。我想清理我的本地仓库,从上游仓库更新我的本地 'devel' 和 'newbranch' 分支,并将这些更改同步到我的 Github 分支。
非常感谢任何帮助摆脱困境的人。
如果你想摆脱困境,有几个简单的方法
1) 从上游创建一个新分支,删除之前的分支,重命名当前分支,然后强制推送到你的fork。
2) git reset --hard HEAD~<some x number of commits>
,然后通过 git pull
快进当前分支,然后 cherry-pick
通过访问 reflog
从历史记录中提交你想要的
看来我是按照Github的说明来的,没有足够清晰的理解。可能是因为 'newbranch' 的创建和 rebase 的问题之间有相当长的时间。
'newbranch' 是从 devel 创建的,而不是 master。因此,当我尝试将 'upstream/master' 与 'newbranch' 合并时,出现了数以千计的冲突。我可能已经用一个简单的 git reset --hard
命令修复了我的 repo,但这是我所做的,而不是:
git clone https://github.com/MYACCOUNT/REPO.git
git remote add upstream https://github.com/UPSTREAM/REPO.git
git fetch upstream
git checkout devel
git pull upstream devel
git push
git checkout vhosts-package
git rebase devel
git push
我的更改已经提交,因此无事可做。就像我说的那样,硬重置可能会清除它,但这很有效,我很高兴。
希望这对某人有所帮助。
我是 git 的新手,我仍在尝试全面了解分叉、起源、上游和分支的工作方式。
我在 Github 中创建了一个分支,创建了分支的本地副本,确定了我的上游和原始分支,并创建了一个 'newbranch'。我在本地 'newbranch' 上进行了开发,将其推送到我在 Github 上的分支,并创建了一个拉取请求返回到上游存储库。然后我直接在 Github 上对我的 fork 进行了一些更改。后来,我在没有从 Github 更新的情况下对本地副本进行了更改。我通过从 Github 分支中的 'newbranch' 合并解决了这个问题。
到目前为止,还不错。但是,我现在一直在尝试从上游仓库更新我的分支,但 运行 遇到了麻烦。
在提交对我的 'newbranch' 的更改并将它们推送到分叉后,我执行了以下操作:
git fetch upstream
git checkout master
git merge upstream/master
这导致了数以千计的冲突。我进行了重置以取消合并,但分支中仍有数千个修改过的文件,我不知道如何清理它们。
我从上游仓库的 'devel' 分支创建了 'newbranch'。如果你想知道我为什么要搞乱 'master' 分支,那就是我们两个。
我的 Github 分支说我的 'devel' 分支在上游回购之后有 40,000 次提交。我想清理我的本地仓库,从上游仓库更新我的本地 'devel' 和 'newbranch' 分支,并将这些更改同步到我的 Github 分支。
非常感谢任何帮助摆脱困境的人。
如果你想摆脱困境,有几个简单的方法
1) 从上游创建一个新分支,删除之前的分支,重命名当前分支,然后强制推送到你的fork。
2) git reset --hard HEAD~<some x number of commits>
,然后通过 git pull
快进当前分支,然后 cherry-pick
通过访问 reflog
看来我是按照Github的说明来的,没有足够清晰的理解。可能是因为 'newbranch' 的创建和 rebase 的问题之间有相当长的时间。
'newbranch' 是从 devel 创建的,而不是 master。因此,当我尝试将 'upstream/master' 与 'newbranch' 合并时,出现了数以千计的冲突。我可能已经用一个简单的 git reset --hard
命令修复了我的 repo,但这是我所做的,而不是:
git clone https://github.com/MYACCOUNT/REPO.git
git remote add upstream https://github.com/UPSTREAM/REPO.git
git fetch upstream
git checkout devel
git pull upstream devel
git push
git checkout vhosts-package
git rebase devel
git push
我的更改已经提交,因此无事可做。就像我说的那样,硬重置可能会清除它,但这很有效,我很高兴。
希望这对某人有所帮助。