繁体   English   中英

git pull起源造成了问题

[英]Git pull origin created a Issue

git newbie在这里。

我在本地仓库中有2个分支a和b。 所以如果我愿意

git branch
*a
b

然后我错误地做了“ git pull origin”,它拉出了一堆文件并弄乱了我在分支a上的工作环境。

我想退回去。 我想撤消“ git pull origin”-我该怎么做?

我尝试了“ git pull origin a”,但随后它给了我数百个要合并的文件,并且在一大堆文件之后给出了以下消息:

无法进行拉取,因为您有未合并的文件。 请在工作树中对其进行修复,然后根据需要使用'git add / rm'来标记分辨率,或使用'git commit -a'。

我尝试了“ git reset --hard”,但这没有带来我想要处理的文件。 我该怎么解决?

一条可能有用的信息:在执行“ git pull origin”之前,对“ git log”的响应仅是我团队的提交(仅在该分支上工作),但是现在我做了“ git pull origin”之后,结果“ git log”是公司中每个人的状态。

请帮我。 谢谢

除非您已将pull配置为在远程更改的基础上重新设置本地更改,否则使用pull会将您的更改与远程的提交合并。 只要您没有进行任何进一步的提交,这都会使HEAD ref指向由pull操作创建的合并提交。 该提交将有两个父级,提交是合并之前的状态,而提交是合并之前远程分支的状态。 可以分别通过名称HEAD^HEAD^2引用这些名称。

您可以使用以下命令返回拉动之前的本地状态:

git reset --hard HEAD^

这将消除您必须对跟踪文件进行的所有未提交的更改,如果您要保留此类内容,则可以使用git stash保存它们。

最好在重置之前运行git branch savepoint以保存当前状态,以防万一重置使情况变得更糟。

这是reflog的完美用例。 刷新日志存储您的位置以及分支机构的主管过去的位置的历史记录。 运行git reflog ,您将看到。 在您的情况下,正确的命令可能是git reflog a 这将显示你的过去状态a分支。 寻找正确的行,然后执行git reset

如果您只是执行拉取而没有执行其他操作,则命令为git reset --hard a@{1} 这意味着“恢复当前当前分支的状态, a一个改变以前”。 如果您进行了更多更改,则可能必须走得更远(例如git reset --hard a@{4}

这比去HEAD^^^^^…更方便和可控制。

尝试重新设置waaaaay并拉动分支

git reset --hard HEAD^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

(如果需要返回更多提交,请添加更多^)

然后拉

git pull origin a

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM