团队协作中git的基本使用

git对于软件开发团队的意义

在我们进行团队协作的软件开发时,我们的项目可能会分解成多个不同的模块、功能,这些模块、功能又会细分下去交给不同的人来进行开发,当多个人共同来完成一个项目的时候,我们如何同步进行呢?使用git就能完美的解决这个问题,我们可以在git上建立多个分支,多人来同时工作,同事也可以通过你上传的代码来实时同步我们的工作进度。

另外,当多人对一个文件进行修改时,必然会发生冲突,不同人的思想不同,开发一个逻辑也难免出现错误,而git的优势就在于,对代码质量把控、减少代码冲突。

又或者,我们在写代码的过程中,对于一段代码想要进行修改甚至删除,但又害怕将来出错需要恢复,这时候用git将是你最好的选择,git的定义就是一个开源的分布式版本控制系统,那什么是版本控制呢?通俗来讲,就是git可以将你的每次修改记录下来,形成一个版本,当你想要恢复你的代码时,只要找到对应的版本即可。

git 和 github 的区别


git 是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。
简单来说,git就是一个帮助我们管理我们的代码版本控制工具。

而 gitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 git 作为唯一的版本库格式进行托管,所以叫 github。
我们可以将自己的项目提交到 github 上进行托管,也可以在上面查阅他人公开的项目,必要的时候可以拉下来进行学习。
简单来说,github 就是一个用来存放代码的仓库。

本地仓库和远端仓库

本地仓库和远端仓库在本质上来说没有什么区别,甚至可以理解为一个是本地电脑,一个是远端的电脑,通常情况下,远端仓库不参与开发,主要作为托管中心。
图片来源自网络

上图就能够很清晰的表明远程仓库、本地仓库、暂存区、工作区之间的关系。这其中出现的一些概念:
workspace:工作区,我们进行编写代码的区域,可以通过pull将远端仓库的代码拉取下来,也可以通过checkout来切换分支。
Index:暂存区,当我们代码完成一个阶段后,需要在本地仓库进行同步,即进行commit操作,但每次修改都进行commit会比较麻烦,所以git给我们提供一个暂存区,修改代码后进行add操作添加到缓存区,最后统一进行commit到本地仓库。
Repository:本地仓库,本地用来存储代码的仓库,可以通过push将本地仓库文件上传到远程仓库,也可以通过fetch/clone将远端仓库的文件拉取克隆下来。
Remote:远程仓库,远端用来存储代码的仓库。

代码如何上传到私有远端仓库

Http

  1. 进行初始化本地仓库 git init
  2. 加到暂存区 git add . / git add *
  3. 提交到本地仓库 git commit -m ‘文本’
  4. 连接远程仓库 git remote add origin 你的远程仓库的URL(在创建仓库中可以找到)
  5. 提交到远程仓库 git push origin master

SSH

配置

  1. 首先在桌面右键打开 gitbash 输入ssh

    出现如图代表git安装成功可以正常使用。
  2. 然后输入 ssh-keygen -t rsa 该命令是指定 rsa 算法生成密钥,输入命令后连续三个回车即可,默认情况下会生成两个文件 id_rsa 和 id_rsa.pub,id_rsa是密钥,id_rsa.pub是公钥。生成目录在执行命令后可以看到。
  3. 用记事本打开 id_rsa.pub 后 copy 全部内容。
  4. 进入远程仓库(用github示例),找到settings。
  5. 选择 SSH and GPG keys -> New SSH key。
  6. 将(3)复制的内容粘贴到 Key 中,Title 可以空着不写,然后 Add SSH key。

上传项目

  1. 首先在 github 上创建新的仓库,然后复制SSH。
  2. 打开编译器终端依次输入如下命令
    git init
    git remote add origin 你复制的SSH
    git add .
    git commit -m’文本’
    git push origin master
    进入到github仓库中查看是否上传成功。

代码怎么从远端仓库同步到本地

第一种情况:将远端仓库代码克隆到本地
git clone 仓库的 http/SSH

第二种情况:将远端仓库代码拉取下来合并到本地
git pull / git pull origin master

多人工作在同一代码库如何合并代码

1、切换到其他分支:git checkout 分支名
2、将代码拉取下来:git pull
3、合并分支:git merge 分支名

合并出现冲突怎么处理

首先要知道为什么会产生代码冲突,假设我们现在有三次提交A.B.C

在远程分支 origin 的基础上创建一个名为 “mywork” 的分支并提交了(可以理解为我们自己进行了更改要进行提交),同时有其他人在 “origin” 上做了一些修改并提交了。

此时在 E 提交的时候就会产生代码冲突。

产生代码冲突后如何解决呢?

我们有两种方法可以用来解决代码冲突:

首先就是 git merge 方法,该方法就是使用 git pull 命令将 origin 分支上的修改拉取下来,再与本地的提交合并之后再提交,简单来说,就是将别人的修改和自己的修改合并成一个文件再进行提交。

因为是合并两个修改,所以会形成菱形。

另一种方法就是 git rebase,该方法就是废除掉我们要提交的修改,选择一个我们想要提交的正确的进行提交。


由于 E 被废除掉,所以用虚线表示,此时形成的是一条线而并非菱形。
在 rebase 过程中有时会出现 conflict,此时就需要用户自己手动来解决冲突后继续提交。

关于 commit 的提交规范

  • feat: 新的功能
  • fix: 修复 bug
  • refactor: 重构代码
  • chore: 不影响业务功能的一些操作
  • doc: 关于文档的修改
  • test: 测试代码
  • perf: 性能优化
  • style: 代码格式修改
  • ci: 持续集成
  • release: 发布新版本

Git 常用命令

分支

  1. 创建分支:git branch 分支名
  2. 创建并切换到分支:git checkout -b 分支名
  3. 查看分支:git branch
  4. 切换到其他分支:git checkout 分支名
  5. 创建并切换分支并与远端仓库分支进行关联:git checkout -b 分支名 远端仓库分支
  6. 删除分支:git branch -d 分支名 //不能删除当前所在分支;已进行过提交的不能删除
  7. 强制删除分支:git branch -D 分支名
  8. 删除分支并且推送远程仓库:git push origin –delete 分支名
  9. 合并分支:git merge 要合并的分支名
  10. 查看所有分支信息:git branch -av

版本

  1. 查看版本简写日志:git log –oneline
  2. 查看版本路线:git log –oneline –graph
  3. 从远端仓库拉取:git fetch

标签

  1. 打标签:git tag xxx
  2. 查看标签:git tag –list
  3. 删除标签:git tag -d xxx

操作失误回滚

未提交到暂存区

  1. 使用命令git status 查看缓存区中未提交的文件,然后使用命令git checkout – 要还原的文件夹下的文件,执行命令后会自动还原

已提交到暂存区

  1. 使用命令 git reset HEAD 文件夹下的文件 ,把文件从暂存区撤销,然后使用未提交到暂存区的操作失误还原操作即可。

回滚到指定版本

  1. git reset –hard HEAD^ //一个^代表回归一个版本
  2. 先 git log 查看历史获取 commit 的 id,然后 git reset –hard 你要回到版本的commit的id

团队协作中git的基本使用
https://l1ushun.github.io/2021/09/15/git-01/
作者
liu shun
发布于
2021年9月15日