git学习

Last updated on 7 months ago

本地仓库

获取本地仓库

新建目录,右键进入git bash命令行

输入

1
git init 

就可以将当前目录初始化为一个git仓库,成功后会多出一个.git文件夹(有些时候会隐藏,在资源管理器的查看中设置)

仓库基本提交逻辑

在我们提交修改时候,文件会经过三个区域工作区(workspace)、暂存区(index)、仓库(respository)

当我们在工作区新建/修改文件时,文件会进入未跟踪/未暂存状态,通过git add指令,将这两种状态添加到暂存区,状态变为已暂存,最后通过git commit提交到仓库成为一次提交记录

可以通过git status查看文件的提交状态

仓库的基本操作

查看文件提交状态

在工作目录下新建一个文件,进入git bash输入

1
git status

可以看到文件的提交状态

1
2
3
4
5
6
7
8
9
10
11
$ git status
On branch master

No commits yet

Untracked files:
(use "git add <file>..." to include in what will be committed)
1.txt

nothing added to commit but untracked files present (use "git add" to track)

显示为Untracked为跟踪

提交

在查看文件状态中,我们新建了一个文件,他的状态为Untracked

我们可以add文件名将他添加到暂存区

1
git add fileNam

也可以用通配符.将所有文件添加到暂存区

1
git add .

接着通过commit提交到仓库

1
git commit -m "提交注释"

最后通过log查看日志

1
git log

出现了提交记录

查看记录

可以通过log查看

1
git log

log还有很多个参数比如--all

下面是常用的一个

1
git log --pretty=oneline --abbrev-commit  --graph

意思为:提交信息显示一行,简短模式,以图形式显示

版本切换与回退

在log中我们可以看到很多commitID,可以在git bash中选中,git会自动复制,在使用鼠标中键粘贴,不需要是完整的,在简短模式下显示的后7位也行

1
git reset --hard  commitID

比如我现在有两个提交

1
2
* 3437f03 (HEAD -> master) 修改
* 32d66d4 我的注释

现在我希望回退到修改前,也就是我刚提交“我的注释”这个时候,那么就reset + 我的注释的id

1
git reset --hard 32d66d4

再次查看,发现提交的修改没了,只有一个“我的注释”,文件里新加的内容也没了

回退了,但是并没有删除,我们还是可以通过“修改”的ID重新找回

1
git reset --hard 3437f03

想要找到这个ID可以用reflog

1
git reflog

可以看到历史记录

reset 有三种用法,分别是--soft,--hard,--mixed(默认),下面是三种用法的不同

  • --soft:软回退

    表示回退到某个版本,且保留工作区和暂存区的所有修改内容

  • --haed:硬回退

    表示回退到某个版本,且丢弃工作区和暂存区的所有修改内容

  • --mixed:混合回退

    表示回退到某个版本,保留工作区的修改内容并丢弃暂存区的修改内容

忽略文件

我们有些文件可能不需要纳入GIT管理,而当我们使用git add .的时候会把该文件提交,如果用git add filename一个个加又太慢了

这时我们可以创建一个.gitignore文件,在其中放入我们希望忽略的文件名,支持正则。

比如

1
*.a

会把所有文件扩展名为a的文件忽略