Git介绍

Posted cqmao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git介绍相关的知识,希望对你有一定的参考价值。

一 Git 的初始化
使用 Git 的第一件事就是设置你的名字和 email,这些就是你在提交 commit 时的签名,每次提交记录里都会包含这些信息。使用 git config 命令进行配置:
$ git config --global user.name "Scott Chacon"
$ git config --global user.email "schacon@gmail.com"
 
执行了上面的命令后,会在家目录(/home/shiyanlou)下建立一个叫 .gitconfig 的文件(该文件为隐藏文件,需要使用 ls -al 查看到). 内容一般像下面这样,可以使用 vim 或 cat 查看文件内容

 $ cat ~/.gitconfig [user] email = schacon@gmail.com name = Scott Chacon

 

二、获得一个Git仓库

 既然我们现在把一切都设置好了,那么我们需要一个 Git 仓库。有两种方法可以得到它:一种是从已有的Git 仓库中 clone (克隆,复制);还有一种是新建一个仓库,把未进行版本控制的文件进行版本控制。

为了得到一个项目的拷贝(copy),我们需要知道这个项目仓库的地址(Git URL)。Git 能在许多协议下使用,所以 Git URL 可能以 ssh://http(s)://git:// 开头。有些仓库可以通过多种协议来访问。

 

我们在 github.com 上提供了一个名字为 gitproject 的供大家测试的公有仓库,这个仓库可以使用下面方式进行 clone

$ cd /home/shiyanlou/

$ git clone https://github.com/shiyanlou/gitproject

 

2.2 初始化一个新的仓库

可以对一个已存在的文件夹用下面的命令让它置于 Git 的版本控制管理之下。

创建代码目录 project

$ cd /home/shiyanlou/

$ mkdir project

进入到代码目录,创建并初始化Git仓库:

$ cd project

$ git init

 

通过 ls -la 命令会发现project目录下会有一个名叫 .git 的目录被创建,这意味着一个仓库被初始化了。可以进入到 .git 目录查看下有哪些内容

 

三、正常的工作流程

 

Git 的基本流程如下:

  1. 创建或修改文件
  2. 使用 git add 命令添加新创建或修改的文件到本地的缓存区(Index)
  3. 使用 git commit 命令提交到本地代码库
  4. (可选,有的时候并没有可以同步的远端代码库)使用git push命令将本地代码库同步到远端代码库
3.1 创建或修改文件
进入我们刚才建立的 project 目录,分别创建文件 file1file2file3
$ cd /home/shiyanlou/project
$ touch file1 file2 file3

修改文件,可以使用 vim 编辑内容,也可以直接 echo 添加测试内容。

$ echo "test" >> file1
$ echo "test" >> file2
$ echo "test" >> file3

此时可以使用 git status 命令查看当前 Git 仓库的状态:

$ git status
On branch master

Initial commit

Untracked files:
   (use "git add <file>...") to include in what will be committed)

       file1
       file2
       file3
nothing added to commit but untracked files present (use "git add" to track)

可以发现,有三个文件处于 untracked 状态,下一步我们就需要用 git add 命令将他们加入到缓存区(Index)。
3.2 使用 git add 加入缓存区

 使用 git add 命令将新建的文件添加到缓存区

$ git add file1 file2 file3

你现在为 commit 做好了准备,你可以使用 git diff 命令再加上 --cached 参数,看看缓存区中哪些文件被修改了。进入到 git diff --cached 界面后需要输入 q 才可以退出:
$ git diff --cached
如果没有--cached参数,git diff 会显示当前你所有已做的但没有加入到缓存区里的修改

3.3 使用 git commit 提交修改

 当所有新建,修改的文件都被添加到了缓存区,我们就要使用 git commit 提交到本地仓库:

$ git commit -m "add 3 files"
需要使用 -m 添加本次修改的注释,完成后就会记录一个新的项目版本。除了用 git add 命令,我们还可以用下面的 -a 参数将所有没有加到缓存区的修改也一起提交,
但 -a 命令不会添加新建的文件。
$ git commit -a -m "add 3 files"

我们当前的仓库是使用 git init 初始化的本地仓库,所以我们需要将本地仓库与远程仓库关联,使用如下命令(需要修改下面的远程仓库地址为自己的仓库地址):
$ git remote add origin https://github.com/kinglion580/shiyanlou.git

对于上述命令而言,git remote add 命令用于添加远程主机,origin 是主机名,此处我们可以自定义,不一定非要使用 origin,而 https://github.com/kinglion580/shiyanlou.git,是我自己的远程仓库,此处 需要替换为自己的远程仓库地址
这个时候如果本地的仓库连接到了远程Git服务器,可以使用下面的命令将本地仓库同步到远端服务器:
# 需要输入仓库对应的用户名和密码 $ git push origin master
四、分支与合并

 Git 的分支可以让你在主线(master 分支)之外进行代码提交,同时又不会影响代码库主线。分支的作用体现在多人协作开发中,比如一个团队开发软件,你负责独立的一个功能需要一个月的时间来完成,你就可以创建一个分支,只把该功能的代码提交到这个分支,而其他同事仍然可以继续使用主线开发,你每天的提交不会对他们造成任何影响。当你完成功能后,测试通过再把你的功能分支合并到主线。

4.1 创建分支

 一个 Git 仓库可以维护很多开发分支。现在我们来创建一个新的叫 experimental 的分支:

$ git branch experimental

运行 git branch 命令可以查看当前的分支列表,以及目前的开发环境处在哪个分支上:

4.2 切换分支

 git checkout 分支名 可以切换到其他分支

$ git checkout experimental

Switched to branch ‘experimental‘

4.3 合并分支

 git merge 命令来合并 experimental 到主线分支 master

$ git checkout master # 将experimental分支合并到master 
$ git merge -m ‘merge experimental branch‘ experimental
4.4 删除分支

 $ git branch -d experimental

git branch -d只能删除那些已经被当前分支的合并的分支. 如果你要强制删除某个分支的话就用git branch –D
4.5 撤销一个合并
 
如果你觉得你合并后的状态是一团乱麻,想把当前的修改都放弃,你可以用下面的命令回到合并之前的状态:
$ git reset --hard HEAD^ # 查看file3的内容,已经恢复到合并前的master上的文件内容
$ cat file3

 

五、Git 日志
git log 命令可以显示所有的提交(commit)

 

如果提交的历史纪录很长,回车会逐步显示,输入 q 可以退出。

git log 有很多选项,可以使用 git help log 查看,例如下面的命令就是找出所有从 "v2.5“ 开始在 fs 目录下的所有 Makefile 的修改(这个只是举例,不用操作):

$ git log v2.5.. Makefile fs/
 

 

5.2 日志统计

 Git 会根据 git log 命令的参数,按时间顺序显示相关的提交(commit)。

如果用 --stat 选项使用 git log,它会显示在每个提交(commit)中哪些文件被修改了, 这些文件分别添加或删除了多少行内容,这个命令相当于打印详细的提交记录:
$ git log --stat

5.3 格式化日志

 

你可以按你的要求来格式化日志输出。--pretty 参数可以使用若干表现格式,如 oneline

$ git log --pretty=oneline

本节讲解了几个基本命令:

  • git config:配置相关信息
  • git clone:复制仓库
  • git init:初始化仓库
  • git add:添加更新内容到索引中
  • git diff:比较内容
  • git status:获取当前项目状况
  • git commit:提交
  • git branch:分支相关
  • git checkout:切换分支
  • git merge:合并分支
  • git reset:恢复版本
  • git log:查看日志
 

以上是关于Git介绍的主要内容,如果未能解决你的问题,请参考以下文章

git的使用入门介绍

Git介绍

Git--02 Devops介绍及git安装部署

Git介绍下载安装以及基本使用

git使用的简要介绍

git的使用入门介绍-2