0%

Git版本库管理最佳实践——以创建新分支加入某个项目为例

1 背景

公司项目存放于 GitLab 服务器,想要加入该项目贡献代码

2 最佳实践

2.1 添加 SSH 公钥至 GitLab 服务器

  • 生成 SSH 公钥
    1
    ssh-keygen -C “your email address”
  • 添加公钥至 GitLab 服务器(不再赘述)

2.2 配置 git 全局(或工程)用户名和邮箱

1
2
git config --global user.name “your user name”
git config --global user.email “your email address”

2.3 克隆仓库、创建个人分支、提交代码

克隆仓库,切换到将要 merge 进去的目标分支,在该分支下创建个人分支,在新建的个人分支下进行文件修改,将个人分支 push 到远程仓库并建立追踪关系(push 后加 - -set-upstream 参数):

1
2
3
4
5
6
7
8
git clone repo_addr
cd repo_dir
git checkout target_repo_branch_to_merge
git checkout -b branch_name
# 进行文件修改
git add --all
git commit -m “Your commit content.”
git push --set-upstream origin branch_name # 成功 push 过一次后可以简化为 git push

2.4 将个人分支 merge 到目标分支、打好 tag

Web 界面操作即可。

3 一些说明

执行完git clone后,将拉取远程仓库的所有分支、各分支上的修改、tag 等全部内容,并将在本地的克隆仓库中创建 master 分支(自动与远程仓库的 master 分支相关联,远程仓库别名缺省为 origin),在创建个人分支前,务必先 git checkout 到将要 merged 到的分支(示例中为 develop),然后再进行分支创建操作,否则在 GitLab 服务器上进行 merge 操作时,可能会发生冲突与逆向 merge(develop 分支 merge 到了个人分支)。原因:

初次完成仓库克隆时,所在分支为 master 分支,此时若立即创建个人分支将是基于 master 分支创建的,而 master 分支与将要 merge 的分支很有可能是不同的,后续将做过修改的个人分支向 develop 分支进行 merge 时大概率会出现问题。当然,即使这样做了,也可能在进行 merge 操作时发生冲突与逆向 merge(从 develop 分支创建个人分支后,修改文件期间有人向 develop 分支 push 了新的提交)。


Thank you for your donate!