0.1 git add 命令

git add 命令可将该文件添加到暂存区。

  1. 添加一个或多个文件到暂存区:

     git add [file1] [file2] ...
    
  2. 添加指定目录到暂存区,包括子目录:

     git add [dir]
    
  3. 添加当前目录下的所有文件到暂存区:

     git add .
     
    
  4. 添加 .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,同时有格式要求。

  1. 第一行为 commit 显示行,或者称为 header?
  2. 第二行空着
  3. 其余在第三行开始去写
$ 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 添加,但不希望包含在下一提交快照中的缓存。