摘要
Git是一个免费的开源分布式版本控制系统,旨在快速高效的处理从小到大的所有项目。本篇文章介绍一些Git中的基本概念,顺带罗列一些基本的操作。
Git安装
apt-get install git
:
linux环境下用apt或yum工具进行安装(windows环境可以去官网下载安装包)
Git信息配置
Git提供了git config工具用于配置或读取相应的工作环境变量(存在相应的config文件中)
git config --global user.name "zkx"
:配置用户名
git config --global user.email zkx@xxx.com
:配置用户邮件地址
git config --list
:查看已有的配置信息。
工作区、暂存区和版本库概念
工作区(Working
Directory):电脑中能看到的目录,也就是被管理的文件夹。
版本库(Repository):或者叫仓库,工作区中有个隐藏目录.git,这个不属于工作区,是Git的版本库。
暂存区(stage/index):版本库分为暂存区和本地仓库,暂存区相当于提交至本地仓库前的一个过渡区域。在这里提交文件不会产生版本号。
远程仓库(Remote):存放在Git服务器上的仓库,便于多个不同工作节点进行并行工作及合并。
以下命令用于产生版本库:
git init
:在一个目录下初始化仓库。
git clone
:拷贝一份远程仓库,即下载项目。
将文件添加到版本库中时分两步执行:
git add
:将文件从工作区添加到暂存区。
git commit
:提交更改,将暂存区的所有内容提交到当前分支。(创建Git版本库时默认处于master分支,所以该命令往master分支上提交更改)。
使用以下命令查看版本库状态以及提交记录:
git status
:查看版本库状态,哪些文件是没有add至暂存区的,哪些文件是没有commit至版本库的。
git log
:查看提交日志(不包括已经删除的commit记录和reset记录),可以使用git
log
--pretty=oneline简化输出信息。(这个命令可以查看每次提交后的版本号commit
id,便于版本回退)。 可以使用--graph参数查看分支、合并等信息。
git reflog
:查看所有操作记录,包括提交和回退的操作,可以找到被回退掉的版本号。
提交撤回和版本回退
Git一类的版本控制工具最重要的功能之一就是版本回退。以下命令是常用的回滚命令。
撤销工作区的修改(用暂存区版本替换掉工作区版本):
git checkout .
:用暂存区所有文件替换工作区文件,这个命令用于清除工作区中未添加至暂存区的改动。
git checkout --<file>
:将某一指定的file文件用暂存区版本替换工作区版本。
git restore <file>
:同git checkout
--
撤销暂存区的修改(用master分支版本替换掉暂存区版本):
git reset HEAD
:撤销暂存区所有文件的修改(用master分支所有文件替换暂存区所有文件,工作区不受影响)。
git reset HEAD <file>
:撤销暂存区file文件的修改(用master分支所有文件替换暂存区所有文件,工作区不受影响)。
git restore --staged <file>
:同git reset HEAD
用master分支版本同时替换暂存区版本和工作区版本:
git checkout HEAD .
或git checkout HEAD <file>
:用master分支版本同时替换暂存区版本和工作区版本,不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。
版本回退:
git reset --hard <commit id>
:将版本库回退到某一特定版本(commit
id那版)。顺便工作区的文件也都更新到该版本。
此外使用git reset --hard HEAD^
回退到上一版本,HEAD^^
则是上上版本。
远程仓库
ssh-keygen -t rsa -C "youremail@example.com"
:创建SSH
Key,执行之后在用户主目录下会有.ssh文件夹,里面有id_rsa和id_rsa.pub两个文件,后者为公钥。
git remote add origin ...
:将本地仓库和远程仓库进行关联,…为远程仓库地址。
git remote -v
:查看远程主机信息。
将本地仓库中的内容推送到远程仓库命令如下(实际上是将本地分支合并到远程分支上):
git push <远程主机名> <本地分支名>:<远程分支名>
:将本地分支上传到远程并合并。
git push <远程主机名> <本地分支名>
:上述命令中本地分支名和远程分支名相同的时候,可以省略远程分支名。例如将本地master分支推送到origin主机的master分支上:
git push origin master
。
git push -u origin master
:使用-u参数之后,会将本地的master分支和远程的master分支关联起来,之后在推送或拉取的时候可以直接git
push或者git pull。
从远程仓库获取代码并合并到本地:
git pull <远程主机名> <远程分支名>:<本地分支名>
:从远程分支拉取代码并合并到本地分支上。同样,当远程分支与当前分支合并时,可以省略冒号后面的部分:git pull origin master
。且该命令相当于git fetch
紧接着一个git merge
。
git clone
:直接克隆远程仓库。
总结
本篇文章介绍了Git的基本概念和基本操作,关于远程仓库的进一步操作将在下篇进行分析,在下篇文章中着重介绍Git分支功能,分支是Git最重要的能力之一,但理解起来稍微有点困难,但理解后会发现其实很简单。