0.1 git add 命令
git add 命令可将该文件添加到暂存区。
-
添加
一个或多个文件到暂存区:git add [file1] [file2] ... -
添加
指定目录到暂存区,包括子目录:git add [dir] -
添加
当前目录下的所有文件到暂存区:git add . -
添加
.c 文件到暂存区git add *.c
0.2 git status 命令
git status 命令用于查看在你上次提交之后是否有对文件进行再次修改。
$ git status
On branch master
Initial commit
Changes to be committed: (use "git rm --cached <file>..." to unstage)
new file: README
new file: hello.php
通常我们使用 -s 参数来获得简短的输出结果:
$ git status -s
AM README
A hello.php

AM 状态的意思是这个文件在我们将它添加到缓存之后又有改动。
0.3 git diff 命令
git diff 命令比较文件的不同,即比较文件在暂存区和工作区的差异。
git diff 命令显示 “已写入暂存区” 和 “已经被修改但尚未写入暂存区” 文件对区别。
git diff 有两个主要的应用场景。
- 尚未缓存的改动:git diff
- 查看已缓存的改动: git diff —cached
- 查看已缓存的与未缓存的所有改动:git diff HEAD
- 显示摘要而非整个 diff:git diff —stat
显示暂存区和工作区的差异:
$ git diff [file]
显示暂存区和上一次提交(commit)的差异:
$ git diff --cached [file]
$ git diff --staged [file]
显示两次提交之间的差异:
$ git diff [first-branch]...[second-branch]
在 hello.php 文件中输入以下内容:
<?php
echo '菜鸟教程:www.runoob.com'; ?>
使用 git status 查看状态:
$ git status -s
A README
AM hello.php
$ git diff
diff --git a/hello.php b/hello.php
index e69de29..69b5711 100644
--- a/hello.php
+++ b/hello.php
@@ -0,0 +1,3 @@
+<?php
+echo '菜鸟教程:www.runoob.com';
+?>
git status 显示你上次提交更新后的更改或者写入缓存的改动, 而 git diff 一行一行地显示这些改动具体是啥。
接下来我们来查看下 git diff —cached 的执行效果:
$ git add hello.php
$ git status -s
A README
A hello.php
$ git diff --cached
diff --git a/README b/README
new file mode 100644
index 0000000..8f87495
--- /dev/null
+++ b/README
@@ -0,0 +1 @@
+# Runoob Git 测试
diff --git a/hello.php b/hello.php
new file mode 100644
index 0000000..69b5711
--- /dev/null
+++ b/hello.php
@@ -0,0 +1,3 @@
+<?php
+echo '菜鸟教程:www.runoob.com';
+?>
0.4 git commit 命令
将暂存区内容添加到本地仓库中。
提交暂存区到本地仓库中:
git commit -m [message]
提交暂存区的指定文件到仓库区:
$ git commit [file1] [file2] ... -m [message]
-a 参数设置修改文件后不需要执行 git add 命令,直接来提交
$ git commit -a
不加 -m,则会跳转到 vim 中进行添加 commit message,同时有格式要求。
- 第一行为 commit 显示行,或者称为 header?
- 第二行空着
- 其余在第三行开始去写
$ git commit
0.4.1 设置提交代码时的用户信息
开始前我们需要先设置提交的用户信息,包括用户名和邮箱:
$ git config --global user.name 'runoob'
$ git config --global user.email test@runoob.com
如果去掉 —global 参数只对当前仓库有效。
0.4.2 提交修改
接下来我们就可以对 hello.php 的所有改动从暂存区内容添加到本地仓库中。
以下实例,我们使用 -m 选项以在命令行中提供提交注释。
$ git add hello.php
$ git status -s
A README
A hello.php
$ git commit -m '第一次版本提交'
[master (root-commit) d32cf1f] 第一次版本提交
2 files changed, 4 insertions(+)
create mode 100644 README
create mode 100644 hello.php
现在我们已经记录了快照。如果我们再执行 git status:
$ git status
# On branch master
nothing to commit (working directory clean)
以上输出说明我们在最近一次提交之后,没有做任何改动。
如果你没有设置 -m 选项,Git 会尝试为你打开一个编辑器以填写提交信息。 如果 Git 在你对它的配置中找不到相关信息,默认会打开 vim。
0.5 git mv 命令
git mv 命令用于移动或重命名一个文件、目录或软连接。
git mv [oldfile] [newfile]
如果新但文件名已经存在,但还是要重命名它,可以使用 -f 参数:
git mv -f [oldfile] [newfile]
0.6 git rm 命令
git rm 命令用于删除文件。
手工删除工作区,git status 提示 Changes not staged for commit (修改未提交) staged for commit 的提示。
git rm 删除文件有以下几种形式:
1 - 从暂存区和工作区中删除:
git rm <file>
2 - 删除前修改过 & 已放暂存区,则必须要用强制删除选项 -f。
git rm -f <file>
3 - 删除暂存区,保留工作区。换句话说,仅是从跟踪清单中删除,使用 —cached 选项即可: —cached 选项即可:
git rm --cached <file>
0.7 git reset 命令
git reset 命令用于回退版本,可以指定退回某一次提交的版本。
git reset 命令语法格式如下:
git reset [--soft | --mixed | --hard] [HEAD]
—mixed 为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。
git reset [HEAD]
实例:
$ git reset HEAD^ # 回退所有内容到上一个版本
$ git reset HEAD^ hello.php # 回退 hello.php 文件的版本到上一个版本 $ git reset 052e # 回退到指定版本
—soft 参数用于回退到某个版本:
git reset --soft HEAD
实例:
$ git reset --soft HEAD~3 # 回退上上上一个版本
—hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交:
git reset --hard HEAD
实例:
$ git reset –hard HEAD~3 # 回退上上上一个版本
$ git reset –hard bae128 # 回退到某个版本回退点之前的所有信息。
$ git reset --hard origin/master # 将本地的状态回退到和远程的一样
**注意:**谨慎使用 –hard 参数,它会删除回退点之前的所有信息。
HEAD 说明:
-
HEAD 表示当前版本
-
HEAD^ 上一个版本
-
HEAD^^ 上上一个版本
-
HEAD^^^ 上上上一个版本
-
以此类推…
可以使用 ~数字表示
-
HEAD~0 表示当前版本
-
HEAD~1 上一个版本
-
HEAD^2 上上一个版本
-
HEAD^3 上上上一个版本
-
以此类推…
执行 git reset HEAD 以取消之前 git add 添加,但不希望包含在下一提交快照中的缓存。