工作前忘了进行git pull操作,现在我无法进行git push

时间:2019-01-20 17:11:54

标签: git

您可能已经猜到我是GIT的新手。我正在两台不同的计算机上工作,但终于发生了,我忘了在工作之前先做git pull。当我尝试git push时遇到错误

  

! [拒绝]管理员->管理员(先获取)   错误:无法将某些参照推送到...

尝试git pull并获得

  

CONFLICT(内容):在Project.html中合并冲突   自动合并失败;解决冲突,然后提交结果。

现在我正在处理的文件有点混乱。我该如何解决它以便再次推动?我应该做些什么(除了开始时别忘了git pull)来做到这一点?谢谢大家的时间和精力。

2 个答案:

答案 0 :(得分:1)

在撤消时,git发现所做的新更改影响了代码的某些相同部分,同时还受到了尚未撤消的更改的影响。这就是为什么它生成“冲突”消息的原因。

尽管它不是源代码管理中最喜欢的部分,但冲突(和冲突解决)是该过程的正常部分。它们不一定表示做错了什么。如果您一个人工作,并且可以线性发展,那么您可以可以尝试打破纪律,以免发生冲突。但是,虽然git当然可以处理该用例,但git的主要意义在于它还可以处理非线性用例(包括与许多可能会松散协调的贡献者的努力)。

您说的文件“被弄乱了”包含冲突标记。如git提示所示,git希望您编辑受影响的文件以决定文件的外观,并考虑到两次更改它们的尝试。 (如果您执行git status,它将提醒您哪些尚待处理。)

所以您可能会在文件中看到类似的东西

<<<<<<< HEAD
This is the result of the local edits to this section of code
-------
This is the result of the edits you are trying to merge in
>>>>>>> other_branch

您检查了一下,找出了可以说明您在两种情况下都想做的事情的单个代码块,因此将其替换为

This is the result of applying all the changes in a way that work together

没有更多的冲突标记,只有一段连贯的代码。对每个冲突标记执行此操作,保存文件git add,然后status说一切已解决/暂存时,就可以完成合并。

答案 1 :(得分:0)

使用git的最常见方法之一是使用功能分支。这个想法是在每次启动新功能时创建一个新分支,并在完成功能后将其合并到development分支中。理想情况下,您可以通过执行拉取请求将分支合并到development分支。

有时候,您可能会忘记在开始工作之前创建新分支,而在开发分支中创建了一些提交。

在这种情况下,您可以从当前分支创建一个新分支,然后将原始分支重置为原始状态

例如,如果您不应该向development分支添加一些提交,则应该这样做:

git checkout -b new_feature_branch根据您的开发分支创建新分支

git checkout development返回开发部门

git reset --hard origin将开发状态重置为原始状态

git checkout new_feature_branch返回开发分支

git merge development尝试从开发中获取新更改。也可以使用git rebase development完成。

此后,根据您的工作方式,您可以将分支推送到git服务器,然后创建一个Pull Request或再次转到开发分支以在控制台中合并new_feature_branch中的更改< / p>