Git

Git

版本控制

引言

​ Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。

​ 版本控制(Revision control)是一种在开发过程中用于管理我们对文件、目录或工程内容的修改历史,方便查看更改历史记录,备份以便于恢复以前的版本的软件工程技术。

  • 实现跨区域多人协同开发
  • 追踪和记载一个或者多个文件的历史记录
  • 组织和保护你的源代码和文档
  • 统计工作量
  • 并行开发、提高开发效率
  • 跟踪记录整个软件的开发过程
  • 减轻开发人员的负担,节省时间,同时降低人为错误
版本控制可以分为三类

1、本地版本控制

记录文件每次更新,可以对每一版本做一个快照或者记录补丁文件,适合个人使用

2、集中版本控制(SVN)

所有的版本数据都存在服务器上,协同开发者从服务器上同步更新或者上转自己的修改,用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作.而且,所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据。

3、分布式版本控制(Git)

所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。

Git与SVN主要的区别:

SVN:集中式版本控制系统,版本库集中放置在中央服务器上(必须联网),工作时要要在中央服务器得到最新版本,工作完成后再提交到到中央服务器上。

Git:分布式版本控制系统,没有中央服务器,每个人的电脑都是一个完整的版本库,工作时不需要联网

环境配置

基本的Linux命令

# 改变目录
cd

# 回退到上一个目录,直接cd进入默认目录
cd..

# 显示当前所在的目录路径
pwd	

# 列出当前目录中的所有文件,ll(ll)列出的内容更为详细
ls

# 新建一个文件如touch index.js就会在当前目录下新建一个index.js文件
touch

# 删除一个文件
rm

# 新建一个目录
mkdir

# 删除一个目录
rm-r

# 移动文件,mv index.html src index.html。src是目标文件夹
mv

# 清屏
reset

# 清屏
clear

# 查看历史命令
history

# 帮助
help

# 退出
exit

下载Git

https://git-scm.com/

设置用户名和邮箱(用户标识,必要,在window用户文件夹下.gitconfig文件中可查看)

  • git config --global user.name "":设置用户名
  • git config --global user.rmail 234t:设置邮箱
  • git config -l:查看所有配置
  • git config --system --list:查看系统配置
  • git config --global --list查看全局配置

Git工作区

Git的四个工作区
  • 本地:工作区(Working Directioy)、暂存区(Stage/index)、资源库(Repository或Git Directory)
  • 远程:Git远程仓库(Remote)
Git工作流程和命令

git commit -a -m 提交信息:-m参数是输入提交信息的,-a 参数就是可以把还没有执行add命令的修改一起提交。

Git命令大全:https://gitee.com/all-about-git

初始化Git的两种方式

  • 打开GitBash窗口:输入git init
  • 克隆仓库到本地:https://gitee.com/w-eye/springbootstudy.git

Git文件操作

文件的四种状态
  • Untracked:未跟踪状态,此文件在文件夹中,并没有提交到本地仓库,不参与版本控制,通过git add提交后状态变为Staged
  • Unmodify:文件已经入库,未修改,即版本中的文件快照内容与文件夹中的完全一致;这种类型的文件有两种去处,如果它被修改,而变为Modified,如果使用git rm移出版本库,则成为Untracked文件
  • Modified:文件已修改,仅仅是修改,并没有进行其他操作,这个文件有两个去处通过git add进入暂存staged状态,使用git checkout则丢弃修改过,返回到unmodify状态;git checkout即从库中取出文件,覆盖当前修改
  • Staged:暂存状态执行git commit则将修改同步到库中,这时库中的文件和本地又变为一致,文件为Unmodify状态,执行git reset HEAD filename取消暂存,文件状态为Modified

版本控制就是对文件的版本控制,要对文件进行修改,提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上

查看文件状态
git status 				 # 查看文件状态
git status(filename)	 # 查看指定文件状态
git add .				 # 添加所有文件到暂存区
git commit -m '消息内容'  # 提交暂存区中的内容到本地仓库 -m 提交信息
忽略文件

有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等在主目录下建立".gitignore""文件,此文件有如下规则︰

*.txt			#忽略所有 .txt结尾的文件
!lib.txt		#但lib.txt除外
/temp			#仅忽略项目根目录下的TODO文件,不包括其他目录temp
build/			#忽略build/目录下的所有文件
doc/*.txt		#会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

使用Gitee

  • 注册账号

    https://gitee.com/

  • 数组本机绑定SSH公钥,实现免密码登录!(免密码登录,这一步很重要,码云是远程仓库,我们平时工作在本地仓库)

    # 进入 C:\Users\Admin\.ssh 目录
    # 生成公钥
    ssh-keygen -t rsa
    
  • 将公钥信息public key添加到码云账户中即可

  • 使用码云创建一个自己的仓库!

  • 将自己仓库中的文件克隆到本地

SSH公钥:如果没有SSH公钥,每次克隆或者提交文件时都要输入密码,通过ssh-keygen -t rsa命令在本地生成公钥后将本地的公钥与Gitee中SSH公钥绑定后;每次克隆或者上转文件会自动将电脑密钥和Giree公钥对比如果一样则可以实现免密码登入

IDEA集成Git

新建项目,绑定git
  • 将远程项目拷贝到项目目录下即可

修改文件,使用IDEA操作git,提交
  • 将文件添加到暂存区(git add .)
  • 将文件提交到本地仓库(git commit)
  • 修改文件(如果不修改文件将提交不到远程仓库),提交到暂存区,提交到本地仓库
  • git push 提交的远程仓库

GIt分支

git分支的理解

git分支的理解:https://www.cnblogs.com/matengfei123/p/8252128.html

git分支中常用命令
# 列出所有本地分支
git branch

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

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

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

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

# 删除分支
git branch -d [branch-name]

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

如果同一个文件在合并分支时都被修改了则会引起冲突:解决办法就是我们可以修改冲突文件后重新提交

Git命令大全:https://gitee.com/all-about-git

posted @ 2021-04-28 15:18  一程山水一年华^_^  阅读(62)  评论(0)    收藏  举报
TOP 底部 /*显示代码块行号*/