add
, push
和 commit
的区别是什么?对于从 SVN 转过来的人,可能会有点困惑,因为在 SVN 中,“update” 会“add”一些东西,而“commit”则会推送并添加东西。
git 中有许多不同的功能。希望能从您的经验中得到一些解释。
add
, push
和 commit
的区别是什么?git add
将被修改的文件添加到队列中,以便稍后提交。文件未被提交。
git commit
提交已添加的文件,并创建一个带有日志的新版本...如果您没有添加任何文件,git 将不会提交任何内容。您可以使用 git commit -a
组合这两个操作。
git push
将更改推送到远程存储库。
这张来自Git Cheat Sheet 的图片很好地说明了工作流程
git add
没有在图���中显示,因为建议的提交方式是组合的 git commit -a
,但您可以在更改块中心理上添加一个 git add
以理解流程。
最后,push
是一个单独的命令,因为 Git 的哲学。Git 是一种分布式版本控制系统,您的本地工作目录就是您的存储库!您提交的所有更改都会立即反映和记录。只有在您完成所有工作并想要更新远程存储库(可能与他人共享)时,才使用 push
。这是一种优雅的方式,在本地保存更改(无需网络开销),仅在需要时更新它,而不是在每次提交时都更新它。这间接导致更轻松的提交/分支等操作(为什么不呢?对您有什么成本吗?),从而导致更多的保存点,而不会干扰存储库。
git add
选择变更内容
git commit
在本地记录变更
git push
分享变更
git add
命令将文件添加到 Git 索引中,该索引是用于准备提交的对象的暂存区域。git commit
命令将索引中的文件提交到代码仓库中,git commit -a
是一个快捷方式,可先将所有已修改的跟踪文件添加到索引中。git push
命令将所有待处理更改推送到与你分支映射的远程代码仓库(例如在 GitHub 上)。要理解 Git,您需要投入更多的精力,而不只是浏览文档,但这绝对值得。只是请勿尝试直接将 Git 命令与 Subversion 映射,因为它们大部分没有直接的对应命令。
我对'add'命令的作用感到困惑。我刚刚从《Git Pro》一书中读到了一段非常启发性的段落,我想在这里添加一下,因为它可以澄清事情。
原来,当你运行git add命令时,Git会将文件完全暂存。如果你现在提交,benchmarks.rb的版本就是你上次运行git add命令时的版本,而不是在你运行git commit时工作目录中文件的样子。如果你在运行git add之后修改了文件,则必须再次运行git add以暂存文件的最新版本。
摘自:Chacon, Scott. “Pro Git.” Springer, 2009-08-19T00:00:00+00:00. iBooks. 此材料可能受版权保护。
add命令告诉Git开始跟踪一个文件。
commit命令将您当前的更改提交到本地存储库中。
push命令将您的本地存储库推送到上游。
add -in git 用于告诉 git 我们要提交哪些文件,它将文件放入暂存区
commit- in git 用于将文件保存到本地机器上,这样如果我们进行任何更改甚至删除文件,我们仍然可以恢复我们已提交的文件
push - 如果我们在本地机器上提交文件,它们仍然容易丢失,如果我们的本地机器丢失、损坏等,为了保护我们的文件或共享我们的文件,通常我们希望将我们的文件保存在远程仓库(如 Github)中。为了在远程仓库上保存,我们使用 push
示例 暂存名为 index.html 的文件 git add index.html
提交已暂存的文件 git commit -m '你的提交名称'
将文件推送到 Github git push origin master
add
和 commit
是相互关联的。
add
允许我们继续对本地仓库进行更改,而当我们想要将这些更改共享到远程仓库时,commit
允许我们记录这些更改。
push
命令可以被视为一种工具,它将提交从本地仓库传输到远程仓库。