通过git提交保存更改
在下面的例子中,我们有 onitroad.txt 文件在当前分支上更改了内容。
要提交文件的暂存快照,首先,我们应该使用 git add 命令暂存文件。
git add w3docs.txt
运行 git add 会将 onitroad.txt 文件移动到 Git 暂存区。
使用 git status 命令查看输出。
git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: onitroad.txt
绿色输出表示 onitroad.txt 将与下一次提交一起保存。
提交是通过执行创建的:
git commit
运行 git commit 会打开一个文本编辑器(我们可以通过 git config 设置它),询问提交日志消息和正在提交的内容列表:
# Enter the commit message of your changes. Lines that start # with '#' will be ignored, an empty message breaks off the commit. # On branch master # Changes needed to be committed: # (use "git reset HEAD ..." to unstage) ##modified: onitroad.txt
Git 的规范格式用于在第一行以少于 50 个字符总结整个提交,然后留下一个空行,之后给出更改的详细说明。
例如:
Change the message displayed by onitroad.txt - Update the sayHello() function to get the username - Change the sayGoodbye() function to a more welcoming message
提交消息的第一行是主题行,其余的是正文。
Git 提交 和 svn 提交 比较
SVN 是集中式应用程序模型,而 Git 是分布式应用程序模型。
SVN 提交将更改从本地客户端推送到集中存储库。
在 Git 中,快照被提交到本地存储库。
Git 提交可以推送到任意远程存储库。
定义
git commit 命令保存项目(item)(item)的所有当前阶段性更改。
创建提交以捕获项目(item)(item)的当前状态。
提交的快照被认为是项目(item)(item)的安全版本,因为 Git 在更改它们之前会询问。
在运行 git commit 命令之前, git add 命令用于提升对项目(item)(item)的更改,然后将其存储在提交中。
git提交常用选项
git commit -a | 提交工作目录中所有更改的快照。仅包含对跟踪文件的修改。 |
---|---|
git commit -m "commit message" | 使用传递的提交消息创建提交。默认情况下,Git提交将打开本地配置的文本编辑器,导致要输入的提交消息。 |
git commit -am "commit message" | 组合-a和-m选项以创建所有阶段更改的提交,并占用内联提交消息。 |
git commit --amend | 修改最后的提交。阶段更改将添加到之前的提交中。此命令打开系统配置的文本编辑器,并更改先前指定的提交消息。 |
git如何更新(修改)提交
以下示例打开已配置的文本编辑器,其中预先填充了已输入的提交消息。
这意味着我们正在编辑最后一次提交而不是创建新提交。
git add w3docs.txt git commit --amend
工作原理
Git 快照提交到本地存储库。
Git 创造了在本地存储库中收集提交的机会,而不是进行更改并立即将其提交到中央存储库。
这有很多优点,可以将功能拆分为提交、对相关提交进行分组以及在将其提交到中央存储库之前清理本地历史记录。
这也使开发人员有机会以孤立的方式工作。
快照,而不是差异
Git 基于快照,而 SVN 跟踪文件的差异。
svn commit 包含一个差异,它与添加到存储库中的原始文件进行比较。
Git 在每次提交中记录所有文件的全部内容。
在提交或者保存项目(item)(item)状态时,Git 会拍摄当前文件外观的快照并存储对该快照的引用。
如果文件没有变化,Git 不会再次存储它。