您可能已经猜到我是GIT的新手。我正在两台不同的计算机上工作,但终于发生了,我忘了在工作之前先做git pull
。当我尝试git push
时遇到错误
! [拒绝]管理员->管理员(先获取) 错误:无法将某些参照推送到...
尝试git pull
并获得
CONFLICT(内容):在Project.html中合并冲突 自动合并失败;解决冲突,然后提交结果。
现在我正在处理的文件有点混乱。我该如何解决它以便再次推动?我应该做些什么(除了开始时别忘了git pull
)来做到这一点?谢谢大家的时间和精力。
答案 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>