【Java学习笔记(五十三)】之Git简介,Git常用命令

  • 时间:
  • 浏览:
  • 来源:互联网

本文章由公号【开发小鸽】发布!欢迎关注!!!


老规矩–妹妹镇楼:

一. Git

(一) Git与SVN的对比

1. SVN

       SVN是集中式版本控制系统,版本库是集中放在中央服务器上的,开发人员只能从中央服务器中下载最新的版本进行开发,开发完毕后,需要将自己开发的代码提交到中央服务器中。

集中式版本控制工具缺点:

       服务器单点故障:当服务器出现故障时,所有的开发需要等待服务器的故障排除后才能继续进行。容错性很差

2. Git

       Git是分布式版本控制系统(Distributed Version Control System,DVCS),分为两种类型的仓库:本地仓库和远程仓库。本地仓库是开发人员自己电脑上的Git仓库,远程仓库是远程服务器上的Git仓库。

       当开发人员开发完毕后,可以通过Commit命名将代码提交到本地仓库上;若想将代码提交到远程仓库中,使用Push推送命令推送到远程仓库中;若想从远程仓库中下载代码到本地仓库,使用Pull拉取命令;若想直接将远程仓库复制到本地,就使用Clone克隆命令。

(二) Git工作流程

Git的工作流程如下所示:

       1. 从远程仓库中通过Clone克隆代码到本地仓库中。

       2. 开发人员从本地仓库中通过checkout获取代码后进行代码修改。

       3. 开发人员修改完代码后,想要将代码提交到本地仓库中,首先将代码Add提交到暂存区,之后暂存区会将代码Commit到本地仓库中。

       4. 提交到本地仓库后,本地仓库保存着修改的历史版本。

       5. 当需要将代码上传到远程仓库时,可以通过Push从本地仓库推送代码到远程仓库中。

       6. 若想直接从远程仓库中获取代码,则可以通过Pull拉取代码到工作区中,不经过本地仓库。

二. Git代码托管服务

(一) 常用的Git代码托管服务

       通常我们是借助互联网上提供的一些代码托管服务来搭建Git远程仓库,其中比较常见的有GitHub,码云,GitLab等。

       GitHub是一个面向开源即私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,因此命名为GitHub;码云是国内的一个代码托管平台;GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。

(二) 使用码云进行代码托管

1. 创建新仓库

       登录码云,创建新的仓库,每个Git远程仓库都会对应一个网络地址,可以店家克隆/下载按钮弹出窗口,窗口中就是Git远程仓库对应的网络地址。

2. 邀请其他用户成为仓库成员

       项目的开发是由多人共同完成的,为了使多个参与者都有权限操作远程仓库,需要邀请其他项目参与者成为当前仓库的成员。

三. Git常用命令

(一) 环境配置

       安装完Git后首先要设置用户名和email名称,每次Git提交时都会使用该用户名和email地址进行验证。

1. 设置用户信息

git config –global user.name “mrwxx”
git config –global user.email hello@wxx.cn

       git config 是用于Git配置的命令, --global代表着这是全局的, user.name代表着用户名称,user.email代表着email地址。

2. 查看配置信息

以列表形式显示所有的Git配置:

git config –list

显示单个Git配置:

git config user.name

       当我们手动设置完Git的配置后,这些配置信息会保存在本地用户的目录下,如本地的C:\Users\Mr.wmxx下面,有一个.gitconfig文件,文件中存储着刚刚配置的信息:

[user]
	name = mrwxx
	email = hello@wxx.cn

(二) 获取Git仓库

       获取Git仓库有两种方式,一种是在本地初始化一个Git仓库,另一种是从远程仓库中克隆一个。

1. 本地初始化Git仓库

       在本地初始化一个Git仓库,就是将本地的一个文件夹作为Git仓库,在某个文件夹下右键进入Git Bash,使用git init命令初始化一个Git仓库。这样,该文件夹下会生成一个.git隐藏文件夹。

2. 克隆远程仓库

       克隆远程仓库到本地中,在本地的文件夹下进入Git Bash,使用git clone 命令,后面加 远程仓库的地址即可。

git clone https://gitee.com/mrxx/repos.git

(三) 工作目录,暂存区以及版本库

1. 版本库

       前面所说的.git文件夹就是版本库,版本库中存储了很多的配置信息,日志信息和文件版本信息。

2. 工作目录(工作区)

       包含.git文件夹的目录就是工作目录,主要用于存放开发的代码。

3. 暂存区

       .git文件夹中的index文件就是暂存区,暂存区用于临时保存修改的文件。

       开发人员在工作区进行开发,开发修改后的代码通过 git add命令传到暂存区,再通过git commit 命令提交到版本库中。

(四) Git工作目录下文件的两种状态

       Git工作目录下的文件存在两种状态,这些文件的状态会随着Git命令的执行而发生变化。

1. untracked

       未跟踪状态,说明它未被纳入版本控制中。

2. tracked

       已跟踪状态,说明它已经被Git纳入版本控制了,且已跟踪状态又分为三种状态:

(1) Unmodified

       未修改状态,文件没有被修改过。

(2) Modified

       已修改状态,文件已经被修改过了。

(3) Staged

       已暂存状态,文件已经放入暂存区中、

(五) 本地仓库操作

1. git status

       在工作区中使用git status查看工作区中文件的状态。
       使用 git status -s使得输出结果更加简洁


2. git add

       git add命令将未跟踪的文件加入暂存区中,那么该文件的状态就会变为已跟踪中的已暂存状态。

git add hello.txt

3. git reset

       git reset命令将暂存区中的文件取消暂存,那么该文件的状态就会发生变化,变为未跟踪。

git reset hello.txt

4. git commit

       要想将代码提交到本地仓库中,必须通过暂存区,即先将代码通过git add命令存到暂存区中,再通过git commit命令将代码提交到本地仓库中。

git commit -m “init hello.txt”

       -m代表着日志,每次上传代码到本地仓库中,必须要写日志信息,如果不加-m,它会弹出一个编辑器让我们进行编写。

5. git rm

       git rm命令将文件从工作区中删除,但是,本地仓库中的该文件并没有被删除,要想删除,需要提交到本地仓库。提交之前我们需要将该文件添加到暂存区中,有趣的是,使用git rm命令删除该文件后,该文件就自动被添加到了暂存区中,因此我们可以直接使用git commit命令提交就可以了,本地仓库中的该文件就被删除了。

6. .ignore文件

       工作区中有一些文件是不需要纳入Git的管理的,也不希望他们总是出现在未跟踪文件列表中,因此,我们可以在工作区中创建一个名为 .gitignore的文件,在该文件中列出需要忽略的文件模式,如下所示:

*.a : 代表着忽略所有的.a格式文件

!lib.a : 代表着除了lib.a之外

/TODO : 代表着忽略TODO文件

build/ : 代表着忽略build文件夹下的所有文件

doc/*.txt : 代表着忽略doc文件夹下的所有txt文件

doc/**/*.txt : 代表和忽略doc目录下的所有子目录的txt文件

7. git log

       通过git log命令查看日志记录,按Enter键向下浏览记录,按q键 退出到命令行。

(六) 远程仓库操作

1. git remote

       当一个本地的工作空间和远程仓库建立了联系后,通过git remote命令查看已经配置的远程仓库服务器,它会列出指定的每一个远程服务器的简写,如果已经克隆了远程仓库,那么至少有一个origin,这是Git克隆的远程仓库服务器的默认名字。

       想要更加详细的信息,可以在git remote命令后面加上 -v,可以显示远程仓库服务器的地址:

git remote -v

       若是想查看某一个远程仓库服务器的信息,则使用git remote show 命令后面加上该仓库的简写即可:

git remote show origin

2. git remote add

       通过git remote add命令为本地添加远程仓库,命令后面首先加上 远程仓库的简写,然后是 远程仓库的地址:

git remote add origin https://gitee.com/mtwxx/repos.git

       我们可以为本地添加多个远程仓库。

3. git clone

       git clone命令负责从远程仓库中进行拷贝,Git克隆的是该Git仓库服务器上几乎所有数据(包括日志信息,历史记录等)。当执行git clone 命令时,默认配置下远程Git仓库中的每一个文件的每一个版本都会被拉取下来。

git clone https://gitee.com/mrwxx/repo.git

4. git remote rm

       通过git remote rm 命令移除本地连接的一个远程仓库,命令后面跟远程仓库的简称。这里只是在本地中移除远程仓库的记录,不会影响到真正的远程仓库。

git remote rm origin

5. git fetch

       git fetch是从远程仓库获取最新版本到本地仓库中,不会自动地merge,不会自动合并到本地仓库中,即不会直接显示在本地仓库中。

git fetch origin master

       origin是远程仓库的简称,master是远程仓库的分支。

       我们还要通过 git merge 来合并代码到工作区中,后面接远程仓库的分支,如:

git merge origin/master

6. git pull

       git pull也是从远程仓库获取最新版本到本地仓库,但是会自动merge,合并代码。

git pull origin master

       注意:如果当前的本地仓库是本地创建的仓库,且仓库中存在文件,此时再从远程仓库中拉取文件时会报错(fatal:refusing to merge unrelated histories),这是因为原有的文件与拉取的文件无法合并。可以通过在git pull命令后添加参数 –allow-unrelated-histories来解决

git pull origin master –allowed-histories-histories

7. git push

       通过git push命令将本地的代码推送到远程仓库中,后面接远程仓库的简写,以及分支名:

git push origin master

       这个操作一般都是在我们对之前下载的代码进行修改之后,修改后的代码是没有进入本地仓库的,因此我们首先要将修改后的代码提交到本地仓库,而提交到本地仓库首先要存到暂存区,使用git add 添加到暂存区或者 git commit -a命令直接提交到本地仓库中。在这之后,就可以执行git push命令推送新的代码到远程仓库了。

(七) Git分支

       所有的版本控制系统都有分支,使用分支意味着可以把工作从开发主线上分离开来,以免影响开发主线。Git的master分支不是特殊的,之所以每个仓库都有master分支,是因为git init会默认创建它。

1. 查看分支

git branch 列出本地所有分支

git branch -r 列出所有远程分支

git branch -a 列出本地和远程的所有分支

2. 创建分支

git branch a 创建a分支

3. 切换分支

       我们通过git checkout来切换分支,命令行中会显示目前使用的分支:

git checkout a 切换到a分支

4. 推送到远程仓库分支

       将本地的分支推送到远程仓库的分支中,如推送到origin仓库的b1分支中:

git push origin b1

5. 合并分支

       通过git merge命令合并两个分支,如我们要将b3分支合并到master分支上,那么,我们需要切换到master分支中,使用git merge b1命令合并分支。如果在两个不同的分支中,对同一个文件同一个部分进行了不同的修改,Git就合并它们,会提示文件冲突。此时我们需要打开冲突的文件并修复冲突内容,最后执行git add命令将代码存到暂存区中。

6. 删除分支

       若要删除本地的分支,可以通过git branch -d 后面接分支的名称来删除该分支。若在该分支中已经进行了修改,且没有推送到远程仓库中,那么使用上面的命令并不会删除分支,因为直接删除会有丢失修改数据的风险。若坚持要直接删除,将-d参数改为-D参数即可删除。

       若要删除远程仓库中的分支,可以使用git push origin -d branchName,origin是远程仓库的简称,branchName是分支的名称。

(八) Git标签

       Git可以给历史中的某一个提交打上标签,以示重要,人们会使用这个功能来标记发布节点。标签指的是某个分支某个特定时间点的状态,通过标签,可以很方便地切换到标记时的状态。

1. git tag

       列出已有的标签

2. git show [tag]

       查看tag信息

3. git tag [tagName]

       新建一个tag标签

4. git push [remote] [tag]

       将标签推送至远程仓库,提交指定tag
如: git push origin v0.1

5. git checkout -b [branch] [tag]

       检出标签,新建一个分支,将该分支指向某个tag

6. git tag -d [tag]

       删除本地标签,

7. git push [remote] :refs/tags/[tag]

       删除远程仓库的tag,:ref/tags是固定写法:

git push origin :refs/tags/[tag]

本文链接http://element-ui.cn/article/show-218953.aspx