'git diff' doesn't give any output

前端 未结 9 2149
迷失自我
迷失自我 2020-12-08 09:11

If I run git diff I would expect to see a list of changes of my working directory relative to whatever had been committed before (or a list of the working direc

9条回答
  •  轮回少年
    2020-12-08 09:43

    Why do you get no git diff output before adding?

    Git does not treat files in the filesystem as automatically included in the version control system. You have to add things explicitly into the Git repository (as you are doing by adding the current directory with git add .).

    There is no output to git diff because Git doesn't see any changes inside your repository, only files outside the repository, which it considers 'untracked' and so ignores when generating a diff.

    I found this one of the key differences to version control systems like SVN (along with staging and ignoring directories).

    If you want the untracked files to be included, git add them.

    If you don't want them in your repository, add them to your .gitignore (see git ignore --help). This is good for C object files or Python .pyc files.

    Why don't I get git diff output after adding?!

    So this is slightly different. If you do git status you will see the file is now in the staging area. This is the area for files that you are about to commit.

    When you git add a new file into the Git repository, it skips the working copy and goes straight into the staging area. This make sense in a way, and git add always moves files into staging area whether it is tracked or untracked.

    To see the differences between the last check in and the staging area do git diff --cached.

    To see the differences between the staging area and your working copy, do git diff. If there is nothing in the staging area then this is the same as doing a diff between the last check in and your working copy.

提交回复
热议问题