1. git简介
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
2. git安装
在CentOS上使用yum进行安装:
#yum install git-core
在Ubuntu上使用apt-get进行安装:
#apt-get install git-core
3. git常用命令
命令 | 含义 |
---|---|
add | 添加文件内容至索引 |
bisect | 通过二分查找定位引入 bug 的变更 |
branch | 列出、创建或删除分支 |
checkout | 检出一个分支或路径到工作区 |
clone | 克隆一个版本库到一个新目录 |
commit | 记录变更到版本库 |
diff | 显示提交之间、提交和工作区之间等的差异 |
fetch | 从另外一个版本库下载对象和引用 |
grep | 输出和模式匹配的行 |
init | 创建一个空的 Git 版本库或重新初始化一个已存在的版本库 |
log | 显示提交日志 |
merge | 合并两个或更多开发历史 |
mv | 移动或重命名一个文件、目录或符号链接 |
pull | 获取并整合另外的版本库或一个本地分支 |
push | 更新远程引用和相关的对象 |
rebase | 本地提交转移至更新后的上游分支中 |
reset | 重置当前HEAD到指定状态 |
rm | 从工作区和索引中删除文件 |
show | 显示各种类型的对象 |
status | 显示工作区状态 |
tag | 创建、列出、删除或校验一个GPG签名的 tag 对象 |
4. 克隆项目
在此我们以克隆libevent项目为例, libevent的git地址是:libevent
接下来我们执行以下命令:
$git clone https://github.com/libevent/libevent
执行完成之后,我们就会发现在当前目录下出现了一个libevent目录,其中包含了此项目的所有源文件。
当然,也可以在clone的时候,重新指定项目的存放路径和项目名,执行以下命令即可:
$git clone https://github.com/libevent/libevent yourPath/mylibevent
执行完成之后,切换到yourPath目录下,就会发现mylibevent已存在。
5. 查看当前文件状态
对于git而言,文件的状态分为已跟踪,未跟踪,已缓存,已提交。我们可以使用以下命令来查看当前工程的文件状态:
$git status
对于我们新clone的项目,所有的文件都处于已跟踪状态,所以会显示以下内容:
位于分支 master
您的分支与上游分支 ‘origin/master‘ 一致。
无文件要提交,干净的工作区
但是当我们其中添加一个新文件的时候,再次运行此命令,就会出现不同的结果。如下所示:
$touch README.txt
$git status
执行结果如下:
位于分支 master
您的分支与上游分支 ‘origin/master‘ 一致。
未跟踪的文件:
(使用 "git add <file>..." 以包含要提交的内容)
test.txt
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
在此提示我们,test.txt未被跟踪。那我们按照提示使用git add命令添加之后再查看状态:
$git add test.txt
$git status
执行结果如下:
位于分支 master
您的分支与上游分支 ‘origin/master‘ 一致。
要提交的变更:
(使用 "git reset HEAD <file>..." 撤出暂存区)
新文件: test.txt
通过结果我们可以看出,此时这个新的文件处于暂存状态。
上面我们看了添加一个新文件时,其状态的变化,下面我们来看看修改一个文件其状态时如何变化的:
首先,我们先修改一个文件(epoll.c),然后查看文件状态
$git status
执行结果如下:
位于分支 master
您的分支与上游分支 ‘origin/master‘ 一致。
尚未暂存以备提交的变更:
(使用 "git add <file>..." 更新要提交的内容)
(使用 "git checkout -- <file>..." 丢弃工作区的改动)
修改: epoll.c
提示我们当前项目中存在未暂存的文件,接下来我们执行git add后再查看文件状态:
$git add epoll.c
$git status
执行结果如下:
位于分支 master
您的分支与上游分支 ‘origin/master‘ 一致。
要提交的变更:
(使用 "git reset HEAD <file>..." 撤出暂存区)
修改: epoll.c
结论:
对于新添加的文件,其状态为未跟踪状态,当执行git add命令后,文件将处于已暂存状态。而对于项目中本身包含的文件,当我们修改后,
其状态为未暂存,当执行git add命令后,将处于已跟踪状态。
注意:git add命令最终只是将文件的状态修改为已暂存状态,而并没有提交修改。
6. 提交修改
在上一节中我们将新增的文件或修改过的文件都处于暂存状态了,接下来我们通过git commit命令来提交我们的修改:
$git commit
此命令将我把我们的修改提交到本地的repository中,如果想要把代码提交到远程的repository中,我们需要执行以下命令:
$git push
此命令将会把我们的本地修改同步到远程的repository中。
注意:当我们初次使用git commit时,会弹出以下信息:
*** Please tell me who you are.
Run
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
to set your account‘s default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got ‘[email protected](none)‘)
也就说,我们没有配置相关的信息,我们按照提示进行配置即可:
$git config --global user.email yourEmailAddress
$git config --global user.name userName
接下来就可以正常完成提交了!
版权声明:本文为博主原创文章,未经博主允许不得转载。