git 利用好git status的提示信息

利用好git status的提示信息

git里有工作区,暂存区,本地库,远程库这些概念,在此不赘述。本地库里面你会处于某个分支branch上,具体到你会在这条branch的某个版本HEAD,这个HEAD的名字不会变,但它可以移动到它的上一个版本。

git status是很重要的一条命令,一般在执行git操作前都会看一下这条命令的提示(感觉可以这么说,看懂git status的提示,那基本上你就懂git操作了)。下面开始介绍:

Changes not staged for commit

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)
  • 既然是Changes not staged for commit,就说明出现这个提示下的所有文件改动,都是存在于工作区的。stage是暂存区的意思,not stage说明都不在暂存区,那么说明在工作区。
  • (use “git add …” to update what will be committed)。执行这条命令就可以工作区里面的改变加入到暂存区。可以执行git add .把当前目录下所有改动加入暂存区。
  • (use “git checkout – <file>…” to discard changes in working directory)。执行这条命令将丢弃在工作区的改动。可以执行git checkout *把当前目录下所有工作区的改动丢弃掉。

Untracked files

Untracked files:
  (use "git add <file>..." to include in what will be committed)
  • Untracked files,就说明出现这个提示下的所有文件都是当前HEAD没有被加入过的文件。这种改动也属于工作区。
  • (use “git add <file>…” to include in what will be committed)。把Untracked files加入暂存区。

Changes to be committed

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
  • 既然是Changes to be committed,那么说明改动已经存在于暂存区,需要提交到本地库上去。执行完git commit以后,会把这条提示下面的所有改动作为一次commit提交到本地库上去。
  • (use “git reset HEAD <file>…” to unstage)。to unstage说明了这个改动已存在于暂存区,当然也存在于工作区。这条命令清空add命令向暂存区提交的关于file文件的修改。也就是说,只清空暂存区,但不动工作区。

Unmerged paths

Unmerged paths:
  (use "git reset HEAD <file>..." to unstage)
  (use "git add <file>..." to mark resolution)
  • 这是我运行git pullgit stash apply后,冲突的文件。在文件中把冲突都保留下来了,并需要自己手动处理。
  • (use “git reset HEAD <file>…” to unstage)。分析同上。改动已在暂存区。
  • (use “git add <file>…” to mark resolution)。在你手动修改后,(修改后工作区更新了,但暂存区还没更新),需要add来更新暂存区。

冲突文件

冲突文件示例:

<<<<<<< Updated upstream
//来自git pull的更新
=======
//来自git stash apply的更新
>>>>>>> Stashed changes

branch信息

On branch master
Your branch is up to date with 'origin/master'.

你在当前分支master上,且你的分支和远程库origin的master分支是一致的,即本地库的HEAD和远程库的HEAD是同一个。

On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

你的本地分支比远程分支领先了一次commit。

git reset的提示

Unstaged changes after reset

当前git status的提示是:本地库的版本指向的是最新的这个commit。

On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean

执行git reset HEAD~后的提示为:

Unstaged changes after reset:
M	first.java
D	second.java

这条命令会把HEAD指向最新的commit之前的那个版本(清空掉最新的这个commit),同时会把暂存区的改变清空掉,这样,改动就只存在于工作区了。Unstaged意思就是将以前已经stage的改动给Unstaged了。

posted @ 2019-08-01 14:55  allMayMight  阅读(2136)  评论(0编辑  收藏  举报