一、介绍
Git是一款免费、开源的分布式版本控制系统,不必服务器端软件支持。用以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
二、安装配置
1、安装
在linux系统上进行安装事实上是非常便利的,以作者使用的CentOS系统为例,安装命令如下:
yum install curl-devel expat-devel gettext-devel \ openssl-devel zlib-devel
yum -y install git-core
安装完成后,你可以如下查看git
git --version
2、配置
你可以自行配置用户信息和文本编辑器以及差异分析工具,只需要查询相关的命令即可。
三、完整的git工作流程
因此我们可以看到,git可以帮助你和他人共同对文件进行修改、操作。
四、工作区、暂存区、版本库
下图可以清晰地展示三者之间地关系
我们可以来具体地定义:
工作区:即电脑中的目录
暂存区:存放在.git/index中
版本库:工作区中的隐藏目录.git
我们可以来分析几个命令:
git add:对工作区文件执行,则暂存区目录树被更新,工作区修改的文件内容被写入到对象库中的一个新的对象中,而对象的ID被记录在暂存区的文件索引中。
git rm --cached :直接从暂存区删除文件,工作区则不做出改变。
五、仓库
git clone
我们在下载软件过程中频繁使用的命令
我们可以克隆文件到指定目录:
git clone <repo> <directory>
其中:repo为Git的仓库,directory为本地的目录
git init命令
我们可以使用指定目录作为仓库,不指定则在当前目录自动生成,例如:
git init yusnwang
接着我们就可以利用get add命令添加一些文件到仓库中。
六、一些基本操作
其中:git commit -为将暂存区内容添加到仓库中。
1、提交与修改
我们重点关注git add的相关命令
# 逐个添加文件
git add filename
# 添加当前目录中的所有文件
git add -A
# 添加当前目录中的所有文件更改
git add .
# 选择要添加的更改(你可以 Y 或 N 完成所有更改)
git add -p
2、一些远程操作
git remote 远程仓库操作
git fetch 从远程获取代码库
git pull 下载远程代码并合并
git push 上传远程代码并合并
3、日志与修改
git log
//显示存储库中所有提交的列表 该命令显示有关提交的所有信息,例如提交ID,作者,日期和提交消息
git log
// 提交列表仅显示提交消息和更改
git log -p
//包含您要查找的特定字符串的提交列表
git log -S 'project'
//显示存储库中提交列表的摘要。显示提交ID和提交消息的较短版本。
git log --oneline
//显示昨天以来仓库中的提交列表
git log --since=yesterday
//等等
git blame
// 查看指定文件的修改记录
git blame <file>
七、分支与合并
分支使你可以在不影响master分支的情况下处理代码的单独副本。首次创建分支时,将以新名称创建master分支的完整克隆。然后,你可以独立地在此新分支中修改代码,包括提交文件等,当你将新功能添加到分支中之后,你可以将其合并回master分支
1、分支
//创建分支
git branch (branchname)
//查看存储库的所有当前分支
git branch -a
//用于查看代码来源(即已合并到当前分支中的分支)
git branch -a --merged
//切换分支
git checkout (branchname)
//删除分支
git branch -d (branchname)
2、合并
// 合并到当前分支
git merge
//可以利用命令查看当前分支
git checkout master
八、修复错误和回溯
//切换到最新提交的代码版本
git reset HEAD
// 切换到最新提交之前的代码版本
git reset HEAD^ -- filename
九、搜索
// 搜索目录中的字符串
git grep 'project'
十、标签
git tag -a v1.0
-a 选项为"创建一个带注解的标签"
十一、远程仓库
目的:将数据放到一台其他开发人员能够连接的服务器上。
添加:
git remote add [shortname] [url]
当远程仓库是github是,因为传输通过SSH加密,还需要
ssh-keygen -t rsa -C "youremail@example.com"
这会生成一个.ssh文件夹,打开其中的id_rsa.pub,你可以得到所需要的key,进入github设置SSH and GPG key,并验证
ssh -T git@github.com
再创建相应的仓库,根据github的提示:
$ mkdir runoob-git-test # 创建目录
$ cd runoob-git-test/ # 进入目录
$ echo "# 测试" >> README.md
# 创建 README.md 文件并写入内容
$ ls # 查看目录下的文件
README
$ git init # 初始化
$ git add README.md # 添加文件
$ git commit -m "添加 README.md 文件" # 提交并备注信息
# 提交到 Github
$ git remote add origin git@github.com: 仓库目录
$ git push -u origin master
即可完成上传
还可以利用git remote查看当前的远程库,git remove删除