有关Git命令的详细整理和记录

在多人协作的项目中,常常使用git来进行版本控制。在使用的过程中还是踩了不少的坑,除了日常使用最常见的git pull、git add、git commit和git push外,还有诸多指令只是知道怎么用,却没有系统的整理和深究原理。常常是遇到问题时解决一下,下次再碰到又忘了,不常用的指令每次也需要查手册。这里对Git的相应命令做一个整理,主要是以下几个方面:

  • Git与SVN等版本控制系统的区别
  • 工作区、暂存区、版本库的概念
  • Git 工作流程
  • Git 常用指令

Git与SVN等版本控制系统的区别

Git是一个开源的分布式版本控制系统

  • Git是分布式的,没有中央服务器,每个本地电脑就是一个完整的版本库,而SVN是集中式的,要从中央服务器获取版本并且只能在联网状态下工作
  • Git的内容是按元数据存储,而SVN是按文件
    在这里插入图片描述

工作区、暂存区、版本库的概念

工作区:本地电脑上工作的目录
暂存区(stage/index):一般存放在 .git 目录下的 index 文件(.git/index)中
版本库:工作区有一个隐藏目录 .git 就是 Git 的版本库,也称为本地仓库

在这里插入图片描述

  • 版本库里面包括三个部分:暂存区、master分支目录树和object对象库。使用git add从工作区添加文件到暂存区,使用git commit提交修改到master分支。
  • git reset指令一般是用master分支目录树重写暂存区的目录树;git checkout指令是用暂存区的全部或分布文件替换工作区
  • HEAD指针实际上是指向分支的(master),而master才是指向提交

Git 工作流程

在这里插入图片描述

Git的工作流程主要是在工作区(workspace)、暂存区(index)、本地仓库(Repository)和远程仓库(Remote)之间进行操作,依照流程图了解Git命令的具体行为对Git指令才能有更深的了解,主要涉及到以下几条指令:

注意:这里的本地仓库与暂存区的概念与上图的版本库的概念稍有不同,注意区分

  • git add:从工作区添加文件到暂存区
  • git commit:将暂存区文件添加到仓库中
  • git push:从本地仓库上传到远程仓库并合并
  • git fetch:从远程库获取文件但不合并,使用git merge指令进行合并
  • git clone:拷贝远程仓库到本地
  • git checkout:用缓存区的文件替换工作区的文件(也可以用作切换分支)
  • git pull:从远程仓库下载代码并合并

Git 的相关指令

整理了一些git常用的指令

使用配置

# 显示当前的Git配置
$ git config --list

# 设置邮箱和用户名,加--global表示电脑上所有仓库,不加表示这个仓库
$ git config --global user.email "[email protected]"
$ git config --global user.name "My Name"

新建仓库

#将当前目录初始化为一个版本库(仓库)
$ git init

#新建一个目录,将其初始化版本库
$ git init [filename]

查看信息和状态

# 显示分支,未跟踪文件,更改和其他不同,即当前状态
$ git status

# 查看历史提交记录
$ git log
$ git log --oneline  简洁版

# 显示当前分支的最近几次提交
$ git reflog

# 显示暂存区和工作区的差异
$ git diff

# 比较暂存区和版本库差异(暂存区和上一次提交(commit)的差异)
$ git diff --staged
$ git diff --cached

# 显示工作区与当前分支最新commit之间的差异(查看已缓存的与未缓存的所有改动)
$ git diff HEAD

# 显示两次提交之间的差异
$ git diff [first-branch]...[second-branch]

添加、提交、拉取和推送代码

#将readme.txt从工作区添加到暂存区
$ git add readme.txt

#添加所有文件
$ git add . 

#新建一个目录,将其初始化版本库
$ git commit -m  "填写修改的部分"

#拉取远程仓库的代码,origin指本地分支,master指远程分支
$ git pull origin master

#推送代码到远程仓库,origin指本地分支,master指远程分支,第一次推送加-u建立两者联系
$ git push -u origin master

#从远程仓库克隆
$ git clone [url]

回退版本

#退回到上一版本,HEAD^^为上上个版本,以此类推
$ git reset --hard HEAD^

#回退到前100个版本
$ git reset --hard HEAD~100

#回退到特定版本号
$ git reset --hard 版本号

撤销修改与删除

#撤销readme.txt在工作区的修改
$ git checkout -- readme.txt

#删除readme.txt这个文件
$ git rm readme.txt

分支管理

# 查看本地分支
$ git branch (标*为当前分支)

# 查看远程分支
$ git branch -r

# 创建新的分支
$ git branch <new_branch>

#创建一个新的分支dev并切换到该分支上
$ git checkout -b dev
#该指令等同于以下两条
$ git branch dev  #创建分支dev
$ git checkout dev  #切换到dev分支

#合并dev分支到当前分支
$ git merge dev

#禁止Fast forward模式后合并dev,这样删除分支部不会丢掉分支信息
$ git merge –no-ff -m "注释" dev

# 删除分支dev
$ git branch –d dev

# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

多人协作

#要查看远程库的信息 
$ git remote

#要查看远程库的详细信息
$ git remote –v

#关联远程仓库,添加远程仓库地址
$ git remote add origin url

# 修改远程仓库地址
$ git remote set-url origin url

#创建本地dev分支并关联远程的origin的dev分支
$ git checkout –b dev origin/dev

#######拉取远程文件发生冲突时########
#先将本地修改存储起来
$ git stash
#查看本地保存的信息
$ git stash list                
#暂存之后就可以pull拉取最新代码
$ git  pull
#还原最后一次暂存的内容同时从堆栈中清除
$ git stash pop
##################################

猜你喜欢

转载自blog.csdn.net/qq_37149252/article/details/108316734