git commit

git commit命令提交stage区的快照到项目历史中去(HEAD). 被提交的快照被认为是一个项目的安全版本. Git不会修改他们, 除非你显示的要求了. 和git add一样git commit是Git最重要的命令之一.

尽管名字相同git commit和svn commit完全不一样. 快照被提交到本地仓储,  不会和其他git仓储有任何的交互影响.

用法

git commit

提交stage区的快照. 上面的命令运行后会自动打开一个文本编辑器让你写一些关于这次commit的描述. 填写后, 保存文件关闭文本编辑器才会真正的commit.

git commit -m "<message>"

这样就不会弹出一个文本编辑器了, 可以直接在commit命令中直接包含对这次commit的描述.

git commit -a

提交工作目录下面的所有修改过的文件. 注意了这些文件只包括已经被tracked过而且有修改的文件.

讨论

快照被提交到本地仓储. 这和SVN完全不同, 在SVN中working copy被提交到了中心仓储. 相反, Git不会强迫你和中心仓储交互, 知道你自己想这样做. 就如stage区是本地工作目录和项目历史(HEAD)之间的一个缓冲区, 每个开发者的本地仓储是他们的贡献和中心仓储的一个缓冲区.

SVN是直接commit修改到中心仓储. Git不同, git开发者有机会在他们本地的仓储中积累一些commit. 这样做比起SVN来说有许多好处:这样可以把相关的commits组织起来, 在push到中央仓储前清除本地的历史. 让开发者在一个完全独立的隔离的环境下工作, 推迟集成直到在一个恰当的时候.

快照, not differences

SVN跟踪的是文件的不同之处, Git版本控制模型是基于快照的. 例如, SVN commit由diff组成(与被添加到仓储中的原始文件相比). Git纪录每次commit的每个文件的整个内容.

这种方式使得Git操作起来比SVN要快, 因为一个特定版本的文件不需要通过组装diff来产生--可以马上从Git的内部数据库中获得每个文件的完整的版本.Git的快照模型广泛影响于git的方方面面.

例子

下面的例子假设你已经有了一个文件hello.py, 他即将被commit到项目历史中去. 首先你需要使用git add把他添加的stage区, 然后commit这个stage区的快照.

git add hello.py
git commit

运行后会打开一个文本编辑器要求你输入关于这次commit的一些描述, 同时还会列出哪些文件要被commit:

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
#modified: hello.py

Git不要求这个commit描述有特殊的格式, 但是一个好的经典的格式是在第一行用少于50个字符的文字概括这次commit, 然后空一行, 接下来详细的描述发生了什么修改. 例如:

hange the message displayed by hello.py

- Update the sayHello() function to output the user's name
- Change the sayGoodbye() function to a friendlier message

  

[译]git commit的更多相关文章

  1. [译]git commit --amend

    git commit --amend命令用来修复最近一次commit. 可以让你合并你缓存区的修改和上一次commit, 而不是提交一个新的快照. 还可以用来编辑上一次的commit描述. 记住ame ...

  2. [译]How to Write a Git Commit Message

    原文: http://chris.beams.io/posts/git-commit/ 介绍:为什么好的commit message很重要 你浏览项目commit message的时候或多或少会有些困 ...

  3. xcode svn commit is not under version control (1) & git commit

    使用Xcode提交一个第三方库时,由于包含资源文件,总是提交不了,提示报错:XXX commit is not under version control (1) 网上查了下,得知 xcode对于sv ...

  4. linux显示git commit id,同时解决insmod模块时版本不一致导致无法加载问题

    linux内核默认会包含git的commit ID. 而linux的内核在insmod模块时,会对模块和内核本身的版本做严格的校验.在开发产品时,改动内核后,由于commit ID变更,会导致linu ...

  5. [译]git的那些flag

    git add -p console有一个交互式的界面(如下图),让你一个一个文件的选择是add还是不add.注意这些文件必须是tracked过的, 也就是说如果你的新的文件从来没有add过,那么他不 ...

  6. git commit 代码时提示: Warning: Your console font probably doesn‘t support Unicode.

    git 提交代码是会遇到以下问题, git commit 代码时提示: Warning: Your console font probably doesn‘t support Unicode. If ...

  7. [译]git rebase -i

    使用rebase -i会在终端出现一个交互页面. 在这个交互页面中我们可以对要rebase的commit做一定的修改. 用法 git rebase -i <master> 把当前的分支的c ...

  8. [译]git reset

    git reset 如果说git revert是一个安全的撤销方式, 那么git reset就是一个非常危险的方法了. 当你使用git reset撤销的时候, 你没有可能在回到最初了-他是一个永久的不 ...

  9. [译]git revert

    git revert git revert用来撤销一个已经提交了的快照. 但不是从项目历史中移除这个commit, 而是生成一个新的commit, 老的commit还是保留在历史项目里面的. 这样做的 ...

随机推荐

  1. WHMCS系统API调用

    WHMCS:域名管理系统,现在网络上很多借助此系统Shadowsocks插件+ShadowsocksR多用户服务端进行VPN的售卖,能做到流量控制等. 在对接此系统的API时,我发现了很多功能都已经实 ...

  2. FT232RL变砖之后

    FT232RL是个是神奇的片子,说万能可能有些夸张,但是...总之就是FTDIChip这个神奇的公司基于类似的技术,做了很多好用的产品,包括转IIC啦,转SPI啦,密码狗啦之类的.是个很有用的工具就对 ...

  3. poj3484 Showstopper 二分

    题目地址 二分用的很是巧妙!关键是抽象出问题本质. #include <cstdio> #include <string> #include <cstring> ; ...

  4. [iOS OpenCV错误解决]

    (编译使用O-C会出现错误:<list> not found) (未添加系统库会出现的错误:undefined symbols for architecture armv7) iOS工程调 ...

  5. 关键字static(1)

    static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念.被static修 ...

  6. Notepad++ 开启「切分窗口」同时检视、比对两份文件

    Notepad++ 是个相当好用的免费纯文本编辑器,除了内建的功能相当多之外,也支持外挂模块的方式扩充各方面的应用.以前我都用 UltraEdit 跟 Emeditor,后来都改用免费的 Notepa ...

  7. html img src base64

    网页上有些图片的src或css背景图片的url后面跟了一大串字符,比如:data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAYAAABId ...

  8. python操作数据库

    一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安装文件,双击安装文件一步一步进行操作即可. Linux 下的安装可能会更加简单,除了下载安装包进行安装外,一般的l ...

  9. bootstrap panel 和table的使用

    一.HTML中的页面内容 <div class="col-sm-12"> <!-- <div class="m-b-md" style= ...

  10. HTML学习笔记——图片显示、图片跳转、图片相对路径

    1>显示图片.用a标签实现点击图片跳转.地图标签/点击图片上固定区域跳转 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit ...