一、Git的下载和安装
Git官网链接:https://git-scm.com/
进入官网后选择Downloads
选择与系统相符合的版本下载,这里我使用的是windows系统
然后点击下载
根据流程安装完成后,使用以下命令查看git版本
git -v
运行结果:
二、git使用方式
命令行方式使用
1、设置用户名和邮箱
首先要设置用户名和邮箱地址,以便于在提交时识别出是谁提交的内容
git config --global user.name "用户名"
git config --global user.email "邮箱地址"
其中git config
的参数
参数 | 作用范围 |
---|---|
缺省 | 本地配置,只对本地仓库有效 |
–global | 全局配置,所有仓库有效 |
–system | 系统配置,对所有用户有效 |
2、保存用户名和密码
git config --global credential.helper store
3、查看git信息
通过以下代码可以查看本地git版本库信息
git config --global --list
4、新建版本库(仓库)
在新建时最好切换到一个新的目录,这里创建了一个learn-git文件夹
d:
cd D:\alpha_ordered\MyCodeBase
mkdir learn-git
cd learn-git
(1)初始化仓库
使用git init
初始化版本库
git init "目录"[可选]
可以看到在learn-git文件夹中显示了如下文件夹,这个文件夹存储的就是git仓库的信息
如果没有显示,有可能是被隐藏了,只要设置显示隐藏项目即可
(2)查看仓库状态
git status
因为我们从来没有过提交,所以显示的是No commits yet
还可以使用git status - s
简略查看状态。
将文件放到暂存区
这里将以一个新建的readme.MD文件作为示例来作为案例
新创建的文件是未被跟踪(Untracked files)的状态
通过git add
命令将文件放到暂存区,等待下一步操作。并查看仓库状态
git add readme.MD
git status
表示已经添加到暂存区,等待被提交
文件只有被提交到仓库中才能被保存起来,并且提交过程只能提交保存至暂存区的文件。这里再新建一个test.txt文件查看状态作为对比。
提交版本库
git commit -m "第一次提交"
在这个命令中需要传入-m
提交信息
再次查看仓库状态,已经把readme.MD提交到了仓库,所以已经不显示了。
批量添加文件
首先通过命令行再创建几个文件
echo "test1" > test1.txt
echo "test2" > test2.txt
echo "test3" > test3
echo "test4" > test4
echo "test5" > test5.sh
查看仓库状态
在git命令中可以使用*
+文件后缀
的形式将相同结尾的文件添加到暂存区后再查看仓库状态,假设我们要将所有以txt为结尾的文件添加到暂存区
git add *.txt
git status
如果需要添加当前目录的所有文件,可以使用以下命令
git add .
交互界面提交版本库
如果在提交版本库时不使用-m
参数会自动启动vim交互界面。
git commit
进入交互界面
交互界面常见操作如下:
命令 | 操作说明 |
---|---|
i | 进入编辑模式 |
esc | 退出编辑模式 |
:w | 保存 |
:wq | 保存并退出 |
:q | 退出vim |
查看提交记录
使用以下命令可以查看所有提交到本地版本库中的提交记录
git log
简洁的查看提交信息
git log --oneline
版本回退
如果想要回退到之前的版本,可以使用以下命令。
git reset
git reset三种模式
模式 | 工作区 | 暂存区 |
---|---|---|
soft | 保留 | 保留 |
hard | 不保留 | 不保留 |
mixed(默认) | 保留 | 不保留 |
在版本回退之前,我们先新建一个本地仓库repo,然后复制三份。
git init repo
cd repo
echo 111 > file1.txt
echo 222 > file2.txt
echo 333 > file3.txt
git add file1.txt
git commit -m "commit1"
git add file2.txt
git commit -m "commit2"
git add file3.txt
git commit -m "commit3"
git log
将仓库目录复制三份分别执行不同的参数
soft方法
在笔者的提交中,倒数第二次提交信息是1e285bf102eec4f4dc99e27517d5dd909ec5dadf
,下面先使用--soft
参数
cd ..
cd repo-soft
git reset --soft 1e285bf102eec4f4dc99e27517d5dd909ec5dadf
git log
dir
git ls-files
git status
通过上述的过程,已经将版本回退到上次提交到版本库提交file3.txt之前的状态,file3.txt依旧保存在工作区和暂存区。
hard方法
cd ..
cd repo-hard
git log --oneline
git reset --hard 1e285bf
git log --oneline
dir
git ls-files
从上面的过程可以看到不仅回到了提交之前的状态,工作区和暂存区的文件也被删除,我们使用以下命令看一下简略的提交日志
git reflog
可以看到这里只是包HEAD->master
切换到了倒数第二个提交,如果想要恢复到倒数第一个提交,也可以使用hard方式进行reset
git reset --hard ce5f4e9
git log --oneline
mixed方法
cd ..
cd repo-mixed
git log --oneline
git reset 1e285bf
git log --oneline
dir
git ls-files
通过以上过程,仅保留了工作区的文件
对比文件差距
在很多时候我们需要查看并对比工作区、暂存区、本地仓库之间不同版本和不同分支之间的差异
假如我们将file3.txt
修改为
工作区和暂存区的差异
使用以下命令进行对比
git diff
默认比较的是工作区和暂存区的差异
git add .
添加到暂存区之后再执行就不会显示任何东西了
工作区和版本库之间的差异
使用以下命令可以查看工作区和版本库之间的差异,在上一步的操作中只是把文件添加到了暂存区,在使用命令后依旧可以看到工作区与版本库的差距。
git diff HEAD
暂存区和版本库之间的差异
git diff --cached
再次提交
git commit -m "commit4"
两个版本之间的差距
git log --oneline
git diff 23921aa ce5f4e9
和上一个版本的差别
git diff HEAD~ HEAD
结果是一样的
head之前的2个版本
git diff HEAD~2 HEAD
查看文件的差异内容
git diff HEAD~3 HEAD file3.txt
删除文件
直接删除然后使用git add
我们将learn-git目录下的file1.txt删除后查看状态和暂存区的文件
git status
git ls-files
可以看到暂存区仍然保存了file1.txt文件
使用git add file1.txt
或git add .
删除掉暂存区中的文件
然而当使用git status
再次查看时发现,实际上版本库中仍然存在file1.txt文件
所以仍然需要提交一次git commit
更简单的删除方式是直接使用git rm
git rm file2.txt
git status
所以仍然需要提交一次git commit
如果只想删除暂存区内容而不想删除本地文件,可以通过添加--cached
实现,如git rm --cached file2.txt
gitignore忽略文件
在通常情况下有些文件并不需要上传到版本库,其中包括:
- 系统或软件自动生成的文件
- 编译产生的中间文件和结果文件
- 运行时生产的日志文件、缓存文件、临时文件
- 涉及身份、密码、口令、密钥等敏感信息文件
这种在添加和提交时忽略的文件可以写在.gitignore
文件中
echo "some log" > access.log
echo "other log" > other.log
echo access.log > .gitignore
因为在.gitignore
文件中写入了access.log
,所以只能看到other.log
和.gitignore
文件,看不到access.log文件
,再执行add
和commit
操作后也是值会将这两个文件添加到版本库当中
如果我们需要忽略掉以.log为结尾的所有文件,只需要在.gitignore中添加一行*.log
不同语言的.gitignore
模板可以参照https://github.com/github/gitignore
远程仓库
这里使用github作为例子,以下操作都需要登录github账号
登入账号后点击new创建新的repository
创建后添加必要的项目信息
然后点击create repository
创建项目
克隆远程库
克隆过程一般通过HTTPS、SSH方法进行
复制一下HTTPS的连接,然后使用git clone
命令克隆远程仓库,这里需要注意的是需要登录github
使用SSH
SSH的使用方式较为复杂
需要先生成密钥
ssh-keygen -t rsa -b 4096
打开C:/users/用户名/.ssh可以看到生成的密钥,复制id_rsa.pub文件,复制其中的内容
在github设置密钥
首先回到github主页,点击头像,选择settings
然后选择SSH and GPG keys
选择New SSH key,将复制的内容粘贴进去,然后确认即可。
复制SSH选项中的连接,然后使用git clone
命令
图形化界面(GUI)
IDE插件/扩展