我正试图绕过 Git 的复杂性。
我使用“git clone [url here]”从 GitHub 下载了一个存储库。
我做了一些更改,尝试使用“git commit”提交它们。这似乎没有将更改推送到我的本地存储库(在本地目录“.git”中),它建议我改用“git commit -a”。
我想知道为什么我必须在“git commit”后面加上“-a”,git中的“stage”和“commit”有什么区别?
我正试图绕过 Git 的复杂性。
我使用“git clone [url here]”从 GitHub 下载了一个存储库。
我做了一些更改,尝试使用“git commit”提交它们。这似乎没有将更改推送到我的本地存储库(在本地目录“.git”中),它建议我改用“git commit -a”。
我想知道为什么我必须在“git commit”后面加上“-a”,git中的“stage”和“commit”有什么区别?
-a
,--all
告诉命令自动暂存已经修改和删除的文件,但是你没有告诉git的新文件不受影响。
Git 有一个暂存区。默认情况下git commit
,仅提交添加到该暂存区域的数据。-a
切换从工作副本本身提交所有未提交的更改。
暂存区的想法是您可能不想一次提交所有更改。如果是这种情况,git add
您想要提交的文件 - 或者如果您想要更细粒度的文件,您将git add -p
只选择要提交的文件中的一些更改。
在 GitHub Git 教程中有一个很好的解释和一张图片,显示了它的基本工作原理:http://web.archive.org/web/20130519130755/http: //learn.github.com/p/normal.html
你不必。
该-a
选项要求git commit
自动添加您对存储库中的文件所做的所有更改。
你并不总是想要那样。特别是因为有时您想要进行多次提交以区分变更组。当您想选择要添加的内容时,通常在提交之前使用git add
.
显然,如果我们要提交修改过的文件或未跟踪的文件,我们必须做两件事。
第一个是“staging” 第二个是“commit”
暂存是任何提交过程的中间阶段,当然它是可选的。暂存过程只是为了防止意外提交。一般来说,在提交之前,任何新的未跟踪文件或任何跟踪文件中的修改都需要暂存,然后如果我们键入git commit
暂存的文件,则仅提交。
简单地说,暂存的主要目的是防止意外提交。如果您使用暂存过程,则可以方便地在提交之前通过使用丢弃任何更改git checkout filename
.
看看这个页面: http: //git-scm.com/about/staging-area
如果你真的相信你不需要 staging ,你可以使用git commit -a
它来简单地提交所有当前未跟踪的文件和跟踪文件中的修改。
始终建议进行暂存,因为您可以丢弃当前提交中不需要的任何更改。如果您使用git commit -a
,则不必git add filename
用于分期
git commit -a
是以下的简写:
git add file.txt
git commit file.txt
这只是将新文件提交到存储库的一种更简单的方法。(文件必须在提交之前“添加”)
git -a commit
相当于
git add .
git commit