工作前忘记 git pull 现在我无法 git push

Des*_*Des 8 git

正如你可能已经猜到的那样,我是 GIT 新手。git pull我在两台不同的计算机上工作,它终于发生了,我忘记在工作前做一个。当我尝试时git push出现错误

![已拒绝] master -> master(先获取)错误:无法将一些引用推送到...

尝试git pull并得到了

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

现在我正在处理的文件有点混乱。我该如何修复它以便我可以再次推送?我应该做什么(除了git pull一开始就不要忘记)才能做到这一点?感谢大家付出的时间和精力。

Mar*_*ger 5

当您拉取时,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
Run Code Online (Sandbox Code Playgroud)

您检查一下,找出一个代码块来解释您在这两个实例中尝试执行的操作,然后将其替换为

This is the result of applying all the changes in a way that work together
Run Code Online (Sandbox Code Playgroud)

不再有冲突标记,而是一段有凝聚力的代码。对每个冲突标记执行此操作,保存文件,git add文件,当status表示所有内容都已解决/暂存时,您可以完成合并。


小智 5

使用 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 服务器,然后创建拉取请求或再次转到您的开发分支,在控制台中合并您的更改new_feature_branch