六、Git多人开发: 把同一文件改成了不同的文件名如何处理?

举报
毛利 发表于 2021/07/15 03:34:44 2021/07/15
【摘要】 @Author:Runsen 把同一文件改成了不同的文件名如何处理? 我们接着上面的话题,如果把同一文件改成了不同的文件名,如何处理? 小A和小B首先对使用git pull命令同步下。小Auser.htm改为user1.html并提交上去。 YIUYE@DESKTOP-5EEO47M MINGW64 ~/Desktop/A/muli_person_test (d...

@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 823 17:50 .
drwxrwxr-x 3 maoli maoli 4096 821 15:55 ..
drwxrwxr-x 8 maoli maoli 4096 823 17:50 .git
drwxrwxr-x 2 maoli maoli 4096 821 15:55 .gitee
-rw-rw-r-- 1 maoli maoli  960 821 15:55 README.en.md
-rw-rw-r-- 1 maoli maoli 1328 821 15:55 README.md
-rw-rw-r-- 1 maoli maoli   91 821 17:43 register.html
-rw-rw-r-- 1 maoli maoli  128 823 17:50 user1.htm
-rw-rw-r-- 1 maoli maoli  150 823 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' 出现了偏离,
并且分别有 31 处不同的提交。
  (使用 "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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。