Git使用笔记
该文章持续更新中…
Git介绍
什么是Git
Git是一个开源的分布式版本控制系统。当我们在写代码的时候可能会出现多个版本的迭代,假如你写完两版代码后觉得第二版代码没有第一版好,但第一版代码已经被第二版给覆盖过去了。为了避免这个问题的出现,我们需要在写完一版代码后就对其进行备份(就像玩游戏时的存档)。但在本地备份时可能只是简单的将该项目的文件夹再复制出来一层,如果版本过多则可能需要占用很多的存储空间。Git就是将这个备份的过程程序化了,他会复制你的代码,让你随时可以退回到任何的一个版本。
区域概念
工作区: 在电脑中的本地文件目录 (工作路径下除了.git的所有外的所有文件)
暂存区: 英文名为
stage
或index
。一般存放在.git
目录下的index
文件中,所以我们把暂存区也称为索引版本库: 工作区中有一个隐藏文件夹
.git
,这个就是Git的版本库
工作流程
Git一般工作流程如下:
- 先使用
git clone
克隆远程资源到本地作为工作目录 - 对工作目录下的文件增删改
- 如果远程修改了则需要同步远程内容,使用
git pull
就可以进行更新 - 修改了工作目录的文件后可以通过
git status
查看修改的文件,再将该文件添加到暂存区,再从暂存区添加到版本仓库 - 修改完成后如果不满意可以对其进行回退,修改满意后再将其提交到版本仓库
- 使用
git pull
将本地的修改推送到远程的git服务器中
Git基本命令
创建仓库
1 | # 初始化仓库 |
提交与修改
1 | # 添加文件到暂存区 |
提交日志
1 | # 查看历史提交记录 |
远程操作
1 | git remote # 远程仓库操作 |
分支管理
1 | xxx |
Git的基本使用
设置用户信息
设置全局用户信息
1 | git config --global user.name "用户名" |
创建版本库
当前的工作路径为D:\code\
,通过初始化仓库后会在该路径下创建一个隐藏文件夹.git
,该文件夹是Git用来跟踪管理版本用的,Git所需要的数据和资源都存放在这个目录下
1 | git init |
添加文件到版本库
在工作目录下创建一个文件readme.txt
,文件内容如下: I am version 1
,将工作目录下的文件readme.txt
提交到暂存区中,命令执行成功后不会后反馈信息
1 | git add readme.txt |
查看仓库当前状态,显示有一个新文件
1 | git status |
将暂存区的文件提交到仓库中,再次查看仓库当前状态显示有一个文件已更改,一个文件插入
1 | git commit -m "初始版本" |
修改文件
当前的文件内容为Im version 1
,在该文件后添加一段内容Im version 2
,再对比仓库中文件的差异。可以看到文件内容从Im version 1
变成了I am vsersion 1 (换行) I am version 2
1 | git diff readme.txt |
已经了解当前文件与上一版的差异,知道对该文件做了哪些修改后就可以放心的将该文件提交到仓库中,先添加到暂存区中,再添加到仓库中。或者直接执行git commit -a -m "备注"
省去添加到暂存区的步骤
1 | git commit -a -m "增加了I am verison 2" |
版本回退
上述已经对文件readme.txt
进行了修改且提交到仓库中,继续往文件添加一行内容I am version 3
,然后提交到仓库中
1 | git commit -a -m "增加了I am verison 3" |
现在已经对文件readme.txt
做了三次修改了,可以使用git log
查看文件的修改记录(由近到远排序)。可以看到文件被修改的次数、时间、操作者、备注信息
1 | # 列出细节 |
如果想让文件回退到上一个版本的内容,就可以使用reset
命令来进行版本回退,这时候再查看内容就会发现readme.txt
内容变成了I am version 1 (换行) I am version2
。如果要回退到上上个版本的话就是HEAD^^
,有几个^
就回退几个版本。如果想要回退到前100个版本可以将命令修改为HEAD~100
1 | git reset --hard HEAD^ |
再次查看日志可以发现第三版的修改记录已经不见了
如果想要再次回到第三版的话就需要查看一下所有的操作日志,可以在操作日志中看到每个版本的版本号,如初始版本的版本号为1c6663f
1 | git reflog |
再通过指定版本号后就能回到对应的版本中
1 | git reset --hard c58b7c9 |
撤销修改
继续在readme.txt
末尾添加一行文本I am version 4
,添加完成后对刚添加的内容不满意想要回滚到没添加之前,可以将文件提交到仓库后再使用git restet --hard HEAD^
回退到上一个版本,也可以使用下方命令直接撤回到添加文本之前(在没有推送到暂存区时使用)
1 | git checkout readme.txt |
如果修改完后将文件提交到了暂存区,又对文件进行了修改,但还是不满意的话可以使用下方方法回退到暂存区的内容
继续在readme.txt
末尾添加一行文本I am version 4
,然后将其推送到暂存区中,在文件末尾继续添加一行I am version 5
,现在想回到version 4
就使用下方命令回退
1 | git checkout -- readme.txt |
删除文件
在工作目录下添加一个文件test.txt
,将该文件提交到仓库中。将文件test.txt
删除,删除文件后如果想要恢复该文件可以使用版本回退来解决,或者使用checkout
恢复该文件(在没有提交到版本库之前)
1 | git checkout test.txt |
分支管理
远程仓库
Github
Gitee
Git服务器搭建
��