Git总结

git在本地分为三个区域,工作区、暂存区和本地仓库,具体情况如下:

git的一般操作就是本地代码的修改提交回滚,以及与远程仓库的拉取、合并、提交等。

git fetch   从远程仓库上抓取分支到本机origin的dev分支上

git merge  将origin上的分支合并到工作区的dev分支上

git pull  相当于前两个命令合在一起

#切换到master分之后,将dev分支合并到master分支

git checkout master

git merge dev

当本地仓库向远程仓库push失败的时候,先从远程仓库上fetch下最新的代码merge到本地的分支上,然后才能push 

当fetch下来的代码与本地仓库的分支代码merge时发生冲突的话,需要解决掉冲突文件中的冲突再push。冲突文件这时已经被git程序更改,标记了冲突的位置。此时可以查看git status根据提示来操作,具体的做法:

1,若想回到没有更改前,即merge前,执行git merge --abort。再进行想要的操作。

2,可以直接更改冲突文件,然后git add file 然后git commit,再push

对于工作区、暂存区、本地仓库代码的差异比较

diff  用于对比差异

git diff 默认用于比较工作区和暂存区之间的差异

git diff --cached 和git diff --staged比较暂存区和本地仓库的差异 

git diff HEAD  是工作区与本地仓库的差异

查看帮助  git merge --help 或者git help merge

对于分支相关的操作

git branch 查看所有分支

git branch -v 查看所有分支详细信息

git branch  branchname 新建分支

git branch -d branchname 删除分支

git checkout branchname  切换分支

git checkout -b branchname 创建新分支并切换到新分支

git checkout -- filename 把工作区的修改撤销,还原到修改前的暂存区的文件的内容(如果修改前已经add到暂存区),或者还原到本地仓库的文件的内容(修改前没有add到暂存区)。即把暂存区或者本地仓库的最近一次的提交检出到工作区使文件的更改撤销,让文件回到最后一次add或commit的状态。

git checkout  versionid filename  可以将工作区某个文件还原到指定版本的那个文件的内容

具体场景:

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,可以分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

在Git中,用HEAD表示当前版本,也就是最新的commit的那个版本。上一个版本就是HEAD^,上上一个版本就是HEAD^^。也可以用数字HEAD~,HEAD~2

关于reset的几个参数

git reset --mixed HEAD~   将HEAD指针指向上一个版本,同时将本地仓库改变后的HEAD的指向的内容覆盖到暂存区

git reset HEAD~  同上,默认是--mixed

git reset --hard HEAD~ 将HEAD指针指向上一个版本,同时将本地仓库HEAD的指向的内容同时覆盖到暂存区和工作区

git reset --soft HEAD~  只将本地仓库的HEAD指针指向上一个版本,其他不做改变。

对于回滚来说:

reset是针对的commit级别的操作,移动HEAD指针,同时可能会影响到暂存区和工作区

checkout改变的是工作区的内容,reset改变的可能是工作区、暂存区和HEAD指针的内容

git revert versionid  来使本地仓库的内容回到指定的版本内容。与reset的不同是,如果reset要回到以前的某个版本,则HEAD指针移到指定的版本的位置,此后的commit则不显示在git log里面了。而revert则是把它当做一次commit,即把工作区的内容修改成指定版本的内容然后add和commit了。

git cherry-pick versionid  经常用于将某个分支上的某次commit合并到master上,而分支的其他commit暂时不合并。(比如修复bug的commit)

git merge和git rebase

两者最终结果相似,都是将分支合并,不过合并过程和方式不同。

上图:执行git merge master,把master分支合并到dev分支上

若是执行git rebase,就会将原来dev的两次提交d和e添加到master分支后面,变成d‘和e’。若有冲突的话,修改后使用git add 和git rebase --continue即可。过程中任何时候可以使用git rebase --abort来终止rebase操作回到原来的状态

其余还有一些命令,比如git log、git config等等,不写了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • sql server 2008 基础知识

    一、配置管理器 1.管理服务   使用配置管理器可以启动、停止、重新启动、继续或暂停服务。   服务器和客户端网络协议 2.SQLSMS   简介:SQLSMS...

    欠扁的小篮子
  • windows API 开发飞机订票系统 图形化界面 (二)

    首先,用到的数据结构的定义、以及全局变量和函数的声明如下: 1 // Flight.c : 定义应用程序的入口点。 2 // 3 #include ...

    欠扁的小篮子
  • 递归与分治之快速排序

    分治法就是把一个大问题分解为多个类型相同的子问题,最后把这些子问题的解合并起来就是问题的解。 快速排序(Quicksort)是对冒泡排序的一种改进,采用了分治的...

    欠扁的小篮子
  • 获得一个Git仓库

    既然我们现在把一切都设置好了,那么我们需要一个Git仓库。有两种方式可以得到它:一种是从已有的Git仓库中 clone(克隆,复制);还有一种是新建一个仓库,把...

    用户3004328
  • Git清理commit中历史提交的大文件

    du是linux 的基础命令,很多用法,详情自己去查找其他文档。 因为git的历史文件都是存在一个文件里的,我们使用下面命令可以找出排名前五的文件

    华创信息技术
  • Git - 简易指南

    本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 缓存区(Index),它像个缓存区域,临时保存你的改动;最后是 HE...

    Lemon黄
  • 002.Git日常基础使用

    已跟踪:指文件在上一次快照中有对应的记录,当前状态可能处于未修改,已修改或已放入暂存区。

    木二
  • 开发工具总结(3)之Git及GitHub快速入门图文全面详解

    版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/p/3f12bd3ccf2a

    AWeiLoveAndroid
  • git解析日志常用命令

    git shortlog 按作者对每个提交进行分组,并显示每个提交消息的第一行。按作者名称排序输出。

    justmine
  • 1-git的安装和基本使用https://gitee.com/

    说一下,我希望都要会用git,git很好用, 代码管理,多人合作开发一个项目,版本记录等等

    杨奉武

扫码关注云+社区

领取腾讯云代金券