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 新建两个项目的仓库,得到两个仓库链接,例如:
[email protected]:abc/Test123.git
[email protected]: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 [email protected]:abc/Test123.git
# 提交项目文件到远程仓库
git push -u origin "master"

5.下载主项目

  • 将 Test456 的代码,合并到 Test123
git clone [email protected]:abc/Test123.git

6.合并项目

  • 主项目关联被合并项目的远程仓库
# 下载的主项目的根目录
cd Test123
# 添加被合并项目的远程仓库
git remote add merge_branch [email protected]: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 ..." 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"

你可能感兴趣的:(#,Middleware,git,项目合并)