说明
目前来说,无论是从事哪一个方面的开发,都是离不开通过git
进行版本控制的,在本篇博文当中主要记录一下git
的常用操作。
软件安装
在这里以windows
为例,想要使用git
,首先需要到官方网站下载相应的安装包。
点击这里进入官网查看具体内容。
进入官网点击下载安装即可。
本地仓库初始化
下载安装好git
之后,在鼠标的右键菜单中,会多出两个选项,如下:
点击Git Bash Here
就可以打开git
在windows中所提供的终端。
确认安装好之后,就可以找一个地方创建一个文件夹,并且在文件中点击鼠标右键,选择Git Bash Here
打开终端,输入git init
命令,即可在本地初始化git仓库。
初始化完成后就会在文件夹中创建出一个.git
目录,这个目录就是git在本地创建的仓库。
工作区、暂存区
一般来说,当使用git
初始化完成之后,本地的文件夹就变成了工作区
,而在文件夹中除了工作区、本地仓库以外,还存在一个暂存区。
一般来说,git操作的流程都是先将工作区中的代码添加到暂存区,然后再存入到本地的代码仓库。
将文件添加到本地仓库的基本步骤
想要将文件添加到本地仓库,需要通过下面的两条命令来完成:
- git add 命令 将文件存入到暂存区
- git commit 命令将暂存区的文件存入到本地仓库
git add
命令后面可以写上要存入暂存区的文件名,例如想要将a.txt
存储到暂存区,就可以输入命令git add a.txt
。
如果一次性存入的文件比较多,也可以通过git add *
的形式来将当前目录内的所有改变的文件一次性的存入到暂存区。
通过
git add *
来添加文件,就会导致全部的文件都被选中,如果想要忽略某些文件,可以创建一个.gitignore
文件,然后将需要忽略的文件写入到.gitignore
文件当中去。
git commit
命令用来将暂存区的文件存入到本地的仓库,一般来说后面需要搭配参数-m
用来添加备注信息。
例如:
git commit -m 'first push'
经过git add
命令和git commit
两条命令的操作,本地工作区的文件就已经可以顺利的存入到本地的仓库当中。
也可以将两条命令合在一起执行,例如
git add * && git commit -m "备注"
。
查看当前工作区状态
如果想要查看当前工作区中哪些文件是新增文件,或者查看修改的文件等等,都可以通过git status
命令来查看。
一般来说,通过git status
命令,可以查看目录当中的文件处于什么样的状态,如果是类似上面的内容提示,则表示文件还在工作区当中,需要提交到暂存区,可以通过上面的git add
命令将文件提交到暂存区。
提交到暂存区后,再来通过git status
命令来查看就会变成下面的状态:
之后就可以通过git commit
命令来将文件提交到仓库当中。当目录当中的全部文件都提交到仓库当中之后,git status
命令查看到的结果如下:
.gitignore 忽略文件
如果在工作区当中,某些文件或者文件夹不需要提交到仓库当中,那么可以创建一个.gitignore
文件。将不需要提交到仓库当中的文件或者文件夹记录在.gitignore
文件当中就好。例如:
target //忽略这个target目录
angular.json //忽略这个angular.json文件
log/* //忽略log下的所有文件
css/*.css //忽略css目录下的.css文件
如果是一个前端的项目,较为常见的例如node_modules
目录就可以写在这个文件当中,这样当提交文件的时候就会自动的忽略掉这个文件。
代码回滚
当某个文件在提交到仓库之后,如果想要将文件当中的内容回退到之前某次提交时的状态,可以使用下面的命令。
git reset --hard [GPL]
例如,a.txt
中最开始的文件内容如下:
然后将a.txt
提交到仓库后再次进行修改。
修改完成后再次提交。
这时如果想要恢复到最开始的初始状态该怎么办呢?
首先通过git log
查看提交日志,获得GPL。如下:
查看到了GPL,就可以通过下面的命令恢复到第一次提交的状态:
git reset --hard 30f1c7
执行完命令之后,再来查看一下a.txt
的状态:
如果想要再恢复到第二次提交的状态,可以通过git reflog
命令查看到第二次提交的commit id,根据这个id来恢复到第二次修改的状态。
删除文件和恢复文件
此时如果在工作区中删除了一个已经提交到仓库的文件,此时有两种操作可以做,第一是通过仓库中的记录将工作区中的删除文件找回,第二种是干脆也将仓库中的记录删除。
在这还是以a.txt
为例,这个文件已经被提交到了仓库中,现在将这个在工作区中的源文件删除。
然后查看状态。
此时git status
命令查看后,对我们做出了提醒,运行现在有两种操作:git rm
删除仓库中的文件,git restore
恢复文件。
下面先来演示恢复文件。执行下面的命令:
git restore a.txt
执行完成之后,立刻可以在目录中查看到a.txt
这个文件已经恢复了过来。
下面再来演示删除操作,首先再次将a.txt
删除,然后通过git rm
命令将仓库中的记录也删除掉。
创建分支
如果需要同时多人协同开发,那么分支是必不可少的,可以通过下面的命令来创建分支:
git branch 分支名
例如,创建一个名字叫做test1
的分支:
在上面的图例中,通过git branch test1
命令创建了分支test1
,然后通过git checkout test1
将分支从主分支切换到了test1
分支。
也可以通过
git checkout -b 分支名
在创建分支的同时快速切换到新创建的分支身上。
创建并且切换分支除了使用
git checkout -b
命令也可以使用git switch -c 新创建的分支
命令来实现。如果只是单纯的切换分支,也可以使用git switch 分支名
来实现。
查看分支
如果想要查看当前存在的分支,可以通过下面的命令来实现:
git branch
效果如下:
合并分支和删除分支
现在在test1
这个分支上,创建一个hello.txt
并且添加下面的内容并且将其提交到仓库。
然后切换回主分支,你会发现之前在test1
分支上创建的hello.txt
文件消失不见了。
如果想要在主分支master
上查看到内容,可以通过将test1
分支合并到当前主分支来实现。
合并分支之后,就可以在主分支master的目录查看到test1
分支创建的hello.txt
文件。
分支合并之后,就可以放心的删除掉test1
分支了。
分支冲突和解决冲突合并分支
在开发的过程中,经常出现分支冲突的问题,可以理解为同一个文件被两个分支同时修改,当合并分支的时候发生了冲突,git没办法帮助我们快速的合并分支,需要我们手动的进行处理。
首先,在主分支上创建一个一个test.txt
,然后输入以下的内容并且提交。
然后创建dev
并且切换到dev
分支。
然后在test.txt
里面加入一行内容并且提交。
操作完成后切换回主分支,并且在主分支上也对test.txt
进行修改同时提交。
然后尝试合并分支,然后终端会提示如下的内容:
git给我们提示说合并失败,需要我们修复冲突然后重新提交。
这个时候,可以通过cat
命令来查看文件内容。
这个时候,我们可以再次对test.txt
进行修改。如下:
然后再次进行提交即可。
当然,在这可以通过git log
加上参数来查看合并分支的情况,如下:
git log --graph --pretty=oneline --abbrev-commit
生成SSH KEYS
如果想要让本地仓库的代码上传到代码托管平台,那么就需要生成SSH KEYS
。
在终端中执行下面的命令:
ssh-keygen -t rsa -C "你使用的邮箱"
注意: -C 是大写的C,不是小写的c。
命令执行完毕之后,生成的密钥位置在C/User(用户)/电脑用户名/.ssh
目录下,通过记事本或者编辑器打开id_rsa.pub
文件,将里面的代码全部的复制。
代码托管平台添加公钥
这里以码云
为例,在网站个人页面设置里面,选择SSH公钥
,然后添加标题,将复制的内容粘贴进公钥输入域内。
创建仓库上传代码
完成了上述操作后,就可以在代码托管平台创建一个仓库,然后本地连接远程平台,上传代码即可。
在本地终端执行下面的命令连接仓库。
git remote add origin https://gitee.com/用户名/仓库名.git
执行完成后,通过下面的命令就可以完成代码上传。
git push -u origin master
在提交的过程中,会让你输入用户名和密码。
如果不是第一次提交,就直接输入
git push
命令就好。
克隆代码和拉取代码
如果需要将一个代码库下载下来,可以通过下面的命令来完成。
git clone 项目仓库地址
拉取完成后进入到代码目录就可以通过git push
上传代码,如果需要拉取最新代码,直接通过git pull
命令即可。