当前位置: 首页 > news >正文

Git知识

 

git最小化配置:

  配置user.name 和 user.email

  git config --global user.name 'your_name'

  git config --global user.email 'your_email'     // email需要是有效的Email

 

  config的作用域

  缺省等同于local

    git config --local  只对某个仓库有效

    git config --global 对当前用户所有仓库有效

    git config --system 对系统所有登陆用户有效

 

  显示config配置,加--list

    git config --list --local

    git config --list --global

    git config --list --system

 

建Git仓库

  2种场景:

    把已有的项目代码纳入Git管理

      #cd 项目代码所在的文件夹

      #git init

    新建项目直接用git 管理

      #cd 某个文件夹

      #git init your_project  会在当前路径下创建和项目同名的文件夹

      #cd your_project

 

往仓库里添加文件:

  版本历史

  暂存区

  工作目录

    查看git工作状态

      #git status

    将文件加入到暂存区:

      #git add 文件或文件夹

    将暂存区文件正式提交

      #git commit  -m  "内容"

    查看版本历史的日志

      #git log

    将已经管理但是刚修改的文件添加到暂存区

      #git add -u 

 

文件重命名:

    方案一:

    #mv readme readme.md

    #git add readme.md

    #git rm readme    原文件删除

    #git commit -m '内容'

    注:操作还原,清理暂存区所有变更

    #git reset --hard

    方案二:

    #git mv readme readme.md

    #git commit -m '内容'

 

 

查看git版本历史:

    #git log --online    简洁方式查看历史

    #git log --n4  查看最近4次历史

    #git log --all 查看所有分支的版本历史

    #git log --all --graph  父子关系展示版本历史

 

    注:git branch -v 查看本地分支

 

查看版本历史图形界面工具:

    gitk    

 

git目录:

    查看git 配置文件

    #cat .git/config

    

    .git/refs/  下存在heads和tags文件,heads下是分支文件的指针文件;tags下文件是哈希值文件;.git/objects/下文件是上传的文件

    #cd e8

    #git cat-file -t e8xxxx   // 查看文案类型

    #git cat-file -p e8xxx   //查看文件内容

    #git cat-file -p b72xxx

 

commit与tree与blob关系:(git对象的彼此关系)

 

 

 查看git分支/切换分支:

  git branch -av  //查看分支

  git checkout master  //切换分支

  git checkout -b 子分支 父分支   //创建基于父分支的子分支

 

 提交分支到远程:

  #git checkout --orphan cluster

  #git checkout cluster

  #git rm -rf .

  #vim README.md

  #git add README.md

  #git commit -m "ADD readme.md"

  #git push -u origin cluster 

 

分离头指针:

  git checkout commit编号   //进入分离头指针

  文件编辑后,分离头要创建/加入某一分支

  git branch '分支名'  xxxxxx     //xxxx是分离头指针编号

 

 head和branch关系:

  head不仅可以指向分支,还可以指向某个文件(分离头指针)

  

删除不需要的分支:

  git branch -D 分支名

       

修改commit信息:

  git commit --amend

 

修改老旧commit信息:

  git rebase -i commit的父ID  ==》进入说明文件 :wq! => 进入交互界面修改 ,保存  wq!

 

连续的多个commit合并成一个:

  commit的父ID查看:

   git log --graph  选定commitID的下一个即为父commit

  #git rebase -i commit的父ID

  ==》修改文件

  假设要合并4个文件,则保留一个pick,3个修改成s

       再保存(wq!),进入交互界面

  修改文件,保存  wq!

 

间隔的多个commit合并成一个:

  #git rebase -i 最下面的commitID

  =》 在文件的最上面增加pick 最下面的commitID ,要合并的commit放在一起,保留一个pick,其余修改成s

  其余步骤同上

 

暂存区和head文件(最近commit的文件)差异:

  #git diff --cached  

 

暂存区和工作区差异:

  #git diff

  #git diff -- readme.md //只比较readme.md文件差别

 

暂存区所有文件不保留(暂存区与工作区一致):

  #git reset HEAD

工作区文件恢复与暂存区一致:

  #git checkout -- <file>   //file 是文件名

 取消暂存区部分文件的更改:

  #git  reset HEAD -- <file ...>

消除最近几只commit:

      #git reset --hard  commitID   // 恢复到指定commitID位置

查看提交文件的差异://比较2个分支相同文件的差异

  #git diff 分支1  分支2  --  文件名

       #git diff commitID1 commitID2  -- 文件名

删除文件:

  #git rm   file-name

  ex:删除远程仓库的目录/文件 

  #git rm -r --cached a/2.txt //删除a目录下的2.txt文件   删除a目录git rm -r --cached a
  #git commit -m "删除a目录下的2.txt文件" 
  #git push

加塞任务

  #git stash   //暂存区放置缓存

  #git stash list

  #git stash apply  //缓存内容放置工作区,缓存信息不丢失

  #git stash pop  // 缓存内容放置工作区,缓存信息丢失

 

git 仓库备份至本地

  

 

 本地仓库同步至远程:

  #git  remote add 别名  远程项目地址 

   #git remote -v  //查看远端别名连接地址

   #git push 别名  --all   //push 所有的分支

    

合并分支:

  #  git fetch origin 最新版本的线上分支:新建一个本地的分支//从远程的origin仓库的最新版本的线上分支下载到本地,并新建一个本地的新分支

  #  git diff 新建的本地的分支

  # git merge 新建的本地的分支//将新建一个本地的新分支和本地分支合并

  #  git branch -D 新建的本地的分支

  #  解决冲突

  #  git add .

  #  git commit -m '合并+解决冲突'

  #  git pull origin 最新版本的线上分支

  # git push origin 我本地的分支:最新版本的线上分支

 

 

  

转载于:https://www.cnblogs.com/zy1234567/p/10432162.html

相关文章:

  • cd命令
  • Mac 命令行美化
  • 写给自己看的发布react静态资源的方法
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • spring + angular 实现导出excel
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • Git for Windows 2.21.0 发布,Win 下的 Git 客户端
  • 聊聊flink的BlobWriter
  • PDF旋转使用的转换器有哪些
  • luoguP4647 [IOI2007] sails 船帆
  • 乐视云计算被列入失信名单;三星华为达成和解;Python3 采用率超 84%丨Q新闻
  • django -- 修改admin 密码问题
  • Java 最常见的 200+ 面试题:面试必备
  • lvm管理卷之缩减卷大小
  • 使用WebShellKiller检查服务器后门文件
  • [译]前端离线指南(上)
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • Cookie 在前端中的实践
  • crontab执行失败的多种原因
  • Docker 笔记(2):Dockerfile
  • MD5加密原理解析及OC版原理实现
  • spring + angular 实现导出excel
  • vue.js框架原理浅析
  • 搭建gitbook 和 访问权限认证
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 排序算法之--选择排序
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 三分钟教你同步 Visual Studio Code 设置
  • 线性表及其算法(java实现)
  • 一、python与pycharm的安装
  • k8s使用glusterfs实现动态持久化存储
  • 阿里云服务器如何修改远程端口?
  • #android不同版本废弃api,新api。
  • #传输# #传输数据判断#
  • (1)(1.13) SiK无线电高级配置(五)
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (独孤九剑)--文件系统
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (二)正点原子I.MX6ULL u-boot移植
  • (顺序)容器的好伴侣 --- 容器适配器
  • (四)库存超卖案例实战——优化redis分布式锁
  • (转)iOS字体
  • ***利用Ms05002溢出找“肉鸡
  • .net core 6 redis操作类
  • .net core 连接数据库,通过数据库生成Modell
  • .Net Core缓存组件(MemoryCache)源码解析
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .NET连接MongoDB数据库实例教程
  • .NET命名规范和开发约定
  • @ConfigurationProperties注解对数据的自动封装
  • @DataRedisTest测试redis从未如此丝滑
  • [ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(十)RCE (远程代码/命令执行漏洞)相关面试题
  • [Android Pro] android 混淆文件project.properties和proguard-project.txt
  • [C# 基础知识系列]专题十六:Linq介绍