一、为什么需要代码管理

1.1 为什么引入代码管理

写代码时我们一般不可能一天写完,大部分都是分批来写的,这就导致我们无法准备记住每天写了哪些代码?这时就需要对代码进行管理。另外,代码团队写代码时,每个人都会提交代码然后进行合并,这同样需要我们对代码进行管理。

1.2 用什么管理代码

针对批量的代码,我们一般使用代码仓库对代码进行存放并进行管理。而代码仓库的功能大概有以下几点:

  • 版本控制:追踪代码的变更记录,查看代码修改内容以及版本回滚
  • 分支管理:可以让我们同时处理多个任务,同时不会影响稳定的分支
  • 团队协作:支持多人开发:多人协同开发,且互不影响
  • 代码审查、知识Wiki等

二、代码仓库介绍

主流代码仓库有GitHub、gitee、GitLab。

2.1 GitHub

GitHub 是全球最大的代码托管平台,拥有广泛的用户和开源项目。它提供了一个简单易用的用户界面,使得代码的分享、协作和管理变得非常方便。GitHub不仅仅是一个代码托管平台,还提供了许多其他功能,如问题跟踪、代码审查、持续集成等。GitHub还支持基于Git的工作流程,例如分支、合并和拉取请求,这些功能使得团队协作更加高效。

2.2 Gitee

Gitee 是中国的一个类似于GitHub的代码托管平台,也是全球最大的代码托管平台之一。它提供了类似GitHub的功能,包括代码托管、协作和问题跟踪等。Gitee特别受国内开发者的欢迎,因为它提供了更快速的访问速度和更好的中文支持。与GitHub类似,Gitee也支持基于Git的工作流程,使得多人协作开发更加方便。

2.3 GitLab

GitLab 是一个开源的代码托管平台,类似于GitHub和Gitee,但提供了更多的功能和灵活性。GitLab不仅提供了代码托管和版本控制的功能,还包括持续集成、自动化测试、容器注册表等。与GitHub和Gitee不同的是,GitLab可以在自己的服务器上进行部署,这使得一些组织或企业可以在私有网络内搭建自己的GitLab实例,以更好地保护代码和数据的安全性。GitLab也提供了社区版和企业版两个版本供用户选择。

三、Git客户端工具安装及配置

3.1 Git客户端工具安装

登录Git官网,点击【下载】,一直【Next】即可进行安装。

Day002-云原生开发必知必会-程序开发之代码管理-图1

可参考mukes的博客---Git 详细安装教程

3.2 Git配置

1.配置全局用户名和邮箱

右键鼠标,点击【Git Bash Here】打开命令行视图,配置全局用户名和邮箱

示例命令:

#如果没有配置过,则执行下面命令进行配置
$ git config --global user.name "你的名字"
$ git config --global user.email "你的邮箱"

具体命令:

$ git config --global user.name "zq"
$ git config --global user.email "123456@qq.com"

配置全局用户名和邮箱

2.查看配置

右键鼠标,点击【Git Bash Here】打开命令行视图,查看配置

$ git config user.name
$ git config user.email

查看配置

3.生成SSH密钥

右键鼠标,点击【Git Bash Here】打开命令行视图,生成SSH密钥

示例命令:

$ ssh-keygen.exe -t rsa -C "你的邮箱"

具体命令:

$ ssh-keygen.exe -t rsa -C "123456@qq.com"

生成SSH密钥

查看公钥

$ cat ~/.ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCWgteqwoM0uksX2AcbviLkdeYR/YgKidICLB7sII/dpc+AZ02OuJzT829Hm0bJjvvV6iXH83qZTEtVXC9plU+0kwtarweyPfyuVx2XnkR6tuTFalRKkkLkPZqZjnRfJBVFL4lcl5IDwLgmXCAozpTRS0TllcZfG/TWIGoJuyUDxmEZ/iq4VstshUa6unCUSSTIJ2+lRwn4TVPVoFFuk203D/V6r071wljFg0jdjAWBW2XeoT+AWWJoyxtPYvnOozjHJ4JqeJ5FUFpTBT5unIh4kzC8dMoumFyLsNMYU1h9F85eyHutlWYK2z88SyqKcJZSIusVYzej93xcgY+ewjHbFbNO54Og1mG0fAR+lqSwoQR42YwyBFWmFKW/MEBScLoJJIye5q6va35kCaX2ET36cL/Fxugchh9DRGccCzgFlbMsqYHQKMq/7MRQEjshXe5I6mkbOxhxWuLYvDgfUxxmO3JuKezhpGuEoc2h3+6/dXiwZNakKHJI4HmGfl1Cq+E= 123456@qq.com

查看公钥

上传公钥到仓库,这里以gitee为例

上传公钥到仓库

四、Git仓库管理

4.1 新建仓库

1、点击【+】-【新建仓库】

新建仓库-1

2、输入仓库名称git_study后,点击【创建】

新建仓库-2

3、点击【创建】后,我们可以复制SSH链接,方便后面操作

image-20231213213401668

4.2 本地无仓库上传代码

假如我们在本地上无仓库,想拉取远程仓库的代码进行编写,最后再上传代码到远程仓库。

1.把仓库克隆到本地

$ git clone git@gitee.com:jeckjohn/git_study.git
Cloning into 'git_study'...
warning: You appear to have cloned an empty repository.

2.新建一个文件并进行上传

$ cd git_study/
$ vim README.md
test

新建一个文件并进行上传

3.添加缓存区并上传代码

$ git add .
$ git commit -am "test"
$ git push origin master

4.结果验证,观察到新建的文件已成功上传

查看结果

4.3 本地有仓库上传代码

假如我们在Gitee上创建了代码仓库git_study1,并且本地上已经创建好名为git_study1的文件夹,编写好想上传代码到远程仓库。

远程仓库

这里我们先在本地上编写一个文件模拟演示环境:

$ cd git_study1/
$ vim README.md
# 进行测试

演示环境准备

1.初始化本地仓库

$ git init

2.添加到暂存区

$ git add .

3.将名为"origin"的远程仓库添加到你的本地Git仓库中

$ git remote add origin git@gitee.com:jeckjohn/git_study1.git

4.将暂存区中的文件变更保存为一个新的提交

$ git commit -am "test"

5.提交代码

$ git push origin master

6.结果验证

结果验证

五、Git命令详解

1.克隆远程已有的仓库到本地

$ git clone 远程仓库地址

2.更新本地代码(拉取远程仓库中的新代码到本地)

$ git pull <shortname> <remote_branch>:<local_branch>
  • <shortname> 是远程仓库的简称或名称,如origin
  • <remote_branch> 是远程仓库的分支名
  • <local_branch> 是你本地仓库中的分支名

3.添加所有修改的文件,但不包含删除文件到暂存区

$ git add .

4.添加所有修改的文件及删除的文件到暂存区

$ git add -A

5.添加单个文件到暂存区

$ git add file1

6.添加多个文件到暂存区

$ git add file1 file2 file3

7.把文件从暂存区提交到本地仓库

$ git commit -am "提交信息"
  • -a:类似于git add,但是不包含新添加的文件
  • -m:注释内容

8.把本地仓库的代码提交到远程仓库

$ git push <shortname> <remote_branch>
  • <shortname> 是远程仓库的简称或名称,如origin
  • <remote_branch> 是远程仓库的分支名

六、Git分支管理

1.本地仓库创建分支(不常用)

$ git branch NEW_BRANCH_NAME

注意:创建的新分支会复制之前分支所有的代码

2.本地仓库切换分支

$ git checkout BRANCH_NAME

3.本地仓库创建分支并切换到新分支(常用)

$ git checkout -b NEW_BRANCH_NAME

注意:创建的新分支会复制之前分支所有的代码

4.查看本地仓库的所有分支

$ git branch

查看本地仓库的所有分支

注意:当前所在分支前面会带*

5.查看远程仓库所有分支

$ git branch -r

6.查看远程仓库和本地仓库所有分支

$ git branch -a

查看远程仓库和本地仓库所有分支

注意:远程仓库分支为红色,本地仓库当前所在分支前面会带*

7.删除本地仓库分支

$ git branch -d BRANCH_NAME

注意:如果当前所在分支就是要删除的分支,需要切换分支再删除

8.强制删除本地仓库分支

$ git branch -D BRANCH_NAME

注意:如果当前所在分支就是要删除的分支,需要切换分支再删除

9.删除远程仓库分支

$ git push origin --delete BRANCH_NAME

10.本地仓库合并分支(一般在master分支上操作)

$ git merage BRANCH_NAME

注意:需要提前拉取master分支的最新代码,再进行合并

11.同步远程仓库分支到本地仓库

$ git fetch -p
  • -p--prune 选项表示在拉取更新的同时,删除本地仓库中已经不存在于远程仓库的引用。这样可以保持你的本地仓库与远程仓库的引用一致

12.同步本地仓库分支到远程仓库

$ git push origin  BRANCH_NAME

七、GIt版本管理

1.查看代码提交记录

$ git log

2.查看当前环境文件变更状态

$ git status

如果存在修改,结果会显示如下:

有修改

如果不存在修改,结果会显示如下:

无修改

3.查看修改了什么内容

$ git diff FILE_NAME

#其中-代表删除的行
#其中+代表增加的行

查看修改了什么内容

4.撤销单个文件的修改

$ git checkout -- FILE_NAME

5.撤销所有文件的修改(谨慎操作)

$ git reset --hard

6.回滚到指定的版本(谨慎操作)

(1)查看要回滚的commit

$ git log

查看要回滚的commit

(2)回滚到指定的版本

$ git reset --hard 6e1a2a518d320564bd5876694e193ee913efaa73

7.把回滚内容强制推送到远程仓库(谨慎操作)

$ git push origin master --force