刚开始学习git,有个疑问.小A和小B都从远程git clone了最新的版本。两个人都在本地对代码进行了修改。小A先提交了代码。这时小B再提交代码,会发生什么事情呢?是会覆盖小A提交的代码还是不让提交呢?
先回答问题:
小A先提交了代码,远程库和小A得本地库同步,假设为 0 -> a此时小B的本地库为 0 -> b,远程库的版本比本地库较新,git会拒绝推送并报错。
git 会要求 git pull 更新本地库,而 pull 操作相当于自动的 fetch 和 merge 操作,会试图自动将远程库合并入本地库,在有冲突时再要求手动合并。
会提示小B先pull 代码,如果小B修改的代码那一行跟小A的一样,那个文件那一行会提示冲突,这里需要手动合并,如果修改的不一样,Git会自动合并相关代码
如果是改的不同地方 可以直接merge 如果改了相同的地方 git会自动把两个版本的代码放到文件里面 等你选
小B先吧小A的代码 pull 回来,然后合并,然后才能再提交。
每次开发完成后 先add commit 然后pull远程代码 有冲突的话尽快解决 然后再push 当然我说的是不考虑分支的情况下
有个习惯,我觉得听不错的,就是每次提交代码的时候,你要先pull 再push 这样很大程度上会避免报错,至于解决冲突,这是代码的问题,报错后文件会显示红色,有个分割线,上面的是人家的代码,下面的是你自己的代码,根据需要取舍。
看标题我就醉了,既然是冲突,那肯定是要手动解决的。
工具判断不了如何合并代码,才会冲突。如果Git自己能解决冲突了,那就不需要人来写代码了。
小B在提交代码时应先git pull更新代码,如果代码有冲突就会出现类似这样的错误:
error: Your local changes to the following files would be overwritten by merge: ****/****/**.php Please, commit your changes or stash them before you can merge.
这时候git要求你先手动修改冲突,找到提示的文件,冲突的部分就会出现《《《《《来分隔代码改变的部分,需要修改那部分,就看你怎么选了。
git不会自己解决冲突,只会试着去合并patch,如果git发现两个patch修改了相同内容就会主动使用<<<<<< >>>>>>>>来显示冲突,然后在认为解决。
如果你的代码修改部分少,你可以copy一份他的粘进去。
先回答问题:
小A先提交了代码,远程库和小A得本地库同步,假设为 0 -> a
此时小B的本地库为 0 -> b,远程库的版本比本地库较新,git会拒绝推送并报错。
git 会要求 git pull 更新本地库,而 pull 操作相当于自动的 fetch 和 merge 操作,会试图自动将远程库合并入本地库,在有冲突时再要求手动合并。
会提示小B先pull 代码,如果小B修改的代码那一行跟小A的一样,那个文件那一行会提示冲突,这里需要手动合并,如果修改的不一样,Git会自动合并相关代码
如果是改的不同地方 可以直接merge 如果改了相同的地方 git会自动把两个版本的代码放到文件里面 等你选
小B先吧小A的代码 pull 回来,然后合并,然后才能再提交。
每次开发完成后 先add commit 然后pull远程代码 有冲突的话尽快解决 然后再push 当然我说的是不考虑分支的情况下
有个习惯,我觉得听不错的,就是每次提交代码的时候,你要先pull 再push 这样很大程度上会避免报错,至于解决冲突,这是代码的问题,报错后文件会显示红色,有个分割线,上面的是人家的代码,下面的是你自己的代码,根据需要取舍。
看标题我就醉了,既然是冲突,那肯定是要手动解决的。
工具判断不了如何合并代码,才会冲突。如果Git自己能解决冲突了,那就不需要人来写代码了。
小B在提交代码时应先git pull更新代码,如果代码有冲突就会出现类似这样的错误:
这时候git要求你先手动修改冲突,找到提示的文件,冲突的部分就会出现《《《《《来分隔代码改变的部分,需要修改那部分,就看你怎么选了。
git不会自己解决冲突,只会试着去合并patch,如果git发现两个patch修改了相同内容就会主动使用<<<<<< >>>>>>>>来显示冲突,然后在认为解决。
如果你的代码修改部分少,你可以copy一份他的粘进去。