Git添加/删除(提交)

7

我接手了一个网站,其中一部分已经使用git版本控制(其中一个开发人员使用了它,另一个没有使用)。因此,我将提交到目前为止的所有内容,并从那里开始工作。

但是,有一些文件的git状态我不太理解。它们被标记为:

# Changed but not updated:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)

如果我只运行 git commit 命令,那么对这些文件所作的更改会被提交到代码库中吗?我不明白为什么要执行 add/rm 操作 - 这似乎是将添加和删除结合在一起的做法。
感谢您的帮助!

可能重复了Git: file "changed but not updated" - Perception
这个提示并不是建议你同时添加和删除它们。它只是说这两个命令可能会做你想要的事情。(另外,我认为你使用的是旧版本的Git - 在更新的版本中,它会显示“Changes to be committed”或“Changes not staged for commit”,而rm不是提示的一部分。) - Cascabel
除了升级 Git 之外,考虑到您正在提出的问题类型,您可能还想阅读更多的文档,例如《Pro Git》(http://git-scm.com/book)。 - Cascabel
2个回答

10

通常,如果你想以工作文件夹中的本来面貌来处理事情,你可以:

git add -A

这将会提交包括文件删除和追踪未被追踪的文件在内的所有更改。

在此之前,建议您检查一下您的.gitignore文件,以免提交不想要的文件,这些文件可能会使您的代码库变得臃肿,并污染差异和补丁的输出。

完成上述操作后,您可以:

git commit

记录历史更改。然后你可以

git push origin your_branch_name

与您设置的远程共享此新历史记录。


2
这些文件已经被暂存但尚未提交。如果您只是运行git commit命令,它们将被提交。更重要的是,您想提交这些文件吗?它们可能与您的工作文件相同,也可能不同。http://gitready.com/beginner/2009/01/18/the-staging-area.html是一个介绍暂存区的不错的文章。

谢谢,那么git准备提交的内容(可能)与工作副本中的内容不同吗? - penguin
是的。暂存区是“我即将提交的内容”。这使您可以仅提交更改文件的部分,以验证您的提交是否符合您的要求等。虽然它是Git中较为抽象的概念之一,但也是其中更为强大的概念之一。 - robrich
很好。那么有没有办法区分暂存区和工作副本之间的差异呢? - penguin
1
@penguin:是的,使用 git diff 命令。要比较当前提交和工作副本,请使用 git diff HEAD 命令;要比较当前提交和索引(暂存区),请使用 git diff --cached 命令。(参见 man git-diff。) - Cascabel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接