Git 彻底删除文件?
習慣沉默
習慣沉默 2017-05-02 09:47:07
0
7
572
git add b.txt
rm b.txt
git commit -m '删除b.txt文件'

我执行了第三行commit之后提示

On branch master
Changes not staged for commit:
        deleted:    b.txt

no changes added to commit

然后我再git checkout -- b.txt 还能恢复到暂存区?为什么没有彻底删除掉?

習慣沉默
習慣沉默

reply all(7)
PHPzhong

Newbie. . . Write some tutorials. . . . .

In principle, git has three different locations to save files locally.

  1. Working tree: This represents all the files and folders you can see

  2. index: This is actually saved in the .git folder like the following version library (the saving format is not discussed here)

  3. Repository: Saves all submitted versions.

After everything is submitted, the latest submissions in WorkingTree, index area and repository are exactly the same.

git add 的意思是用 WorkingTree中的文件替换/更新index区中的文件。因此git add b.txt之后就是用当前保存的b.txtUpdate the b.txt file in index.

rm b.txt 仅仅是一条 linux 命令,就是删除文件的意思。对git来说这样只是在WorkingTree中删除了b.txt.

git commit 的意思是把 index 中的文件打包起来放入版本库。由于此时b.txt还在 index 区,所以git commit 仍旧会把b.txtUpdated to the repository.

Changes not staged for commit:
        deleted:    b.txt

This shows the difference between the current WorkingTree and the index area:
The b.txt file has been deleted from the current WorkingTree, but the file still exists in the index.

no changes added to commit

This prompt should be said to be a warning, because git commit means to package the contents of the index area and put it into the repository. However, since it has been committed before and no new things have been added, the contents of the index area are the same as the latest submission. , there is no need for git to save again, so it displays "Nothing can be committed"

git rm The meaning of this command is to delete a certain file from the index area and WorkingTree, so after git rm b.txt it will no longer be in the indexgit rm 这条命令的意义是从index区和WorkingTree中删除某个文件,所以git rm b.txt之后index中就没有了b.txt. That’s it

git checkout <branch> means to update the contents of WorkingTree and index area with the latest commit in branch. Since it is irreversible, this command will give a prompt if the content in these two places has not been submitted to the repository. git checkout <branch> 的意思是用branch中最新的提交更新WorkingTree和index区中的内容。由于不可逆,所以如果这两个地方的内容没有提交到版本库的话这条命令会给出提示。
git checkout -- filename的意思是用index区的内容替换WorkingTree的某个文件--git checkout -- filename means to replace a file in WorkingTree with the content of the index area. -- is optional, indicating that everything after this parameter is the file name. . (Because sometimes the branch/tag may have the same name as the file)

An additional command is included. . .
git status This means to show the difference between WorkingTree and index area (red by default), and the difference between index and the latest submitted version (green by default? Dark green?). In addition, there will be tips on how to update each other between them.

为情所困

try git rm filename

巴扎黑

The questioner first needs to know why git needs the add operation. Because git only has the command line at the beginning, the add operation is equivalent to the file selection operation under the GUI, so the add and commit operations should be regarded as a whole (just like the GUI You can submit the file by selecting it below) and should not be separated.

滿天的星座

1.git add b.txt //Add b.txt from the workspace to the stage
2.rm b.txt //Delete b.txt in the workspace, but do not execute git rm b. txt delete the file from the repository
3.git commit -m 'delete b.txt file'//Since git rm b.txt is not executed, commit only submits the content in 1
-->2,3 You should execute git rm b.txt to delete the file

阿神

I would like to remind you that modifying file names and deleting files in git are almost the same. As mentioned above, you need to use the git rm and git mv commands to operate respectively. There is a book called the authoritative guide to git. You can take a good look at it. Look

巴扎黑

.Delete files:
 Delete a file in the workspace, rm file name
 There are two situations:
  The first case: the file needs to be deleted in the version library.
   git rm file name
  git commit -m 'description'
  Second case: accidentally delete the file
  git checkout -- file name

巴扎黑

One less git rm added in front

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template