IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 多人开发协作,Git最佳实践与常见问题解决方案 -> 正文阅读

[开发工具]多人开发协作,Git最佳实践与常见问题解决方案

常用命令

git add 
git commit 
git push

Git合并冲突了,怎么办?

什么时候产生冲突

当我们有两个人分别用 f1 和 f2 两个分支开发代码时,不小心都改到同一行,这时候两个人并没有意识到,当他们开发完成后,就会将修改的代码通过add、 commit 以及最终push到远程repo去请求合并。这个时候,远程repo发现同一行代码有不同修改,不知道要合并哪一个,这时就产生冲突了。

git冲突产生时间

怎么解决冲突?

这时候肯定需要有一个人(或者说有一个分支)做出让步,要么合并 f1 冲突的行,要么合并 f2 冲突的行。
假设 f1 要做出让步比较厉害,对git玩得很溜,这时候他提出要来解决这个冲突,于是他告诉我们,他是按照下面的原理来解决的:

  1. f1 这个人在本地切换到主分支:git checkout master
  2. 它将本地的master和远程的master做了同步:git pull origin master
  3. 此时切换会 f1 分支:git checkout f1
  4. 使用rebase将f1 变基到 master : git rebase master
  5. 这个时候git可能会提示它有冲突,需要解决,于是他就到冲突的那个文件中,将想要保留的代码留着,其它的删除,这样就解决了冲突。
  6. 于是添加修改信息:git add .
  7. 继续变基 : git rebase --continue
  8. 如果这个时候还有冲突,那就按照 5- 7 的步骤解决,知道冲突解决。
  9. 最后,通过一个提交:git commit -m ‘resolve confilct’
    10.然后,强推一把代码到远程:git push -f

就这样, 它完成了冲突的解决。

git pull 和 git fetch & git merge

在上面解决冲突,有一个步骤是git pull,他的作用可以理解为将本地代码和远程代码同步。
git pull 主要做两个事情:1. 拉取远程代码到本地(git fetch --all) 2. 合并本地代码和远程的差异(git merge origin master)
因此,可以简单地理解git pull 约等于 git fetch + git merge,更具体的原理,给大家推荐一个视频:
GIt Fetch+Git merge 和 Git Pull 的区别

最佳实践

假设要开发一个新功能,那么可以按照下面的方法实践;

  1. 切换到master,拉取最新代码
git checkout master
git pull origin master
  1. 创建一个新分支,并基于这个分支提交代码
git checkout -b feature/name
  1. 添加、提交、推送代码
git add .
git commit -m 'comment'
git push
  1. 将指定分支推到远程。

如果忘记切换新分支,直接在master开发了,怎么办?

假设现在要开发一个新功能,但是我忘记切换新分支,一直在master开发,直到要合并了才知道。这个时候,可以采用下面的方法

  1. 先将master这些修改提交,但是不要推送
git add .
git commit -m 'commit'
  1. 切换会修改前的那个分支
查看修改前的分支 : git reflog

在这里插入图片描述

  1. 如图,上次的版本号为标红框的地方,于是回退到这个版本,并且在这个版本新建分支
git reset --hard b766811
  1. 在这个版本新建分支
git checkouot -b f2
  1. 将 f2 分支切换到之前在master修改的那个版本,与是 f2 就指向了那个原本在mster修改的版本,此时效果类似与在 f2上修改代码
    在这里插入图片描述
git reset --hard a6e382a
  1. 按照之前的方法,推送到远程。

参考

Git Rebase 与解决冲突
GIt Fetch+Git merge 和 Git Pull 的区别
git解决合并冲突

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-04-24 09:38:44  更:2022-04-24 09:40:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/14 14:55:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码