news 2026/7/10 12:53:17

【Git学习】Git分支的多人协作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Git学习】Git分支的多人协作

单一分支的多人协作

创建testGit1本地与远程仓库
修改本地仓库local的级别的用户名和邮箱
$ git config --local user.name '鲁智深'
$ git config --local user.mail 'luzhishen@126.com'
项目克隆
把远程项目克隆到本地形成一个本地仓库:git clone 远程仓库HTTP
此时克隆下来的仓库和远程仓库的名字一致
也可以克隆远程项目自己定义仓库名字:git clone 远程仓库HTTP testGit2
指定本地仓库级别的用户名和邮箱
git config --local user.name '林冲'
git config --local user.email 'linchong@txjava.com'
下面演示单一分支的协作处理
在testGit1中通过鲁智深添加文件b.txt并推送到远程 git push origin master
此时林冲需要从远程仓库重新拉取 git pull origin master
这是一次多人协作,但事实情况更为复杂,例如当两个人修改同一个文件的时候会发生冲突,下面进行冲突演示
我们使用鲁智深修改b.txt内容后,提交并且推送到远程
此刻林冲也修改B.txt内容,提交并且推送远程的时候发现出现冲突,推送失败,产生冲突
首先需要拉取代码,拉取成功但是自动合并失败,我们需要修改冲突,修改完成后再提交,并推送至远程仓库

分支推送与拉取

分支推送协作

创建dev分支
git push无法把dev分支推送到远程
将本地分支推送到远程仓库并建立本地分支与远程分支的关联关系
git push --set-upstream origin dev
远程分支已经推送
除此之外我们可以使用下面命令完成远程分支推送 git push -u origin dev2
其中 -u 是 --set-upstream 的缩写
远程分支已经推送
将本地分支的代码推送到远程仓库时不仅会在远程创建分支并且 Git 也会自动在 .git/config 中添加配置绑定本地分支与远程分支之间的跟踪关系,如下

分支拉取协作

首先我们需要明确 git fetch 和 git pull 都是用于获取远程仓库更新的命令,核心区别在于是否自动将远程更新合并到本地当前分支
  • git fetch:只获取不合并,仅将远程仓库的最新状态同步到本地的远程跟踪分支(如 origin/master、origin/dev,这些是本地缓存的远程分支镜像),但不会自动合并到当前工作的本地分支。执行后,本地工作分支的代码不会被修改,你可以先查看远程更新与本地的差异,再手动决定是否合并。
  • git pull:获取且自动合并,本质是先执行 git fetch(拉取远程更新到对应的远程跟踪分支,如 origin/xxx),随后自动将该远程跟踪分支的更新合并到当前本地分支(例如,当前在 master 分支时,会自动合并 origin/master 到本地 master)。执行后,本地当前分支的代码会直接包含远程更新(若有冲突则需手动解决)。
我们使用林冲的仓库与账户进行拉取操作
若执行 git pull origin master,即从远程仓库origin的master分支拉取最新代码,并自动合并到当前所在的master本地分支中,如下
若执行 git pull,即Git将远程仓库的新分支(dev和dev2)抓取到了本地的远程跟踪分支中(即origin/dev和origin/dev2,这些是本地缓存的远程分支镜像),但随后试图将远程分支合并到当前本地分支时,由于当前所在分支没有与远程仓库的任何分支建立跟踪关联,不知道该合并哪个远程分支,合并失败最终只保留了抓取的结果
需要先通过 git fetch 或 git pull 将远程仓库的新分支抓取到本地,生成对应的远程跟踪分支,再执行 git checkout -b dev origin/dev,即基于远程跟踪分支创建本地的dev分支并切换到此本地分支,其中 origin/dev 指定新分支的基础来源,即本地缓存的远程跟踪分支(远程dev分支镜像)
还可以使用另一种方式,同样需要先通过 git fetch 或 git pull 将远程仓库的新分支抓取到本地,生成对应的远程跟踪分支,再执行该语句 git checkout --track origin/dev2
自动创建一个与远程 dev2 分支同名的本地分支,并让这个本地分支自动跟踪远程跟踪分支 origin/dev2,最后切换到这个新创建的本地 dev2 分支
基于远程跟踪分支创建本地分支时,Git 会自动绑定本地 dev 分支与远程 origin/dev 分支的跟踪关系,在 .git/config 中生成对应的跟踪关系配置

远程分支的删除

在鲁智深账户的本地仓库中删除dev2分支 git branch -d dev2
Git 会同时清理掉 .git/config 中与 dev2 分支相关的配置包括跟踪关系,但远程仓库上的分支还存在
删除远程仓库的 dev2 分支 git push origin --delete dev2
通过另一个用户来查看本地对应的远程分支
我们看到该本地仓库的远程跟踪分支 origin/dev2 尚未与远程仓库的最新状态同步
git remote show origin 查看远程仓库 origin 详细信息,发现远程仓库的 dev 分支被删除后,本地的远程跟踪分支 origin/dev2 不会自动消失
git remote prune origin 会检查远程 origin 的当前分支状态,然后删除本地所有远程已不存在的跟踪分支,确保本地的远程跟踪信息与远程仓库保持一致,仅清理不更新其他跟踪分支的内容
本地仓库再删除dev2分支
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/10 0:21:17

我为什么要离开家乡,来北京打拼?(说说我自己的故事...)

建了一个新号:1. 讲职场与第二曲线;2. 聊自己的故事,内心的感悟。谢谢大家,听我的故事。希望对大伙也有帮助。最近做了一个新产品:70天,每天30分钟,短视频行动营(第二曲线最佳选择&a…

作者头像 李华
网站建设 2026/7/10 1:50:52

如何在 LTspice放置 .op data 并能够设置显示的小数点个数?

简 介: 本文介绍了在LTspice中格式化.op数据标签的方法。通过使用round函数可以设置显示数据的小数点位数,使仿真结果更加简洁直观。具体操作是右键点击.op数据标签,使用round函数调整小数位数。这种方法能有效优化电路静态偏置量的显示效果&…

作者头像 李华
网站建设 2026/7/10 7:46:36

Wan2.2-T2V-A14B支持长时间序列生成吗?实测60秒连续输出

Wan2.2-T2V-A14B支持长时间序列生成吗?实测60秒连续输出 在影视制作、广告创意和虚拟内容生产领域,一个长期悬而未决的难题是:AI能否真正理解“时间”? 不是简单拼接几帧画面,也不是靠后期插值强行延长视频&#xff…

作者头像 李华
网站建设 2026/7/10 9:40:58

【高效运维必看】:Agent服务在Docker中跨环境迁移的7种优化方案

第一章:Agent服务在Docker中跨环境迁移的核心挑战在将Agent服务通过Docker容器化部署并实现跨环境迁移的过程中,尽管容器技术提供了“一次构建,处处运行”的理想承诺,实际落地仍面临诸多核心挑战。这些挑战主要集中在配置管理、网…

作者头像 李华
网站建设 2026/7/10 10:42:16

深度指南:如何设计Prompt引导DeepSeek生成高效的分步故障排查流程

深度指南:如何设计Prompt引导DeepSeek生成高效的分步故障排查流程在当今技术驱动的世界中,系统、设备或应用程序出现故障几乎是不可避免的。快速、准确地定位并解决这些故障对于维持业务连续性、提升用户体验以及降低运营成本至关重要。传统的故障排查手…

作者头像 李华