git及gitlab的使用

本文详细介绍Git作为分布式版本控制系统的优势及其与GitLab结合使用的最佳实践。包括如何创建分支、解决冲突、发起合并请求等工作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

            git及gitlab使用说明

经理要求抛弃掉svn使用git作为版本管理工具,由于之前完全没有解除使用过,自己学着搭建gitlab,看很多介绍git及gitlab使用的文章,越看越迷糊,最终就形成了如下的文档。目前已经团队已经在使用git、gitlab,也遇到了很多问题。接下来能成熟使用后重新写一篇吗。这篇先丢这里了。

1.你应该知道的Git、GitLab、SourceTree

1.1 关于 Git 你应该知道

 Git 是一个分布式版本控制系统。分布式的意思是,每个人电脑上都是一份完整的代码库,包含了所有的代码提交历史。由于 Git 分布式的特点,在没有网络的情况下,依然可以自由地将代码提交的本地的代码库中,等网络恢复后再推送到服务器,开发更加灵活和自由。

重要概念:本地一个代码库,对本地文件的所有操作,最后都是提交到这个代码库中。同时可以设置多个远程(remote,默认的remote通常用origin表示),当你要将代码更新到服务器上时(称作push),就通过设置的remote,更新到指定的服务器。

关于多个remote:例如其他公司的开发人员,在自己的公司中开发代码,将默认remote设置为公司自己的源码管理服务器,同时设置另外一个remote为移动的源码服务器。这样即可以将代码提交到自己公司的服务器,同时也可以提交到移动的服务器。

总之就一句话:git是一个分布式版本控制系统。每个人自己的本地库就相当于一个完整的SVN服务器。

SVN是这样工作的

Git是这样工作的:

每个开发者都拥有一个git仓库,每个git仓库都相当于一台完整的svn服务器,开发者只需提交版本记录到自己本地库中。有需要时向远程仓库进行推送。

1.2 关于GitLab你应该知道

Gitlab Git 服务端的集成管理平台,提供了:

1.     代码托管服务

2.     访问权限控制

3.     问题跟踪,bug的记录、跟踪和讨论

4.     Wiki,项目中一些相关的说明和文档

5.     代码审查,可以查看、评论代码

1.3 关于SourceTree你应该知道

SourceTree只是Git系统的一个管理工具,百度百科的定义是这样的:SourceTree Windows Mac OS X 下免费的 Git Hg 客户端管理工具,同时也是MercurialSubversion版本控制系统工具。支持创建、克隆、提交、pushpull 和合并等操作。

SourceTree拥有一个精美简洁的界面,大大简化了开发者与代码库之间的Git操作方式,这对于那些不熟悉Git命令的开发者来说非常实用。

2.我们应该这样工作

    认识了三款工具的不同,现在开始我们的工作。

我们使用Git进行版本管理,使用GitLab对我们的代码进行托管。每个开发者从上游仓库(GitLab)获取到最新的代码,形成自己的本地仓库。一般,我们从develop分支形成自己的分支,比如我从远程的develop分支检出本地分支dev_jwx,我的开发工作和bugfix就基于我的dev_jwx分支进行(我甚至可以把本地分支dev_jex命名为develop,和远程分支一样的名称),当远程develop分支有版本变动时会通知我有哪些变动,我根据自己的实际需要可以选择是否更新这些变动。当我的开发工作完成后,我会把本地的dev_jwx分支推送到GitLab上。如果我希望我GitLab上的工作被纳入正式工作,那么我会发起一个Merge Request,请求把我的最新修改并入正式工作中。我们的工作流程可以用这样的一张图来说明:

有一点值得说明的是,请注意黄色线应该从GitLab中央仓库节点开始。当前分支的工作结束后我们应该发起Merge Request,在发起Merge Request时我们应该先从GitLab中央仓库的develop分支拉取更新(pull)代码,这期间可能出现冲突,我们必需先解决冲突然后把Pull成功的代码Push到我们的GitLab开发者分支,然后再发起Marge Request

3.在SourceTree上我们这样做

    无论是在SourceTree上还是在Eclipse上,我们的工作都应当是先从GitLab里创建自己的分支。检出对应分支到自己本地之后就可以开始我们的工作,进行完一些工作我们需要推送当前任务到我们的GitLab分支,因为最终的成果是从我们的GitLab分支合并到GitLab中央仓库的develop分支的,当然,只有在完成当前分支的需求或当前分支的某个阶段性成果后我们才会去请求把我们的GitLab分支合并进GitLab中央仓库的develop分支。请记得,在我们请求合并我们的开发者分支之前,先从develop分支拉取最新的代码以保证我们工作不是徒劳的。

3.1拉取项目

3.1.1创建GitLab开发者分支

我们应现在GitLab上创建自己的分支,自己的分支是基于develop分支而来。

注意命名及上游分支的选取

 

3.1.2在SourceTree上检出分支

在SourceTree上,把GitLab上的分支检出到本地。

 

 

3.2 工作中普通的推送

工作中的一般推送我们可以直接点击推送菜单,选择推送到自己的开发者分支即可。

如果其他同事有在你的分支上进行工作,请自行拉取同步代码,解决冲突之后提交、推送到自己分支。

3.3合并请求

    当前分支工作结束后我们希望上游仓库接受我们的工作成果,就需要在GitLab上发起Merge Request。此时GitLab中央仓库的develop可能已经发了一些版本的迭代,我们先推送本地最新代码到我们的GitLab分支,然后检出最新的develop分支到本地,把develop分支合并进我们的开发分支(可能会有冲突,需要解决冲突),之后推送到我们的GitLab开发者分支就可以发起合并请求了。

3.3.1 先推送最新修改

 

3.3.2 检出develop分支

可以看出,develop分支已经比我的dev_jiawenxiao分支快了几个版本

3.3.3 把develop分支合并进我的分支(同步代码排除冲突)

3.3.4 合并后推送

可以看到,我的dev_jiawenxiao分支已经与develop保持了同步

3.3.5发起合并请求

4.在Eclipse上我们这样做

4.1拉取项目

4.1.1创建GitLab开发者分支

注意分支命名和父分支

4.1.2在Eclipse上导入工程

File-->Import-->Git-->Projectsfrom Git-->Clone URI

4.2工作中的普通推送

 

 

4.3合并请求

在这里,我们所做的操作和SourceTree上是一样的。可以回顾下3.3节中的说明以加深理解。

4.3.1 先推送最新修改

4.3.2 与develop分支对比解决冲突

4.3.3 把develop分支合并进我的分支

4.3.4 合并后推送

 

4.3.5 发起合并请求

 

5.对,就是这样

现在回头再看看,我们的所有操作都是基于这张图的:

合并操作是最有可能出现问题的部分,很大可能都是冲突造成的,请耐心解决冲突后合并。

 

 

 

### 配置使用 Git 连接到 GitLab 仓库 要通过 Git 将本地代码连接到 GitLab 仓库,可以按照以下方法操作: #### 1. 创建 SSH 密钥并将其添加到 GitLab 账户 SSH 是一种安全协议,用于在客户端服务器之间建立加密通信。创建 SSH 密钥并将公钥添加到 GitLab 的账户设置中是非常重要的一步。 运行以下命令来生成新的 SSH 密钥(如果尚未存在): ```bash ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 这会提示输入文件保存路径密码短语。完成后,复制生成的公钥内容: ```bash cat ~/.ssh/id_rsa.pub ``` 登录到 GitLab 并导航至 **Settings -> SSH Keys** 页面,粘贴上述公钥内容以完成绑定[^2]。 #### 2. 添加远程仓库地址 假设已经在 GitLab 上创建了一个新项目 `myproject`,可以通过以下方式将该项目与本地目录关联起来。 执行如下命令以指定项目的 URL 地址作为默认推送目标: ```bash git remote add origin git@gitlab.com:username/myproject.git ``` 确认已正确设置了远程仓库的信息: ```bash git remote -v ``` 此命令应返回类似于下面的结果,表明已经成功指定了两个方向上的链接——拉取(fetch) 推送(push)[^3]: ``` origin git@gitlab.com:username/myproject.git (fetch) origin git@gitlab.com:username/myproject.git (push) ``` #### 3. 提交更改到 GitLab 当准备好向远端提交工作成果时,遵循这些标准流程即可实现同步更新: ```bash git add . git commit -m "Initial commit or any other meaningful message" git push -u origin master ``` 这里需要注意的是,在首次上传数据之前可能还需要额外参数 `-u` 来设定上游分支关系;之后每次只需简单调用 `git push` 即可[^1]。 另外,测试当前环境是否能够正常访问 GitLab 可尝试执行下述指令观察反馈情况: ```bash ssh -T git@gitlab.com ``` 理想情况下应该看到一条欢迎消息说明身份验证无误。 --- ### 注意事项 - 如果遇到权限错误或者无法克隆等问题,请核查 `.ssh/config` 文件中的 Host 设置是否有冲突。 - 对于 HTTPS 方式的配置,则无需涉及 SSH Key 步骤,但需要定期处理认证令牌的有效期管理问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值