GIT

版本控制系统

版本控制系统常用分别有SVN与GIT,两者的区别在于SVN是集成式版本控制系统,而GIT为分布式版本控制系统.下面是GIT的
安装与操作

GIT的安装

Windows下

1、git的下载网站
https://git-scm.com/downloads

2、安装问题
安装路径不要出现中文路径可能会出错

3、环境配置
一般是会自动配置环境,但如果没有的话,在我的电脑的属性里的高级配置中选择环境变量配置,在PATH下拼接上git的环境
(一般在安装目录的bin目录下有个git.exe文件)
4、查询是否成功
cmd下输入 git --version

Linux下

1、安装
sudo apt install git

2、查询是否成功
git --version

GIT操作

设置git

后续远程仓库需要用到github,所以需要创建用户,建议用户名设置简单点,不然后面可能会很烦人

git config --global user.email "你的github的邮箱"
git config --global user.name "你的github用户名"

创建本地仓库

mkdir test //创建本地仓库,仓库名可以任意
cd test
git init //初始化本地仓库

创建忽略清单

​ 将要忽略的文件的绝对路径添加到.gitignore中,一行一个.忽略清单中的文件不会被管理

touch .gitignore

查看仓库状态

​ ?? 表示没有被仓库管理

​ A 表示添加到仓库管理

​ M 表示该文件被修改

​ D 表示该文件被删除

​ I 表示忽略了该文件

​ R 表示该文件被代替

​ C 表示冲突

git status -s 

在本地缓存中添加管理文件

git add 文件名
git add . //将目录下所有文件添加到本地缓存中托管

将缓存区添加到本地仓库中

git commit -m "对该操作的描述"
0B(NM2_)}RJBR%WKYWTQWFX.png

查看你的提交日志

git log --pretty=oneline //将提交记录以一行一行形式显示
image.png

查询文件差异

git diff 文件名 //会对比最新版本的该文本显示差异

撤销未添加到缓存区的对应的文件的操作

git checkout -- 文件名 //将该文件恢复到最新版本的状态

撤销已添加到缓存区还未添加到本地仓库

git reset --hard HEAD //将工作区恢复到最新版本的状态

版本回退

git reset --hard HEAD //将工作区恢复到最新版本的状态
git reset --hard HEAD^ 
//将工作区恢复到最新版本的上一个版本的状态,一个^就是最新的上一个,两个^就是最新的上两个依次类推
git reset --hard 哈希码 //前六位即可

​ 提示:如果版本回退了后HEAD会指向退回的那个版本,并且你查询提交日志的时候他不会显示之前的最新版本,这时候可以用哈希码回到最初最新的版本


QAY9{OGKONPCH`7~UH%N)RV.png
git reset --hard 哈希码 //前六位即可

远程仓库与本地仓库

远程项目仓库创建

首先需要在github创建一个远程项目仓库,网页右上角有个加号里面的New repository

连接远程仓库

一、HTTPS连接

git remote add 你创建远程仓库的项目名 HTTPS的URL 
// HTTPS的URL在你的远程仓库右上角有个Clone or download选择use HTTPS
git remote -v //查询连接是否成功
git remote rm 你创建远程仓库的项目名 // 删除远程仓库连接
将本地仓库上传到远程仓库
git push -u 项目名 master // 需要输入用户名和密码

​ 如果出现以下错误的时候,则将-u改为-f即可

hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

将远程仓库下载到本地仓库中
git pull 远程仓库名 master
将远程仓库克隆到本地仓库
git clone HTTPS的URL 目录名

提示:该方法不推荐因为每次本地仓库上传到远程仓库都得输入账号密码

二、SSH连接

该方法需要在linux下配置ssh
mkdir ~/.ssh //创建ssh目录
cd ~/.ssh
vi id_rsa.pub
//该文件中有与远程仓库连接的密钥,将里面的内容复制到txt中先将里面自带的空格,与最后面的网址去掉复制到github
//的密钥中
github中设置ssh连接
网页右上角>>settings>>SSH and GPG keys>>New SSH key

​ 本地仓库上传到远程仓库或远程仓库下载到本地仓库命令都和HTTPS一样,但不用输入账号与密码因为之前已经配置过了,就是最后的HTTPSURL改成SSH的URL

创建分支与合并

创建分支

git branch 分支名
git checkout -b 分支名//创建分支并跳转到该分支

查看当前分支

git branch //*表示在哪个分支

删除分支

git branch -d 分支名

切换分支

git checkout 分支名

上传分支

git push 项目名 分支名

合并分支

合并完后记得add与commit

git merge 要合并到的主分支名 //要先切换到要合并分支的分支

抓取分支

git checkout -b 远程仓库下的分支名 项目名/远程仓库下的分支名

冲突与覆盖问题

在分支a(该分支下有文件1,文件2,文件3,文件4)下创建分支b和分支c,分支b与c中的内容是和a是一样的,但当b改变文件1内的内容时,在合并到a中时,a中的文件1内容会被覆盖,但这时候如果c也改变文件1中的内容时并且合并到a,那么这时候就会产生冲突问题,类似此类的冲突问题还有很多种,可以参考https://www.yiibai.com/git/git_handling_conflicts.html

画工太烂请谅解

你可能感兴趣的:(GIT)