六、Git多人开发: 把同一文件改成了不同的文件名如何处理?
@Author:Runsen
把同一文件改成了不同的文件名如何处理?
我们接着上面的话题,如果把同一文件改成了不同的文件名,如何处理?
小A和小B首先对使用git pull命令同步下。小Auser.htm
改为user1.html
并提交上去。
YIUYE@DESKTOP-5EEO47M MINGW64 ~/Desktop/A/muli_person_test (dev)
$ git mv user.htm user1.htm
YIUYE@DESKTOP-5EEO47M MINGW64 ~/Desktop/A/muli_person_test (dev)
$ git commit -m "Mv user to user1"
[dev 33bd75a] Mv user to user1
1 file changed, 0 insertions(+), 0 deletions(-)
rename user.htm => user1.htm (100%)
YIUYE@DESKTOP-5EEO47M MINGW64 ~/Desktop/A/muli_person_test (dev)
$ git push
Counting objects: 2, done.
Delta compression using up to 12 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 254 bytes | 0 bytes/s, done.
Total 2 (delta 1), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-5.0]
To https://gitee.com/MaoliRUNsen/muli_person_test bd39f70..33bd75a dev -> dev
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
小B将user.htm
改为user2.html
,大家可以想象一下如果小B提交了,会报什么错。
maoli@ubuntu:~/B/muli_person_test$ git mv user.htm user2.htm
maoli@ubuntu:~/B/muli_person_test$ git commit -m "mv user to user2"
[dev 8f596e6] mv user to user2
1 file changed, 0 insertions(+), 0 deletions(-)
rename user.htm => user2.htm (100%)
maoli@ubuntu:~/B/muli_person_test$ git push
To https://gitee.com/MaoliRUNsen/muli_person_test
! [rejected] dev -> dev (fetch first)
error: 无法推送一些引用到 'https://gitee.com/MaoliRUNsen/muli_person_test'
提示:更新被拒绝,因为远程仓库包含您本地尚不存在的提交。这通常是因为另外
提示:一个仓库已向该引用进行了推送。再次推送前,您可能需要先整合远程变更
提示:(如 'git pull ...')。
提示:详见 'git push --help' 中的 'Note about fast-forwards' 小节。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
此时,会报错,出现non fast-forward的错误提示,小B解决的方法就是赶紧pull。
maoli@ubuntu:~/B/muli_person_test$ git pull
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 2 (delta 1), reused 0 (delta 0), pack-reused 0
展开对象中: 100% (2/2), 完成.
来自 https://gitee.com/MaoliRUNsen/muli_person_test bd39f70..33bd75a dev -> origin/dev
冲突(重命名/重命名):在分支 "HEAD" 中重命名 "user.htm"->"user2.htm",在分支 "33bd75af89ecd33ba72615af1b65d833d7e445b4" 中重命名 "user.htm"->"user1.htm"
自动合并失败,修正冲突然后提交修正的结果。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
这个时候Git报冲突 了,
maoli@ubuntu:~/B/muli_person_test$ ls -al
总用量 40
drwxrwxr-x 4 maoli maoli 4096 8月 23 17:50 .
drwxrwxr-x 3 maoli maoli 4096 8月 21 15:55 ..
drwxrwxr-x 8 maoli maoli 4096 8月 23 17:50 .git
drwxrwxr-x 2 maoli maoli 4096 8月 21 15:55 .gitee
-rw-rw-r-- 1 maoli maoli 960 8月 21 15:55 README.en.md
-rw-rw-r-- 1 maoli maoli 1328 8月 21 15:55 README.md
-rw-rw-r-- 1 maoli maoli 91 8月 21 17:43 register.html
-rw-rw-r-- 1 maoli maoli 128 8月 23 17:50 user1.htm
-rw-rw-r-- 1 maoli maoli 150 8月 23 17:50 user2.htm
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
这个时候通过git status
查看状态,发现小A想改为user1.htm
,小B自己想改为user2.htm
maoli@ubuntu:~/B/muli_person_test$ git status
位于分支 dev
您的分支和 'origin/dev' 出现了偏离,
并且分别有 3 和 1 处不同的提交。
(使用 "git pull" 来合并远程分支)
您有尚未合并的路径。
(解决冲突并运行 "git commit")
未合并的路径:
(酌情使用 "git add/rm <文件>..." 标记解决方案)
双方删除: user.htm
由他们添加: user1.htm
由我们添加: user2.htm
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
经过和小A的交流后,最后决定将文件改为成user1.htm
,于是小B通过git rm
将user.htm和user2.htm删除。
maoli@ubuntu:~/B/muli_person_test$ git rm user.htm
user.htm: needs merge
rm 'user.htm'
maoli@ubuntu:~/B/muli_person_test$ git rm user2.htm
user2.htm: needs merge
rm 'user2.htm'
- 1
- 2
- 3
- 4
- 5
- 6
- 7
这里模拟了两个人(我的两个账号),小A和小B协作开发,其实再多人也是一样,就不模拟了,模拟多了容易精神分裂变戏精。希望通过这一篇让大家了解工作中使用git的方式。
git系列就到这里结束了,当然git还有很多内容,这个系列只是为了让大家快速掌握,并能在实际开发中使用。说白了git只是一款工具,我们这里也使用了gitee作为远程仓库,其实github,gitlib都是一样的,这些国外的远程仓库众所周知的原因网速比较慢,经常会访问不了。也有企业不愿公开源码,又不愿花钱,会搭建自己的内网git仓库,怎么搭建其实大家不用太关心,一般都搭建好了,如果想学习的话,自己搜索一下资料,非常方便的,用法其实也是一样的。
参考:极客时间玩转Git三剑客。作者苏玲,
携程代码平台负责人
文章来源: maoli.blog.csdn.net,作者:刘润森!,版权归原作者所有,如需转载,请联系作者。
原文链接:maoli.blog.csdn.net/article/details/108185290
- 点赞
- 收藏
- 关注作者
评论(0)