Py学习  »  Git

无法将git分支更改为主分支

sameer07 • 3 年前 • 1518 次点击  
$ git reflog

/e/eli/flicki ((33bff44...))

33bff44 (HEAD) HEAD@{0}: reset: moving to 33bff443646f2097e07e1067051468990ee16487
b2ed2b7 (origin/main) HEAD@{1}: reset: moving to b2ed2b7277f5e8d6e61bd585f96d763e032e68a9
33bff44 (HEAD) HEAD@{2}: reset: moving to 33bff443646f2097e07e1067051468990ee16487
7a18198 HEAD@{3}: reset: moving to 7a181984a0d6ec9db281d8d1f8e61b91767f5b55
33bff44 (HEAD) HEAD@{4}: commit: new feature
b2ed2b7 (origin/main) HEAD@{5}: rebase (start): checkout b2ed2b7277f5e8d6e61bd585f96d763e032e68a9
f4ca5b4 (main) HEAD@{6}: commit: added analytic page and timestamp table and filter message functionality

$ git branch
* (no branch)
  main

我最后一次直接提交给GitHub文件编辑器,10天后我再次提交,但是
从我的本地计算机上,在推送回购后,它抛出一个错误,然后我使用 git pull rebase origin main 然后用 rm -rf .git/rebase-merge 命令之后,我迷路了,卡住了,无法切换到 main 树枝请带我去 主要的 分支,如您在上面看到的/e/eli/flicki((33bff44…)被卡住了

[编辑@torek:具体来说, git checkout main 生产

error: cannot stat 'lib/flicki_web/templates/analytic': Permission denied

see comment .]

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/132997
 
1518 次点击  
文章 [ 2 ]  |  最新文章 3 年前
torek
Reply   •   1 楼
torek    4 年前

你似乎遇到了几个问题,考虑到问题本身的问题,很难确定解决这些问题的具体顺序。问题包括:

  • 这个 permission denied 错误:这意味着您可能以超级用户的身份运行了一些操作( sudo command (例如)。您可能需要将这些文件的所有权更改回您自己,以便您可以使用它们。但我们不能确切地看到问题是什么,所以我也不能确切地说如何解决它。

  • 这个 rm -rf .git/rebase-merge :这让Git“忘记”您正处于一个不完整的回退过程中。 你过去和现在都处在这个不完整的返利过程中 ,但现在不可能让Git正常地将您从中解救出来,因为您破坏了Git需要的信息。

我认为解决这个问题最有希望的方法是首先解决权限问题。然后你就可以使用 git checkout main ,这将使您或多或少摆脱不完整的重新设置基础,就像您使用了 git rebase --abort .然后你可以重新开始。

或者,您可以完全放弃这个克隆(以及您在这个克隆中所做的任何尚未在GitHub上的提交)。这不是一个好主意 很好 当然是解决方案。如果你能解决权限问题, Alex028502's answer 这可能是一个更好的方法。

Alex028502
Reply   •   2 楼
Alex028502    4 年前

如果我理解正确的话,无论是在你做出的承诺中还是在其他方面,你都拥有你想要的一切 origin ,然后我会这样做:

首先是git fetch,这样你就有了github上所有东西的本地副本

git fetch

如果你有 gitk 你通常会这样做,你可以看到github上所有分支的图片,就像这样

gitk --all &

但如果我理解正确的话,

git reset --hard # get rid of anything local that is going on
git checkout main # go back to main branch
git reset --hard 33bff44 # move your current files and branch to the new feature

(最后一个命令可能不是必需的,但因为我们知道我们想要的是哪一个承诺,所以它不会有什么坏处。但是如果你想要的话,你可以在这样做之前找出它是否有必要。) git rev-parse HEAD 。这将告诉您main是否已经在提交中,或者您是否以某种方式更改了它。)

现在我想你应该回到你开始的地方。gitk应该展示这样的东西

common-base --- commit you made on github (origin/main)
            \-- commit you made locally (main)

然后我就不会使用 git pull .我只需要将我的本地分支转换为一个,包含您在github上的所有内容,以及您在本地的提交,如下所示:

git rebase origin/main

现在,如果这是因为没有冲突而起作用,那么您将比github提前一次提交,并且您可以像以前一样推动您的更改