Git项目合并实践

Git项目合并实践

一、前言

  • 环境

操作系统:Windows 10 专业版

代码托管平台:Gitee

  • 场景
  1. 同一个项目,在某一个时间点,被另外一个团队拷贝和修改,并且代码不在同一个仓库,最后需要合并项目

  2. 不是同一个项目,理论上更好处理,因为需要解决的文件冲突数会更少

gitee 官网:https://gitee.com/explore

ssh-keygen:https://linux.die.net/man/1/ssh-keygen

Git 入门和使用实践:https://blog.csdn.net/u011424614/article/details/113607793

二、正文

1.SSH协议访问Gitee

  • 生成ssh公私钥 (如果之前已操作,可跳过)
ssh-keygen -t rsa

windows 默认生成目录:C:\Users\Administrator.ssh

Linux 默认生成目录:~/.ssh

-t 密钥的类型,分别是:RSA 和 DSA

-C 密钥的注释,一般填写邮件或用户名等

-f 指定密钥生成路径

如:ssh-keygen -t rsa -C “userz” -f D:\giteessh\id_rsa

  • 使用编辑工具打开 id_rsa.pub
  • 拷贝公钥内容添加到 Gitee 的 SSH 公钥 中(GItee 设置 - 安全设置 - SSH公钥)

2.创建gitee仓库

  • Gitee 新建两个项目的仓库,得到两个仓库链接,例如:
git@gitee.com:abc/Test123.git
git@gitee.com:abc/Test456.git

3.本地仓库

  • 初始化本地仓库,并将项目文件提交到本地仓库
# 进入项目根目录,Test456 执行一样的操作
cd Test123
# 初始化 git 本地仓库
git init
# 将全部文件添加到暂存区
git add .
# 提交到本地仓库,-m 填写备注
git commit -m "first commit"

4.远程仓库

  • 关联远程仓库,并提交项目文件到远程仓库
# 进入项目根目录,Test456 执行一样的操作
cd Test123
# 添加远程仓库,注意:修改远程仓库地址
git remote add git@gitee.com:abc/Test123.git
# 提交项目文件到远程仓库
git push -u origin "master"

5.下载主项目

  • 将 Test456 的代码,合并到 Test123
git clone git@gitee.com:abc/Test123.git

6.合并项目

  • 主项目关联被合并项目的远程仓库
# 下载的主项目的根目录
cd Test123
# 添加被合并项目的远程仓库
git remote add merge_branch git@gitee.com:abc/Test456.git
# 查看当前项目的远程仓库(这时可以看到两个远程仓库的 fetch 和 push 地址)
git remote -v
# 拉取被合并项目的代码
git fetch merge_branch
# 创建并切换分支
git checkout -b dev merge_branch/master
# 切换回主分支
git checkout master
# 合并分支
git merge --no-ff --allow-unrelated-histories dev

7.解决冲突

  • 合并后,通过 git status 指令,查询需要处理冲突的文件(Unmerged paths 的 both added 提示的文件)
  • 处理方式:使用 Notepad++ 或 IDEA 之类的编辑器,删除冲突的代码
git status
  • 输出
On branch master
Your branch is up to date with 'origin/master'.

You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Changes to be committed:
        modified:   pom.xml
        new file:   src/main/resources/application-prod.yml

Unmerged paths:
  (use "git add <file>..." to mark resolution)
        both added:      src/main/java/com/test/abc/DataHandle.java
        both added:      src/main/java/com/test/abc/DataType.java

8.提交到本地仓库

  • 冲突文件修改后,提交到本地仓库
git add src/main/java/com/test/abc/DataHandle.java
git commit -m "merge"

9.提交到远程仓库

  • 冲突文件全部修改完后,提交到远程仓库
git push -u origin "master"
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

趴着喝可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值