Git是一个免费的、开源的分布式版本控制系统,目前越来越多的项目都在使用Git。
Git与SVN的不同点
SVN是集中式版本控制系统,版本库是放在中央服务器的,在这里保存着所有代码和历史版本信息。如果中央服务器出现了故障,这些信息将会丢失。即使你本地有从中央服务器取得过代码,虽然代码还在,但是历史版本信息确是没有的。当开始在某个项目下工作时,首先需要连接到中央服务器取出最新的文件,然后工作。工作完成后,需要把自己做完的活提交到中央服务器。拉取和提交这两个步骤都需要联网才能完成。
Git是分布式版本控制系统,没有中央服务器的概念。当一个Git客户端从远程Git仓库拉取代码后,这个客户端也就包含了远程GIt仓库的所有信息,包括代码和历史版本。 每一个Git客户端都是一个完整的代码仓库。即使某一个Git客户端挂了,也不会影响到其他客户端和远程仓库,只是在这个客户端开发的新代码没有了。而如果是远程仓库挂了,也不会像SVN那样失去所有的历史版本信息,因为每个客户端中都有这样的版本信息。前面说了,SVN拉取和提交代码是需要联网的,而Git在提交时是不需要联网的,因为提交到的是本地的代码仓库。只有在将本地的提交push到远程仓库时,才需要联网。
说了这么多,其实Git和SVN的不同点总结起来就是Git的每一个客户端都相当于SVN的中央服务器,都包含完整的代码仓库。SVN的每次提交都需要联网提交到中央服务器,而Git的每次提交都是提交到本地仓库。
Git常用命令
配置
配置用户名(- -global表示此配置适用于计算机的当前用户。如果不加- -global,表示此配置仅适用于当前git仓库)
git config - -global user.name “your name”
配置邮件地址
git config - -global user.email “your email address”
为某个命令配置别名(如 git config - -global alias.st status,配置完后就可以使用git st代替git status了)
git config - -global alias.xx [command]
查看Git配置
git config - -list [- -global]
编辑Git配置
git config - -edit [- -global]
分支
列出所有本地分支(前面有星号“*”的为当前工作分支)
git branch
列出所有远程分支
git branch -r
列出所有本地和远程分支
git branch -a
创建名为“name”的新分支
git branch [name]
切换到“name”分支
git checkout [name]
创建名为“name”的新分支,并切换到该分支
git checkout -b [name]
删除名为“name”的分支
git branch -d [name]
将“name”分支合并到当前分支
git merge [name]
推送“name”分支到远程(可以使用[:remote-name]指定远程分支的名称,否则远程分支名称与本地“name”分支相同)
git push origin [name][:remote-name]
删除“name”远程分支(与上一条命令比较,其实就是推了一个空分支到远程,相当于删除远程分支)
git push origin :[remote-name]
删除“name”远程分支
git branch -r -d origin/[remote-name]
日志
查看提交历史
git log
-p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新
git log -p -2
显示简要的增改行数统计
git log - -stat