目录
[1 获取本地仓库](#1 获取本地仓库)
[2 基础操作指令](#2 基础操作指令)
[2.1 基础操作指令框架](#2.1 基础操作指令框架)
[2.2 git status查看修改的状态](#2.2 git status查看修改的状态)
[2.3 git add添加工作区到暂存区](#2.3 git add添加工作区到暂存区)
[2.4 提交暂存区到本地仓库](#2.4 提交暂存区到本地仓库)
[2.5 git log查看提交日志](#2.5 git log查看提交日志)
[2.6 git reflog查看已经删除的记录](#2.6 git reflog查看已经删除的记录)
[2.7 git reset版本回退](#2.7 git reset版本回退)
[2.8 添加文件至忽略列表](#2.8 添加文件至忽略列表)
1 获取本地仓库
要使用Git进行代码的版本控制,确实需要首先获取或创建一个本地仓库,步骤如下:
1)创建本地仓库目录 :在电脑创建一个新的文件夹,例如命名为git_``test,
这个文件夹将作为你的本地Git仓库。
2)打开Git Bash:进入这个新创建的目录后,可以通过右键点击文件夹空白处,选择"Git Bash Here"来打开Git Bash窗口。右键菜单中在上一节安装中有默认安装此选项。
3)初始化Git仓库 :在Git Bash窗口中,输入命令git init
,git init
命令会初始化一个新的Git仓库,创建必要的Git文件和目录结构。
4)检查.git目录 :执行git init
命令后,Git会在当前目录下创建一个名为.git
的隐藏目录。这个目录包含了Git仓库的所有元数据,例如提交历史、分支信息等。
2 基础操作指令
2.1 基础操作指令框架
Git工作目录下对于文件的修改(增加、删除、更新)会存在几个状态,这些修改的状态会随着我们执行Git的命令而发生变化。
参考黑马程序员教程
2.2 git status查看修改的状态
git status
是一个非常有用的Git命令,它用于显示当前Git仓库的状态。下面是git status
命令的一些常见输出示例:
-
未跟踪的文件:显示当前目录下未被Git跟踪的新文件。
Untracked files: (use "git add <file>..." to include in what will be committed) newfile.txt
-
已修改的文件:显示已经被Git跟踪但自上次提交以来有修改的文件。
Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: existingfile.txt
-
已暂存的文件:显示已经被添加到暂存区,准备下一次提交的文件。
Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: newfile.txt modified: existingfile.txt
首先通过touch创建一个文件,新创建的文件应该是未跟踪的文件:
2.3 git add添加工作区到暂存区
git add
是一个用于将更改添加到Git的暂存区的命令。暂存区是Git中的一个临时区域。以下是一些常用的 git add
命令用法:
- 添加单个或多个文件:
git add file1.txt file2.txt
- 添加所有更改 :
.
表示当前目录下的所有文件,而-A
表示所有更改,包括删除的文件。
git add .
或者
git add -A
- 添加修改过的文件和新文件:这将只添加修改过的文件和被删除的文件到暂存区,但不包括新文件。
git add -u
- 使用通配符添加文件 :这将添加当前目录下所有以
.txt
结尾的文件到暂存区。
git add *.txt
将上面添加的文件暂存到缓冲区中,添加后的文件应该是已暂存的文件:
2.4 提交暂存区到本地仓库
当使用 git add
将更改添加到暂存区后,就可以使用 git commit
来保存这些更改到本地仓库的历史记录中。以下是一些基本的 git commit
命令用法:
- 提交暂存区的更改:
git commit -m "Your commit message"
-m
选项后面跟着的是提交信息,自定义的描述。如果你不使用 -m
选项,Git 会打开默认的文本编辑器让你输入提交信息:
- 提交所有更改(包括未跟踪的文件) :
-a
选项会将所有已跟踪的文件的更改和新文件添加到暂存区,然后执行提交。注意,这不会包括已经被删除的文件。
git commit -a -m "Your commit message"
- 修改最后一次提交 :
--amend
选项允许你修改最后一次提交的信息或添加额外的更改。如果你需要修改最后一次提交,可以使用:
git commit --amend -m "Your new commit message"
- 使用交互式暂存: 如果你想要对暂存区的更改进行更细致的控制,这将允许你选择哪些更改包含在提交中:
git commit -i
- 使用Git的图形用户界面提交: 如果你更喜欢使用图形界面,可以使用:
git gui commit
将上面缓存区的文件添加到代码仓库,并添加文件的描述信息:
2.5 git log查看提交日志
git log
是一个用于查看Git仓库提交历史的命令。它可以显示从最近到最旧的提交记录,包括提交的作者、日期、提交信息等。以下是一些常用的 git log
选项:
- 查看所有提交记录(常用):
git log
- 查看指定数量的提交 :这里的
-n
选项后面跟着数字,表示你想要查看的提交记录的数量。
git log -n 5
- 查看提交的统计信息:将显示每个提交的文件更改统计,包括哪些文件被修改、添加或删除,以及行的更改数量。
git log --stat
- 查看每次提交的内容差异 :
-p
选项会显示每个提交的差异(即补丁),让你可以看到具体的代码更改。
git log -p
- 查看图形化的提交历史:这将以图形化的方式展示分支和合并的历史。
git log --graph
- 查看某个特定文件或目录的提交历史:
git log -- path/to/file_or_directory
- 查看某个作者的提交:
git log --author="author name"
- 查看最近的一次提交:
git log -1
查看代码仓库中的文件修改日志信息:
使用git log --graph
进行图形化的显示。
2.6 git reflog查看已经删除的记录
git reflog
命令可以查看最近的Git引用操作记录,每条记录对应一个唯一的引用ID,显示了对引用的改变以及对应的提交ID。可以帮助你找回意外删除或重置的提交,从而恢复代码状态或查看历史操作记录。
使用 git reflog
的一些场景:
-
找回丢失的提交 :如果你执行了
git reset --hard
并且后悔了,你可以使用git reflog
找到丢失的提交的哈希值,然后使用git reset --hard <commit-hash>
来恢复。 -
理解HEAD的移动 :如果你不确定HEAD是如何到达当前位置的,
reflog
可以给你一个详细的历史记录。 -
恢复分支状态 :如果你不小心删除了一个分支,
reflog
可以帮助你找到分支的最后状态,并恢复它。
2.7 git reset版本回退
git reset
可以用来撤销提交、修改暂存区中的文件、重置分支指针等。以下是一些常见的 git reset
用法:
- 重置暂存区,但不更改工作目录 :不带任何参数的
git reset
命令会将暂存区中的所有更改重置为最后一次提交的状态,但不会影响工作目录中的文件。<commit>为
移动HEAD和当前分支到指定的提交,可以使用git log(git-log)
或git reflog
指令查看
git reset
或
git reset <commit>
- 重置暂存区,同时更新工作目录 :使用
--hard
选项会将暂存区和工作目录都重置为最后一次提交的状态。这会丢失所有未提交的更改。
git reset --hard
或
git reset --hard <commit>
- 重置暂存区,但不更新工作目录(只保留更改) :使用
--soft
选项会将暂存区重置为最后一次提交的状态,但保留工作目录中的更改,这样你可以重新暂存这些更改并提交。
git reset --soft
或
git reset --soft <commit>
使用git reset --hard <commit>
命令回退到指定版本。
但是如果操作失误,想取消怎么办?
- 第一种:如果没回退之前第一条的
<commit>
还在命令行中,任然可通过git reset --hard <commit>
回退。 - 第二种:如果commit已经在命令行中已经清除,可通过
git reflog
查看之前的操作状态<commit>
,然后使用git reset --hard <commit>
回退。
2.8 添加文件至忽略列表
一般我们总会有些文件无需纳入Git 的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以在工作目录中创建一个名为 .gitignore 的文件(文件名称固定),列出要忽略的文件模式。下面是一个示例: