-
Notifications
You must be signed in to change notification settings - Fork 3.5k
2.3.1 Git add
git add / git commit / git diff / git stash / .gitignore
✍️ 童仲毅 | ⏳ 2018 年 12 月 1 日
©️ 本文演绎自 Atlassian 编写的 Saving Changes。页面上所有内容采用知识共享-署名(CC BY 2.5 AU)许可协议。
git add
命令将工作目录中的变化添加到缓存区。它告诉 Git 你希望下一个提交中包含这个文件的更新。不过,git add
不会实际上并不会改变你的仓库。直到你运行 git commit
,更改都没有真正被记录。
使用这些命令的同时,你还需要 git status
来查看工作目录和缓存区的状态。
git add
和 git commit
这两个命令组成了最基本的 Git 工作流。它们的作用是将项目的诸多版本记录到仓库历史中。不管使用哪种团队协作模型,每个 Git 用户都必须理解这两个命令。
一个项目的编写离不开这个基本模式:编辑、缓存和提交。首先,你在工作目录下编辑你的文件。当你想要备份当前的项目状态时,你使用 git add
缓存更改。当你觉得这个被缓存的副本已经就绪,你使用 git commit
将它提交到项目历史。git reset
命令用于撤销提交或被缓存的快照。
除了 git add
和 git commit
之外,git push
也是完整的 Git 协作流程中的重要一环。git push
用于将提交的更改发送到远端仓库。随后,其它团队成员也可以看到这些更改。
git add
命令和 svn add
不同。后者直接将文件添加到仓库中,而 git add
作用于更抽象的更改(更低一层)。也就是说,哪怕对于同一个文件,每次修改时你都需要使用 git add
,而 svn add
只需要使用一次。这听上去多此一举,但却使项目更易于管理。
git add
命令最主要的作用是将工作目录中的更改添加到 Git 的缓存区。缓存区是 Git 特有的功能之一,如果你之前使用的是 SVN(甚至是更古老的 Mercurial),那你可得花点时间理解了。你可以把它理解成工作目录和项目历史中间的缓冲区。缓存区是 Git 三个树状文件结构之一,另外两个是工作目录和提交历史。
缓存允许你把紧密相关的几份更改合并成一份快照,而不是直接提交所有新的更改。也就是说你可以同时进行多个无关的更改,最后分成几次将相关更改添加到缓存区并提交。对于任何版本控制系统来说,保持提交的原子性非常重要,这有利于追踪 bug 以及用最小的代价撤销更改。
git add <文件>
缓存 <文件>
中的更改,准备下次提交。
git add <目录>
缓存 <目录>
下的所有更改,准备下次提交。
git add -p
开始交互式的缓存。你可以将某个文件的其中一处更改加入到下次提交缓存。Git 会显示一系列更改,并等待用户命令。使用 y
缓存某一处更改,使用 n
忽略某一处更改,使用 s
将某一处分割成更小的几份,使用 e
手动编辑某一处更改,使用 q
退出编辑。
对于新项目来说,git add
和 svn import
的作用类似。使用下面两个命令为当前目录创建首个提交:
git add .
git commit
项目设置好之后,新的文件可以通过路径传递给 git add
来添加到缓存区:
git add hello.py
git commit
上面的命令同样可以用于记录已有文件的更改。如前所述,Git 不会区分被缓存的更改来自新文件,还是仓库中已有的文件。
这篇文章是「git-recipes」的一部分,点击 目录 查看所有章节。
如果你觉得文章对你有帮助,欢迎点击右上角的 Star 🌟 或 Fork 🍴。
如果你发现了错误,或是想要加入协作,请参阅 Wiki 协作说明。
这篇文章是「git-recipes」的一部分,点击 目录 查看所有章节。
如果你觉得文章对你有帮助,欢迎点击右上角的 Star 🌟 或 Fork 🍴。
如果你发现了错误,或是想要加入协作,请参阅 Wiki 协作说明。