GIt命令——修改和提交

用于修改和提交的Git命令主要有以下几个:

  • $ git status      # 检查当前文件状态
  • $ git add         # 跟踪/暂存文件
  • $ git diff              # 查看变更内容
  • $ git commit       # 提交更新
  •  

1. $ git status

git status 命令可以查看当前工作区及暂存区域中文件的状态。 如果在克隆仓库后立即使用此命令,会看到类似这样的输出:

这说明你现在的工作目录相当干净。换句话说,所有已跟踪文件在上次提交后都未被更改过。 此外,上面的信息还表明,当前目录下没有出现任何处于未跟踪状态的新文件,否则 Git 会在这里列出来。 最后,该命令还显示了当前所在分支,并告诉你这个分支同远程服务器上对应的分支没有偏离。

如果在工作目录下创建一个新文件,再运行git status命令,结果如下:

在状态报告中可以看到新建的文件出现在 Untracked files 下面。 未跟踪的文件意味着 Git 在之前的快照(提交)中没有这些文件;Git 不会自动将之纳入跟踪范围,除非你明明白白地告诉它“我需要跟踪该文件”, 这样的处理让你不必担心将生成的二进制文件或其它不想被跟踪的文件包含进来。

如果修改了工作目录中一个已被跟踪的文件但还未提交,执行git status的结果如下:

2. $ git add

git add 命令用于将内容从工作目录添加到暂存区(或称为索引(index)区),以备下次提交。也可以用于跟踪一个新文件,并将其添加到暂存区。git add命令的使用方法主要有以下两种:

(1)$ git add .  # 跟踪/暂存工作目录中所有新增和修改过的文件

在工作目录中添加一个新文件,并修改一个已被跟踪的文件后的状态为:

运行git add .命令后的状态为:

 

(2)$ git add <file>  # 跟踪/暂存工作目录中指定的文件

3. $ git diff 

当需要查看任意两棵树的差异时你可以使用 git diff 命令。 此命令可以查看工作目录与你的暂存区的差异(git diff 默认的做法),暂存区域与最后提交之间的差异(git diff --staged),或者比较两个提交记录的差异(git diff master branchB)。

3.1 $ git diff  # 比较的是工作目录中当前文件和暂存区域快照之间的差异

不加参数直接执行git diff命令,可以查看尚未暂存的文件更新了哪些部分,也就是修改之后还没有暂存起来的变化内容。


3.2 $ git diff --staged  # 比较已暂存的将要添加到下次提交里的内容

3.3 $ git diff <branch1> <branch2>  # 比较两个提交记录的差异

4. $ git commit

git commit 命令将所有通过 git add 暂存的文件内容在数据库中创建一个持久的快照,然后将当前分支上的分支指针移到其之上。每次准备提交前,先用 git status 看下,是不是所有需要提交的修改都已暂存起来了, 然后再运行提交命令 git commit。否则提交的时候不会记录这些还没暂存起来的变化, 这些修改过的文件只保留在本地磁盘。

若不加任何选项执行git commit命令,会启动文本编辑器以便输入本次提交的说明。

可以看到,默认的提交消息包含最后一次运行 git status 的输出,放在注释行里,另外开头还有一空行,供你输入提交说明。

你也可以在 git commit 命令后添加 -m 选项,将提交信息与命令放在同一行,如下所示:

可以看到,提交后它会告诉你,当前是在哪个分支(master)提交的,本次提交的完整 SHA-1 校验和是什么(463dc4f),以及在本次提交中,有多少文件修订过,多少行添加和删改过。

尽管使用暂存区域的方式可以精心准备要提交的细节,但有时候这么做略显繁琐。 Git 提供了一个跳过使用暂存区域的方式, 只要在提交的时候,给 git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤。



猜你喜欢

转载自www.cnblogs.com/shichangxing/p/11397331.html