git_usage

git使用简介


为什么使用git

git在程序员中的地位就好像图书管理员对于读者来说,管理了代码、文档的修改。相比于中心式的版本控制系统,git是基于分布式版本控制,每一个仓库都能完整地追踪修改。

git的发展历程不得不提Linus和Linux,随着Linux代码的增加,Linus手动管理代码难度越来越大,社区也越来越不满这种低效地管理方式。尽管当时已经有不少优秀的集中式的版本控制系统,但是Linus不屑于使用这种系统(集中式的版本控制系统不但速度慢,而且必须联网才能使用)。然后Linus使用了一个商业的版本控制系统BitKeeper,该公司为了表达对开源的支持、尊重,授权给Linux社区免费试用。但是随后社区大牛试图对BitKeeper进行反向工程,被BitKeeper公司获悉后收回授权。此时不得不佩服大牛就是大牛,Linus花了两周时间就完成了git这个分布式版本控制系统,并且成功地部署了Linux代码的版本控制。在这之后,越来越多的开源项目使用git作为版本控制系统,甚至GitHub公司免费提供了git作为版本控制系统的云管理仓库。


怎么样使用git

安装git

请参阅各自系统安装git的文档。

安装git后配置用户名和邮箱。

git config --global user.name "Name"

git config --global user.email "Email"

创建版本库

首先创建一个目录作为版本库的根目录,在该目录下使用git init .初始化该目录为版本库,此时版本库为空,目录会增加一个隐藏目录.git,该目录是git用来进行版本管理的目录,切记随意增加修改内容。

添加文件到版本库

首先创建一个文件ReadMe.md,输入内容第一次提交,然后输入命令git add ReadMe.md,此时文件ReadMe.md被提交到git的暂存区内stage。最后输入git commit -m "第一次提交"才将文件修改记录到git仓库中。

查看版本库状态

使用git status可以查看版本库提交、未提交、合并、未合并等状态。

查看文件修改内容

使用git diff ReadMe.md可以查看ReadMe.md的修改。

查看版本库提交日志

使用git log可以查看当前版本库历史提交日志,包括提交时间、提交注释、提交日志ID。

回退版本库

使用git reset --hard Head~1表示回退到上一版本,git reset --hard Head~n表示回退到上n版本。进行回退操作以后,回退ID后的修改都丢失了,此时如果知道最近的提交ID,那么通过git reset --hard 3628164可以 重新还原,其中3628164表示待还原的版本的ID。如果忘记了待还原的版本的ID,可以通过使用git reflog查看先前记录的版本的ID。

撤销修改

使用git checkout -- ReadMe.md可以撤销当前对文件的修改,如果此时暂存区中存在修改增加的版本,那么还原到当前,如果不存在那么文件内容还原到最近一次提交的内容,总之就是最近的一次提交。

如果想彻底丢弃当前工作区和暂存区中的文件内容,使用git reset HEAD ReadMe.md可以完成此功能。

删除文件

文件删除后可使用git rm ReadMe.md直接在git控制系统中删除ReadMe.md

创建与合并分支

git checkout -b dev创建dev分支,在dev分支中修改ReadMe.md,执行git add ReadMe.mdgit commit -m "dev分支中修改ReadMe.md",然后切换到master分支,执行git merge dev即可自动合并分支dev和master,此时在删除dev分支(git branch -d dev)。

解决冲突

在上述合并分支的过程中,很幸运没有遇到任何冲突,但是实际过程中master分支进行了修改,同时添加进管理系统中,此时的dev分支需要和master分支解决冲突才能合并。合并后使用git log --graph可以看到分支合并图。另外自动合并往往会丢失大量分支信息,此时使用git merge --no-ff dev禁止自动合并,其中no-ff表示禁止fast forward。

使用stash缓存当前工作区

使用git stash对于当前的工作区进行缓存。然后用git stash pop重新恢复缓存现场。


参考链接

Git教程