git常用功能介绍

git常用功能

  • 介绍
  • git简介
  • git和svn区别
  • 安装git
  • git常用命令
    • git工作流程
    • 配置git
    • 创建本地仓库
    • 克隆远程仓库代码
    • 克隆远程代码并创建本地分支
    • 代码从工作区提交到本地仓库
      • 工作区(Working Directory)
      • 版本库(Repository)
    • 版本回退
    • 撤销修改
  • 分支管理
    • 为什么需要分支?
    • 创建和合并分支
    • 解决冲突

介绍

本文简单描述git分布式版本管理与svn集中式管理的区别,看到标题你就知道,本文我主要来介绍git常用的功能与常见问题的处理方式。

git简介

git和svn区别

git常用功能介绍_第1张图片
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。

git常用功能介绍_第2张图片
Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

安装git

https://jingyan.baidu.com/article/7f766dafba84f04101e1d0b0.html

git常用命令

git工作流程

git常用功能介绍_第3张图片

配置git

下面提供一个链接教程
https://blog.csdn.net/qq_38723394/article/details/80305245

创建本地仓库

首先创建一个空目录

$ mkdir learngit //新建目录
$ cd learngit //进入这个目录
$ pwd // 显示当前目录
/Users/michael/learngit

初始化这个目录变成Git可以管理的仓库

$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/ //仓库成功并且告知是一个空的仓库

克隆远程仓库代码

// 克隆远程master
git clone git仓库地址
// 克隆远程指定分支(如:dev)
git clone -b dev git仓库地址

克隆远程代码并创建本地分支

// 第一种方法
git branch //创建分支
git checkout 分支名 //切分支

//第二种方法
git checkout -b 分支名 //创建该分支并切换分支

代码从工作区提交到本地仓库

第一步,把文件添加到仓库

$ git add 文件名

$ git add . //把所有的文件都添加仓库

第二步,把文件提交到仓库

$ git commit -m "本次提交的说明"

为什么Git添加文件需要add,commit一共两步呢?下面再解释

工作区(Working Directory)

新建的文件夹learngit就是一个工作区

版本库(Repository)

工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
git常用功能介绍_第4张图片

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

版本回退

查看仓库当前的状态,可以确认有没有需要提交的修改

$ git status

查看修改的内容

$ git diff 文件名

查看提交的日志,输出版本号,作者,日期和提交信息

$ git log

撤销修改

git checkout – file可以丢弃工作区的修改:

$ git checkout -- 文件名

命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

分支管理

为什么需要分支?

创建一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

创建和合并分支

首先,我们创建dev分支,然后切换到dev分支:

$ git checkout -b dev
Switched to a new branch 'dev'

git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

$ git branch dev
$ git checkout dev
Switched to branch 'dev'

然后,用git branch命令查看当前分支:

$ git branch
dev
master

git branch命令会列出所有分支,当前分支前面会标一个*号。
然后,我们就可以在dev分支上正常提交

$ git add readme.txt
$ git commit -m "branch test"
[dev fec145a] branch test
1 file changed, 1 insertion(+)

现在,dev分支的工作完成,我们就可以切换回master分支:

$ git checkout master
Switched to branch 'master'

切换回master分支后,刚才提交的内容不见了!因为那个提交是在dev分支上,而master分支此刻的提交点并没有变:
git常用功能介绍_第5张图片
现在,我们把dev分支的工作成果合并到master分支上:

$ git merge dev
Updating d17efd8..fec145a
Fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)

合并完成后,就可以放心地删除dev分支了:

$ git branch -d dev
Deleted branch dev (was fec145a).

删除后,查看branch,就只剩下master分支了:

$ git branch
master

解决冲突

如果master分支和dev分支各自都分别有新的提交,就会出现冲突:
git常用功能介绍_第6张图片

这种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突:

$ git merge feature1

git status告诉我们冲突的文件:

$ git status

可以直接查看冲突的内容,Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,我们修改后保存
再提交:

$ git add readme.txt
$ git commit -m "conflict fixed"

现在,master分支和feature1分支变成了下图所示:
git常用功能介绍_第7张图片






你可能感兴趣的:(git)