Git简介

Posted jqjx

tags:

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

摘自廖雪峰《Git教程》https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137402760310626208b4f695940a49e5348b689d095fc000

一 Git简介

分布式版本控制系统。开源(免费)

技术图片

 

1.1 安装Git

--Windows下安装完Git设置用户名和邮箱

--Git新建用户名和邮箱的原因:分布式版本控制系统用于各电脑自报家门

#新建(编辑)Git用户名

#global参数:该机器上的所有Git仓库均使用本配置

$ git config --global user.name "ex-fudaiwu001"            

$ git config --global user.email "[email protected]cisetech.com"

#查看Git用户名和邮箱

$ git config user.name

$ git config user.email

1.2 创建版本库

--Windows下初始化Git仓库:选择一个合适的地方,创建一个空目录,然后调用git init命令

技术图片

--所有的版本控制管理系统(包括Git),只能跟踪文本文件的改动,如TXT、网页、所有的程序代码等,不能跟踪图片、视频、word等二进制文件等的改动

--建议使用UTF-8编码,强烈不建议使用Windows自带的记事本编辑任何文件(记事本本身设计UTF-8编码的问题),建议使用Notepad++等工具编辑文本文件(将其设置为UTF-8编码即可)

--添加文件到Git仓库:

    使用命令 git add <file>,可反复多次使用,添加多个文件

    使用命令 git commit -m <message> 

    eg.

    $ git add readme.txt      #将文件放入暂存区(stage)

    $ git commit -m "create a readme.txt"      #把暂存区的修改提交到所有分支

    git status : 查看工作区状态

    git diff:查看修改内容

二 时光穿梭机

2.1 版本回退

    git log [--pretty=oneline]:显示从最近到最远的提交日志

   # HEAD^ —— 回退到上个版本     HEAD^^ —— 回退2个版本  HEAD~100 —— 回退100个版本

    git reset --hard HEAD^ :回退到上个版本

    git reset –hard 1094a:1094a为回退前的commit id,返回到回退前的版本,版本号没有必要写全,能够唯一区分即可(未关闭git log操作时可以定位到回退前的commit id)

    git reflog:记录每一次操作命令,关闭了git log通过该命令查找回退前的commit id

2.2 工作区和暂存区

--工作区:Git仓库名称(本地仓库),如learnGit

--版本库:工作区里的隐藏目录 .git 

--暂存区:Git的版本库里包含很多东西,其中最重要的就是被称为stage(或者叫index)的暂存区,还有Git为我们创建的第一个分支master,以及指向master的指针HEAD

技术图片

前面提到的概念理解:

git add:将文件添加仅暂存区

git commit:将暂存区的所有内容提交到当前分支

2.3 删除文件

git rm <file>

 

三 远程仓库

注意:该部分没有实际验证过,不保证正确性

3.1 关联本地仓库到远程库

#在GitHub商新建一learngit仓库,复制仓库地址

#添加远程库

$git remote add origin [email protected]:XXX/learngit.git   # origin为远程仓库[email protected]:XXX/learngit.git的别名,可以修改;XXX为个人的GitHub账户  红色标注部分可直接从GitHub仓库中复制  该命令需在本地¥仓库下执行

$git push -u origin master  #第一次推送master分支的所有内容

$git push -u origin master  #第一次推送本地仓库的master分支的所有内容

$git push origin master  #第一次推送后,每次推送本地仓库的master分支的内容

3.2 从远程库克隆

#进入计划的本地仓库位置(如D:leanrGit文件夹下)

#克隆GitHub商的远程仓库到本地仓库

$git clone [email protected]:XXX/learnGit.git

 

四 分支管理

4.1 创建与合并分支

--Git里,master为默认分支,也是住分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的。HEAD指向的是当前分支

--开始时,master分支是一条线,Git用master指向最新的提交

技术图片

--每次提交,master分支都会向前移动一步,这样,随着不断的commit,master分支会越来越长

技术图片

--创建新的分支时,例如dev,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,表示当前分支在dev上

--分支创建快的原因:仅仅新增了一个指针,改变了一下HEAD指针的指向

$git checkout -b dev

等效于如下的命令:

$git branch dev

$git checkout dev

使用git branch查看当前分支

$git branch

* dev

   master 

技术图片

--再次提交,此时的提交便是针对dev分支,而与master分支无关

技术图片

--加入dev商的工作完成了,江dev合并到master分支上

$git checkout master  #先切换到master分支商

$git merge dev

技术图片

--合并完成后,删除dev分支,分支提交完成

$git branch -d dev

技术图片

$git branch   #再次查看分支

*  master

4.2 解决冲突(略)

技术图片

 

$git status  #查看各分支状态

$git  log   #查看分支合并情况

4.3 Bug分支

场景:当前分支未commit(工作进行到一半),需要创建新的分支进行一临时紧急的操作,直接切换到其它分支,当前分支的工作会丢失

解决方法:将当前工作现场stash(贮藏、隐藏)一下,再切换到其它分支工作

$git stash   #隐藏当前分支,假设为dev分支

$git checkout  master

$git checkout -b issue101  #新建一用于修复101Bug的分支

.......  修复完成后删除该分支

$git checkout dev  #返回dev分支

$git stash list   #查看隐藏区

[email protected]{0}:WIP on dev:f52c633 add merge

$git stash apply [email protected]{0}  #恢复隐藏内容

$git stash drop [email protected]{0}  #删除隐藏内容

以上两步可一步实现,如下:

$git stash pop  #恢复的同时把stash内容删除

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

分布式版本控制系统 Git 简介与应用

Git简介

Git简介

git简介,及协作开发

git grep简介

GIT 原理简介