个性化阅读
专注于IT技术分析

精通Git开发!Git核心功能使用详解

Git是什么?Git是一个分布式版本管理控制系统,它的本质是对文件内容的追踪,基本单元是版本库,我们常说的版本仓库其实就是一个文件目录,我们每次提供都会产生一个快照。

下面我们先来理解一下几个核心的概念:

  • 版本库:一个文件目录,下面可以创建其它文件或目录,这里就是我们工作的地方。比如实际开发中,这个版本库可以对应我们的项目根目录。
  • 提交(commit):一个快照,就是用相机拍下来的一瞬间所记录的内容。这里指的是在本次开发中,我们对文件的增删改,即为一个提交记录,一个版本记录。
  • 暂存区:暂存区就好比你在生产一个个杯子,做好就放在架子上,这个架子就是暂存区。在git中暂存区保存文件的一个副本,你可以在.git/objects中查看到。
  • 本地仓库:类似于库存,就是上面你生产好杯子后,这些杯子从架子上拿去存在本地库房里,等着销售。
  • 远程仓库:和本地仓库类似,不过是远程的,你可以当github或gitee为一个git远程仓库。
  • 分支:如何解释分支呢?就是你的工作时间线,还是上面生成杯子的例子,假如你一天24小时都在生产,每1分钟生产一个,每生成60个就放到架子上(添加到暂存区),等别人拉去库房(提交到本地仓库),现在记录一次你的生产情况(提交记录)。重复类似的操作,一段时间下来,这段时间加上你的生产情况(提交记录)称为一个分支。

多个分支,是指有多个人和你一样在生产杯子或者维修杯子,每个分支所执行的任务也不尽相同。实际开发中,我们可能有master主分支,dev开发分支,prod分支,或者也有临时的错误修复分支等。

 

初始化配置

git —— git bash #git命令行

git config –global user.name “” #设置用户名

git config — global user.email “” #设置用户邮箱

 

创建git版本库

1、创建目录,创建一个新的文件目录:mkdir doc; cd doc; (pwd)

2、创建版本仓库,将新目录转为git版本仓库:git init

 

将文件添加到git版本库

1、添加文件到git版本库:git add [doc1, doc2, …],git add . 添加当前目录及其子目录所有文件,git add –all添加仓库中的所有文件

2、将整个版本库提交:git commit -m “message”

 

常规操作

1、更新git版本库中的的文件内容

2、git status:查看当前仓库的状态,“changes not staged for commit”文件已经修改,但是修改未提交

3、git diff doc:查看当前已更新文件和已经提交版本的对比,对比更新情况

 

版本回退

1、查看历史版本:git log –pretty=oneline

2、git reset –hard head^,回退到上一个版本;git reset –hard head^^,回退到上上一个版本。git reset –hard {version code},指定版本号回退,{version code}可取前7位

3、git reflog:查看历史版本更改记录(提交版本、修改版本等),可以获取到版本号

 

基本概念

1、工作区:{doc},git目录主要内容,原始文件内容在这里进行修改更新

2、git版本仓库:.git文件夹为版本仓库,版本仓库包括cached暂存区和head主分支(master)

3、暂存区:主要暂时保存已修改的版本文件,git add将已更新的文件添加到暂存区

4、head主分支(master版本库):版本仓库核心,git commit将暂存区中的文件修改添加到版本库

 

修改对比different

1:工作区和暂存区对比:git diff

2:工作区和版本库对比:git diff head

3:暂存区和版本库对比:git diff –cached

 

修改撤销

1、从暂存区中撤销到工作区:git checkout — file,将暂存区中的修改覆盖工作区

2、从版本库中撤销到暂存区:git reset head file,将版本库中的内容覆盖暂存区

3、从版本库中撤销:git checkout head — file,将版本库中的内容覆盖暂存区和工作区中的内容

 

删除文件

1、手动删除工作区文件:rm {file}

2、从版本库中删除:git rm {file},git commit -m “”,先删除再提交

3、恢复文件使用git checkout

 

git远程服务器版本仓库

git远程中心仓库,每个人从服务器仓库中克隆一份,各自修改完提交到服务器版本仓库,再获取别人的提交。github提供免费远程git仓库服务,免费的git仓库内容是公开的,仅供自己修改。

github的使用:

github推送:将项目推送到远程库

1、创建ssh安全密钥:ssh-keygen -t rsa -C “youremail@example.com”

创建完成后在当前用户目录下.ssh文件夹中找到

2、私钥:id_rsa,公钥:id_rsa.pub,在github SSH keys中添加公钥

3、在github上创建一个仓库

4、向github关联已存在的仓库并推送:

(origin:github远程库默认名称,将本地库与github远程库关联起来)

git remote add origin {git@github.com:Tutio/htmlpro.git,项目地址} git push -u origin master(首次推送master分支使用-u,以后可以不用)

git克隆:将项目从远程库克隆到本地

1、git clone {git@github.com:Tutio/htmlpro.git,项目地址}

github版本回退:

1、git reset –hard {version code}

2、git push -u -f origin master

 

 

分支管理

head指向当前工作分支,当前主分支master指向当前分支的最新提交点,每git cmmit一次提交点前进一步。当创建新分支dev,新分支默认指向master相同的提交点,将head指向dev分支作为工作分支,当工作完成之后可以将dev和master分支进行合并,head重新指向master,完成后可以删除dev分支。

— 查看git仓库所有分支:git branch,*表示指向当前工作分支

1、创建分支:git branch dev

2、切换分支:git checkout dev

{联合命令,创建并切换到新分支,添加-b参数:git checkout -b dev}

3、合并到当前分支:git merge dev【在当前master分支上将dev分支合并到当前master分支】

{将master分支移动到dev分支提交点}

4、删除分支:git branch -d dev

 

分支合并冲突

— 强制删除一个未合并的分支:git branch -D {name}

— 查看分支合并图:git log –graph

— <<<< ==== >>>>标出不同分支的内容

— 冲突分支合并需要解决冲突,统一内容后add,commit即可合并

 

分支合并管理

普通合并模式为fast forward,合并后不产生任何记录。若禁用fast forward模式,则可以在master分支上产生一个合并提交记录

— git merge –no-ff -m “message” dev

 

保存工作现场

当需要切换到其它分支进行操作时,需要将当前分支的工作现场进行储藏,当其它分支的工作完成后,再回到当前分支进行恢复现场继续工作

— 保存工作现场:git stash

— 查看已保存的工作现场:git stash list

— 恢复工作现场:git stash apply stash@{code}

— 删除工作现场:git stash drop stash@{code}

— 恢复并删除工作现场:git stash pop

 

远程库管理

github远程仓库主分支默认名称为origin

— 查看远程库信息:git remote -v

— 删除已关联的远程库分支:git remote rm origin

— 推送分支到远程库:git push origin master【git push {远程分支} {本地分支}】

— 本地创建和远程对应的分支(若本地没有dev分支):git checkout -b dev origin/dev

— 拉取最新提交(当前在哪个分支就拉取哪个分支的提交):git pull

 

 

标签管理

标签跟提交点的作用一样,但是更形象,可以指定版本号

1、在当前提交点创建标签:git tag {tag name}

2、在指定提交点创建标签:git tag {tag name} {commit id}

3、创建带有说明的标签:git tag -a {tag name} -m “message” {commit id}

4、查看所有标签:git tag

5、查看指定标签:git show {tag name}

 

操作标签

— 推送一个标签到远程库:git push origin v1.0

— 推送所有未推送的:git push origin –tags

— 删除一个标签:git tag -d {tag name}

— 删除远程标签:git push origin :refs/tags/{tag name}

 

 

git开源合作管理

在git服务器创建一个仓库A,fork该项目到自己的账号下,使用git clone到本地就行修改编辑开发,完成后push到自己的远程仓库,最后pull request到仓库A,仓库A拥有者再确定是否接受修改

 

 

忽略特殊文件

若有部分文件出于某些原因不提交,则可以在仓库下添加.gitignore文件忽略提交,该文件的规则:https://github.com/github/gitignore

 

配置命令别名

git config –global alias.st status

 

以上是根据以前的Git笔记详解Git的核心功能使用,若有错误,欢迎指出。

 

赞(0)
未经允许不得转载:srcmini » 精通Git开发!Git核心功能使用详解

评论 抢沙发

评论前必须登录!