Repository
使用GIT管理一个项目的时候,就需要一个仓库(repository)用于存放GIT对项目管理所必须要保存的各种文件,使用 git init 命令创建一个新的仓库。GIT会在当前目录下创建一个.git文件夹,用作仓库。然后,当你使用GIT记录每一次代码改动的时候,GIT就会把需要的信息都放到这个文件夹下面。
Commit
- commit-id(sha-id):这是一个通过sha-1算法算出来的一个id,它不只作为每个commit的唯一识别码,也可以用来验证保存的代码是否损坏。所以在GIT在管理代码的时候,如果发生代码损坏,可以很有效的检测到。
- author:作者
- date: 日期时间
- log messge:一段作者对代码改动的文字描述。
- change-id:如果是和repo、gerrit一起使用的话,repo会加上这个信息,以便在整个代码系统中识别同一个改动的多个版本。
- 新建一个工作分支(topic branch)
- 作一些代码改动
- 查看当前状态(很常用!):git status 查看当前branch以及那些文件有改动;git diff 查看目前为止的详细的改动情况。
- git add xxx 将这些改动暂时归档。在很多时候,一个change包含的东西并不少,我们在做到一半的时候通常也需要暂时保存一些东西。使用git add会将指定的文件的现有改动暂时保存下来(这个暂时归档的地方,GIT称它为staging area,可以认为是一个临时的snapshot。顺便说一下HEAD,在GIT中,HEAD总是指向项目当前状态最近的一次正式的snapshot。)。git add . 会将所有改动暂时归档。
- git reset xxx 将某个文件从staging area中移出来。git reset 不带参数的时候,就是将staging area中所有的文件移出。
- 查看staging area中的详细改动:git diff --cached
- 继续写代码,git add xxx 将新的改动归档。
- 当你发现你的改动非常不合理,想要取消这些改动的时候:git checkout xxx 将某个文件恢复到修改之前(最后一次snapshot)。git checkout . 会恢复所有的文件到修改之前的状态,很方便的功能,但使用的时候一定注意,不要让自己的心血付诸流水。
- 重复上面的步骤,直到你认为你的改动已经可以作为一个有效的change,那你就可以执行 git commit 来将当前的改动真正的保存下来。记得在commit message里面写上适当的描述信息,这样在查看代码历史的时候,就能方便的知道每个change都干了些什么。
- 有时候,你commit以后,你还发现还有需要修改的地方(特别是让别人review的话,commit之后需要多次改动也是很常见的事情),那么你就重复上面的步骤,不过在最后commit的时候加上 --amend 参数,这样,它就会将目前的修改内容添加到最近的一次commit。如果忘记/误用了 --amend 参数的时候怎么办呢?只要在编辑commit message的时候把内容全部清空,保存退出,GIT就会放弃这次commit。
- 根据情况,将这个改动合并(merge)回原来的主分支
查看帮助:git tag -h
- 从远端获取最新的代码
- git rebase xxx 更新你当前的branch到最新状态,然后把你的代码改动放在最上面
- 向远端提交代码
- git log 查看项目从当前位置(最近一个snapshot)之前的历史记录。可以这么来理解:当你在某个branch上面的时候,这个snapshot就是当前分支的最新的一个comit,当你不在一个branch上面的时候,就是当前情况下最新的那个commit。
- git log shaid/tag 同上,不过指定了snapshot的位置
- git log file_name 同上上,不过查看的是特定文件相关的改动记录
- git log branch 查看特定branch的历史记录
- git log branch file_name 同上,不过查看的是特定文件相关的改动记录
- git log --no-merges 由于GIT在进行merge的时候,会自动生成一个merge的commit,但其实这个commit本身是没有内容的,--no-merges这个参数的作用就是在查看log的时候忽略这种commit。
- HTTP:只是从服务器上下载代码
- HTTPS:需要登录,可以下载和上传代码,但上传代码的时候需要每次登录
- SSH:配置好以后,GIT会自动采取SSH验证关于SSH的配置,这是github上面关于如何配置SSH的帮助:https://help.github.com/categories/56/articles