社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

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

sameer07 • 3 年前 • 1596 次点击  
$ 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
 
1596 次点击  
文章 [ 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提前一次提交,并且您可以像以前一样推动您的更改