分布式版本控制系统 Git 的使用

简介与安装配置

Git是目前世界上最先进的分布式版本控制系统

分布式版本控制:

即每个参与协作的人都拥有全部的代码!有一定安全隐患!所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。不会因为服务器损坏或者网络问题,造成不能工作的情况!

Git下载地址:https://git-scm.com/download/win

官网下载太慢,我们可以使用淘宝镜像下载:http://npm.taobao.org/mirrors/git-for-windows

安装

一路下一步即可,可以修改安装路径

配置环境变量

一般安装时会自动配置

启动Git

Git Bash:Unix与Linux风格的命令行,使用最多,推荐最多

Git CMD:Windows风格的命令行

Git GUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令

查看Git的配置文件

所有的配置文件,其实都保存在本地!

查看配置 :

git config -l

查看不同级别的配置文件:

#查看系统
configgit config --system --list  

#查看当前用户(global)配置
git config --global  --list

#修改当前用户(global)配置 
git config --global -e #(edit)
Git相关的配置文件:
  • Git\etc\gitconfig  :Git 安装目录下的 gitconfig     --system 系统级
  • C:\Users\Administrator\ .gitconfig    只适用于当前登录用户的配置,里面保存了用户名和邮箱等信息

设置用户名与邮箱

当你安装Git后首先必须要做的事情是设置你的 用户名 和 e-mail地址。这是非常重要的,因为每次Git提交都会使用该信息,它被永远的嵌入到了你的提交中。如果你希望在一个特定的项目中使用不同的名称或e-mail地址,你可以在该项目中运行该命令而不要--global选项。

# --global 可简写为 -g 意为全局配置
git config --global user.name "Lamb"  #用户名 
git config --global user.email 2384748045@qq.com   #邮箱

Git的基本理论与使用

Git 在本地有三个工作区域:工作区(Working Directory)、暂存区 (Stage/Index) 、本地仓库 (Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。

Git 的四个工作区域:

  • 工作区:平时存放项目代码的地方。

  • 暂存区(Stage/Index):暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息

  • 历史区:又称本地仓库,这个不算工作区,而是 Git 的版本库,里面有你提交到所有版本的数据。

  • 远程仓库:托管代码的服务器

 Git的工作流程

1、在工作目录中添加、修改文件;

2、将需要进行版本管理的文件放入暂存区域;(git add)

3、将暂存区域的文件提交到git仓库。(git commit)(git push)

因此,git管理的文件有三种状态:已修改(modified);已暂存(staged);已提交 (committed)

 

 

Git的使用流程

1.创建Git本地仓库

创建本地仓库的方法有两种:一种是创建全新的仓库,另一种是克隆远程仓库。

本地仓库搭建:

创建全新的仓库,需要用GIT管理的项目的根目录执行:

# 在当前目录新建一个Git代码库
$ git init

执行后可以看到,仅仅在项目目录多出了一个.git目录,关于版本等的所有信息都在这个目录里面。

克隆远程仓库:

克隆远程目录,将远程服务器上的仓库完全镜像下载一份至本地!

# 克隆一个项目和它的整个代码历史(版本信息)
$ git clone [url]

2.暂存区操作

从工作区到暂存区

$ git add 文件路径   #暂存指定文件
$ git add . #暂存所有文件

查看文件状态(查看对应的暂存区内容)

$ git status

从暂存区撤回到工作区

$ git reset 文件名

3.忽略文件

有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等

在主目录下建立".gitignore"文件,此文件有如下规则:

#为注释
*.txt        #忽略所有.txt结尾的文件,这样的话上传就不会被选中!
!lib.txt     #但lib.txt除外
/temp        #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/       #忽略build/目录下的所有文件
doc/*.txt    #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

4.将暂存区的文件提交到历史区

提交对应的暂存区文件到历史区 (暂存区就没有了)

$ git commit . -m 描述信息

历史区数据是不能撤回的 但是它可以回滚数据来影响对应的暂存区和工作区

$ git log #查看历史提交信息,包括了版本号
$ git log --oneline #查看简化版提交信息
$ git reset
--hard 版本号 #回到指定版本 $ git reset --hard head^ #回到上一个版本,head^表示上一个,head^^^表示上三个版本

 

参数功能场景
–hard 清空工作区与暂存区 放弃目标版本后所有的修改(将所有的修改全部删除)
–soft 保留工作区与暂存区,但是把版本之间的差异存放在暂存区 合并多个commit
–mixed(或缺省) 保留工作区清空暂存区,把版本之间的差异存放在工作区 1、有错误的commit需要修改;2、git reset HEAD清空缓存区

总结使用(适用于第一次提交,后面的提交应切换分支)

克隆项目的提交(推荐使用)

git clone 地址(配置了ssh秘钥则要选择ssh地址)
git add . 
git commit . -m 第一次提交 
git push 别名 master

自己创建的提交

git init
git remote add 别名 远程地址(配置了ssh秘钥则要选择ssh地址)
git add .
git commit . -m 第一次提交
git push 别名(地址) master --force(第一次提交要加--force强行覆盖git远程仓库的代码,后面不需添加)

分支

分支命名规范

git 分支分为集成分支、功能分支和修复分支,分别命名为 master、feature 和 fix,均为单数。不可使用 features、future、hotfixes、hotfixs 等错误名称。

  • master(主分支,永远是可用的稳定版本,不能直接在该分支上开发

  • develop(开发主分支,所有新功能以这个分支来创建自己的开发分支,该分支只做合并操作,不能直接在该分支上进行开发)

  • master_check(未上线前的开发分支,该分支只做只合并操作,不能直接在该分支上开发,前期开发完成后将feature分支合并到此分支)

  • online(线上分支,由发版人员确认测试没问题后,将online_check分支合并到此分支)

  • online_check(开发主分支,所有新功能以这个分支来创建自己的开发分支,该分支只做只合并操作,不能直接在该分支上开发)

  • feature-xxx(功能开发分支,在develop上创建分支,以自己开发功能模块命名,功能测试正常后合并到develop分支,开发完成后合并到online_check分支上)

  • fix-xxx(修改bug分支,在master分支上创建,修复完成后合并到 online_check)

注意事项:

  • 一个分支尽量开发一个功能模块,不要多个功能模块在一个分支上开发。

  • feature 分支在申请合并之前,最好是先 pull 一下 master_check 分支下来,看一下有没有冲突,如果有就先解决冲突后再申请合并。

# 列出所有本地分支
git branch
git branch -l 

#查看所有分支 all
git branch -a 

# 列出所有远程分支
git branch -r

# 新建一个分支,但依然停留在当前分支
git branch [branch-name]

# 新建一个分支,并切换到该分支
git checkout -b [branch]

# 切换分支
git checkout [branch-name]

# 合并指定分支到当前分支
$ git merge [branch]

# 删除分支
$ git branch [branch-name] -D

# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

#拉取远程仓库代码
git pull origin 分支名 #如果有冲突需解决冲突再提交

#如果拉取不成功可以使用这个强制的方法
git pull origin 分支名 --allow-unrelated-histories

配置SSH登录

以gitee为例,

Gitee有两种登录方式(HTTPS、SSH),SSH相对安全,而且ssh不需要每次登录都需要输入密码。
SSH登录步骤:需要本地电脑生成一段密钥,然后去代码托管网站(Gitee、GitHub、Gitlab)中个人账号的SSH公钥管理添加这段密钥,这台电脑就可以拉代码了。

1.在本地生成密钥:

cd ~/.ssh  #进入ssh目录
ls  #查看有没有配置过密钥,如果之前生成过则无需再生成
ssh-keygen -t rsa -C "邮箱号" 

然后会出现下面的三处填写:

  1. 保存密钥的位置(回车就是默认)
  2. 密码(回车不设置密码,如果设置密码使用idea的ssh代码会拉不下来)
  3. 确认密码

2.将密钥复制到gitee中

clip < ~/.ssh/id_rsa.pub #复制密钥

进入码云的 个人设置 -> SSH公钥:标题可以任意输入,公钥将你直接粘贴过来,点击确定就可以了。

 

posted @ 2022-09-29 11:35  Lamb~  阅读(37)  评论(0编辑  收藏  举报