Git 多人协作管理

在来到公司之前一直没有好好用 Git 来管理分支. 之前练习的时候有用到 Git, 但是也仅限于本地仓库的提交而已, 到了公司用 Git 多人协作才知道他真正的强大.

安装

apt-get install git

准备

在看这篇文章之前你得具备 Git 的基础, 基础教程: 廖雪峰 Git.

Git 开发人员视角

开发人员来到公司第一件事情要克隆获得公司在 Git Lab 的项目.

git clone 项目地址 SSH 地址

项目拉取下来之后一般遵循新建一个自己的子分支开发.

git checkout -b dev

开发人员可以正常开发了, 程序 / 功能 开发完后.

# 查看本地仓库状态, 绿色代表添加到 Git 管理中, 红色代表没有添加到 Git 管理
git status
# 将文件添加到 Git 管理之中
git add .
# 将文件添加到本地仓库
git commit -m '本次功能说明'

Git 管理者需要合并代码的时候开发人员得推送到项目远程仓库.

# git remote 可以查看远程仓库地址
git push origin dev:dev

上面代码中是将本地 dev 分支推送到远程 dev 分支, 注意: 开发人员不要提交到远程 master 分支, 一定是远程子分支, 如果远程没有子分支, 第一次提交会自动创建远程子分支.

Git 管理者将代码合并之后, 开发者需要获取合并后的最新代码, 获取推荐使用 git fetch, 不推荐使用 git pull 因为 git pull 会将代码获取后自动合并到当前分支并提交到本地仓库, 不利于检查冲突, git fetch 会将远程分支存在到本地但不会合并, 只需要自己手动合并.

# 查看远程分支
git fetch
# 合并远程主分支, 一般来说不会有冲突
git merge origin/master
# 为了保持本地主分支和子分支相同版本, 切换到主分支合并刚刚从远程拉取最新代码的子分支
git checkout master
git merge dev
# 然后再切换回子分支开发
git checkout dev

开发者在项目中大致 Git 运用流程就完成了.

Git 管理人员角度

管理人员也要创建一个子分支开发, 开发人员都将自己的子分支提交到远程的子分支后, 管理人员首先查看远程分支提交的信息记录, 然后再将开发人员的远程子分支与自己本地子分支合并. 注意: 管理人员也要将本地子分支提交到本地仓库, 保证本地仓库 干净.

# 查看远程分支提交情况
git fetch
# 拉取开发人员的远程子分支
git merge origin/开发人员远程子分支名称

没有出现冲突, 会弹出全屏英文信息, 大致内容是合并信息, 按 ctrl + c 关闭, 随后会自动提交到本地仓库, 如果有冲突会在命令行提示出来, 管理者只需要 git status 查看那些文件是 红色 的这代表有冲突有改动. 然后管理者自己打开有冲突那个文件手动解决冲突, 冲突之中 HEAD 代表自己的代码区, == 是分界符号, 分界符号下面是开发人员的代码区, 解决完成然后再提交到本地仓库.

# 查看那些文件有冲突 ( 红色 )
git status
# 冲突解决完后
git add .
git commit -m '合并其他人代码'

依次合并其他人员代码, 合并完所有人代码后, 再把代码提交到远程主分支.

# 将代码提交到远程仓库
git push origin dev:master
# 保持主分支与子分支的一致性
git checkout master
git merge dev
# 开发一定是在子分支
git checkout dev

管理者在项目中大致 Git 管理流程就完成了.

PS

感谢关注「GitHub 热门」公众号,带你了解技术圈内热门新鲜事!

file

本作品采用《CC 协议》,转载必须注明作者和本文链接
感谢关注「GitHub 热门」公众号
本帖由系统于 3年前 自动加精
Destiny
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 4
Destiny

@lx1036 嗯嗯, 这个我知道, 我习惯用命令来管理, 谢谢!

7年前 评论

@ChinaGNU 回头把 gitflow 给大家分享分享呗 :smile: 这个实际工作中用的更多。

7年前 评论
Destiny

@zhuzhichao :punch: 超哥!

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!