git是一款免费且开源的分布式版本控制系统,适用于敏捷高效地管理从小型到大型的项目。它能够迅速有效地处理不同规模项目的版本管理。
分布式与集中式版本控制系统的主要区别在于,开发者可以在本地提交代码。通过克隆(git clone),开发者可以将完整的Git仓库复制到本地机器上。
要学习Git,可以搜索以下资源:
从一般开发者的角度来看,Git的功能特性包括:
从主开发者的角度(假设主开发者不参与代码开发)来看,Git的功能包括:
Git的优点包括:
Git的缺点包括:
Git安装配置说明:本文仅介绍基础部分,详细操作请参考文首提供的链接。
在使用Git之前,需要先安装Git。Git支持在Linux/Unix、Solaris、Mac和Windows平台上运行。
在Windows平台上安装Git非常简单,通过msysGit项目提供的安装包即可。可以在GitHub页面下载exe安装文件并运行:
安装完成后,可以使用命令行的Git工具(自带ssh客户端),还可以使用图形界面的Git项目管理工具。
在开始菜单中找到"Git"-"Git Bash",会弹出Git命令窗口,你可以在该窗口进行Git操作。
Git的工作流程:
通过
git init命令,可以将当前目录变成Git可以管理的仓库:
$ git init Initialized empty Git repository in /Users/michael/learngit/.git/
在Windows系统上,为了避免各种问题,请确保目录名(包括父目录)不包含中文。
使用
git clone命令可以将Git仓库拷贝到本地,以便查看项目或进行修改。如果你需要与他人合作一个项目,或者想查看代码,可以克隆该项目。执行命令:
git clone [url]
其中,[url]是你想要复制的项目地址。
使用
git add命令可以将文件添加到仓库:
$ git add readme.txt
执行此命令后没有输出。
第二步,使用
git commit命令将文件提交到仓库:
$ git commit -m "wrote a readme file" [master (root-commit) cb926e7] wrote a readme file 1 file changed, 2 insertions(+) create mode 100644 readme.txt
git commit命令中的
-m参数后面是本次提交的说明,可以输入任意内容。
使用
git status命令可以查看自上次提交后是否有修改。演示该命令时可以加上
-s参数以获得简短的输出结果。如果不加该参数,将会详细输出内容:
$ git status On branch master Initial commit Changes to be committed:
git diff命令用于查看difference,显示的格式是Unix通用的diff格式。
执行
git diff命令可以查看
git status结果的详细信息。
git diff命令显示已写入缓存与已修改但尚未写入缓存的改动的区别。
git diff有两个主要应用场景:
git diff
git diff --cached
git diff HEAD
git diff --stat
git status命令显示自上次提交后更改或写入缓存的改动,而
git diff命令则逐行显示这些改动的具体内容。
接下来我们来看一下
git diff --cached的执行效果:
使用
git add命令将想要快照的内容写入缓存区,执行
git commit命令将缓存区内容添加到仓库中。
Git为每个提交记录你的姓名和电子邮件地址,因此第一步需要配置用户名和电子邮件地址:
$ git config --global user.name "xxxxxxxx" $ git config --global user.email xxx@xxxxx.com
如果你觉得
git add提交缓存的流程过于繁琐,Git允许你使用
-a选项跳过这一步。命令格式如下:
git commit -a
使用
git rm命令可以将条目从缓存区中移除,这与
git reset HEAD将条目取消缓存不同。"取消缓存"意味着将缓存区恢复到我们做出修改之前的状态。
默认情况下,
git rm file会将文件从缓存区和硬盘(工作目录)中删除。如果你想在工作目录中保留该文件,可以使用
git rm --cached:
Git常用命令总结:
git clone 远程地址
git branch 分支名称(分支名称通常格式为feature-实现的功能)
git checkout 分支名
git branch -D 分支名
git status和
git status .(后者表示当前项目所有文件,注意最后有一个点“.”)
git add 文件目录/文件名和
git add .(后者表示当前目录下所有文件提交到暂存区,注意最后有一个点“.”)
git commit -m "标签注解"
git push origin 远程分支名
git pull origin 分支名;如果有冲突,可以用
git status查看有冲突的文件。
pull,=fetch+merge
fetch是将远程代码拉下来,
merge是合并进去。
git reset .