git 工作中常用命令

  • 1.首次使用git
  • 2.将代码加入git管理
    • 1.将已有代码加入git管理
    • 2.新建项目用git管理
  • 3.git 重命名
  • 4. 查看版本演练历史
  • 5. 探究.git目录
  • 6. git查看文件类型和文件内容
  • 7.git 分离头指针
  • 8. 切换分支
  • 9. 比较2个commit的差异
  • 10. 查看所有分支
  • 11. 删除多余分支
  • 12.对最近一次提交commit message 做变更
  • 13. 修改老旧的commit message 信息做变更
  • 14.把多个连续的commit 合并成一个commit
  • 15.把几个不连续的commit整理为1个commit
  • 16. 比较暂存区和HEAD所含文件差异
  • 17.比较工作区和暂存区文件差异
  • 18. 如何让暂存区恢复成和HEAD的一致
  • 19.如何让工作区恢复成和暂存区一样
  • 20.如何取消暂存区部分文件的更改
  • 21. 消除最近几次的提交
  • 22.查看不同提交时的指定文件或分支的差异
  • 23.删除文件
  • 24.开发中临时加塞紧急任务如何处理
  • 25. 如何将git仓库备份到本地
  • 26.本地仓库同步到远端
  • 27. 同一分支不同人修改了不同文件如何处理
  • 28. 不同人修改了同文件的不同区域如何处理
  • 29. 不同人修改了同文件的同一区域如何处理
  • 30. 同时变更了文件名和文件内容如何处理
  • 31. 把同一文件改成了不同文件名如何处理

1.首次使用git

首次使用git,需要配置User信息

 $ git config --global user.name "John Doe"$ git config --global user.email "johndoe@example.com"git config --local : 只对某个仓库有效git config --global: 对当前用户所有仓库有效git config --system: 对系统所有登录的用户有效git config --list命令列出Git可以找到的所有设置

2.将代码加入git管理

1.将已有代码加入git管理

 1、cd  已有项目文件夹下2、git init

2.新建项目用git管理

 1、cd 某个文件夹下2、git init your project 会在当前路径下创建项目名称同名的文件夹

3.git 重命名

 git mv  file_from(源文件名)  file_to(新文件名)

4. 查看版本演练历史

 1、git log  查看提交历史2、git log --all  --graph --oneline -n4:查看所有分支  (-n4:最近4次提交)

5. 探究.git目录

 |-- HEAD         # 这个git项目当前处在哪个分支里,最终落脚于某个commit|-- config       # 项目的配置信息,git config命令会改动它|-- description  # 项目的描述信息|-- hooks/       # 系统默认钩子脚本目录|-- index        # 索引文件,暂存区,一个二进制文件|-- logs/        # 各个refs的历史信息|-- objects/     # Git本地仓库的所有对象 (commits, trees, blobs, tags)|— refs/        # 标识你项目里的每个分支指向了哪个提交(commit)

6. git查看文件类型和文件内容

 查看文件类型:git cat-file -t  123456(commit_id)查看文件内容:git cat-file -p 123456(commit_id)tree:文件夹 blob:文件

7.git 分离头指针

 git checkout <commit_id>

分离头指针的本质
是工作在没有分支的情况下,如果这个时候切换了分支,在这期间做的commit和变更操作因为没有branch挂钩,所以很容易被当做垃圾处理掉

使用场景:做尝试性变更
处于分离头指针装状态修改commit后,切换回master分支,git 会提示是否保存分离头指针做的修改;保存则按照提示命令新建分支保存 ,创建一个新的分支,这个分支是基于头指针分离下修改提交的commit_id创建的

 git branch <新分支名> commit_id (commit_id是在分离头指针状态下提交后的commit_id)

8. 切换分支

 1、git checkout 分支名2、git checkout 分支名1  分支名2  (基于分支名2 创建新分支1)

9. 比较2个commit的差异

 1、git diff HEAD HEAD~1 :比较HEAD和HEAD祖先的差异(~2:祖先的祖先)2、git diff commit_id1  commit_id2

10. 查看所有分支

 git branch -av

11. 删除多余分支

 git banch -d/-D  分支名

12.对最近一次提交commit message 做变更

 git  commit --amend

13. 修改老旧的commit message 信息做变更

 git rebase -i+修改commit的父节点交互页:+reword  eg: reword commit_id message

修改老旧的commit message (要修改的comit后子commit的id号会更新)

14.把多个连续的commit 合并成一个commit

  git rebase -i+修改commit的父节点 (要基于某个pick的commit进行squash)

pick 的意思是要会执行这个 commit
squash 的意思是这个 commit 会被合并到前一个commit
eg: pick commit_id add a
sqush commit_id add b (该提交会合并到pick 中)

15.把几个不连续的commit整理为1个commit

 git rebase -i+修改commit的父节点 ,然后将不连续的commit修改位置,基于某个pick,修改其他commit 为squash

16. 比较暂存区和HEAD所含文件差异

 git diff --cached

17.比较工作区和暂存区文件差异

 1、git diff  2、git diff  文件名1  文件名2   基于文件查看工作区暂存区差异(多个文件空格隔开)

18. 如何让暂存区恢复成和HEAD的一致

 1、git reset HEAD   工作区不会被更新,只会将暂存区恢复成HEAD2、git reset --hard HEAD   会将工作区和暂存区恢复成HEAD

19.如何让工作区恢复成和暂存区一样

 git checkout  --file  (file表示要恢复的文件)

20.如何取消暂存区部分文件的更改

 git reset HEAD -- file (file表示要恢复的文件)

21. 消除最近几次的提交

 git reset --hard commit_id (commit_id 之后的提交将会丢弃,工作区、暂存区恢复成commit_id时内容)

22.查看不同提交时的指定文件或分支的差异

 1、git diff 分支1  分支2  查看2个分支的差异2、git diff 分支1  分支2  --index.html  查看2个分支index.html 的差异3、git diff commit_id1  commit_id2  --index.html  查看2个commit中index.html 的差异

23.删除文件

 git rm -rf 要删除的文件

24.开发中临时加塞紧急任务如何处理

 git stash (git stash作用的范围包括工作区和暂存区中的内容,也就是说没有提交的内容都会保存至堆栈中)

git stash apply: 将数据展示出来,stash 堆栈中数据还在不会被删除。
git stash pop: 将数据展示出来,stash 堆栈中数据被删除。

25. 如何将git仓库备份到本地

常用协议 Value
本地协议 1、path/to/repo.git (哑协议本地协议) 2、file:///path/to/repo.git (智能协议)
http/https协议 http://git-server/repo.git (智能协议)
ssh协议 user@git-server com: path/to/repo.git(智能协议)

哑协议与智能协议区别
1、哑协议传输进度不可见;智能协议传输可见
2、传输速度:智能协议比哑协议传输速度快

 备份步骤:1、 克隆不带工作区的备份裸仓库(备份) :git clone --bare  仓库地址2、 工作区的变更同步备份:git push <远程主机名><本地分支名>:<远程分支名>

26.本地仓库同步到远端

  1. 远端仓库有的文件,本地仓库没有
 1、git fetch <远程仓库名> <远程分支名>  默认获取获取远端仓库全部更新,可加分支名获取对应分支更新(此时本地会有一棵独立的树)eg: git fetch origin master 获取origin仓库master分支更新2、git merge --allow-unrelated-histories <远端分支名>  在当前分支下合并分支(对两个不相干的树进行merge)3、git push <远程主机名> <本地分支名>:<远程分支名> (--all  全部)将本地的分支推送到远程主机的远程分支,分支不存在则会新建ps: git push <远程仓库> : <远程分支名>  删除远程仓库的远程分支(push了空的分支上去,相当于删除远程分支)
  1. 远端仓库有的文件,本地仓库也有,直接push

27. 同一分支不同人修改了不同文件如何处理

 1、git fetch  <远程仓库名> <远程分支名>2、git merge  远端分支3、git push

28. 不同人修改了同文件的不同区域如何处理

 方法一:1. git fetch <远程仓库名> <远程分支名>2. git merge 远端分支3. git push 方法二:1. git  pull  = git fetch  + git merge   ,然后git pushgit  pull <远程主机名> <远程分支名>:<本地分支名> 取回远程主机某个分支到的更新到本地分支eg:  git pull origin next:master 如果远程分支是与当前分支合并,则冒号后面的部分可以省略eg:  git pull origin next2. git push

29. 不同人修改了同文件的同一区域如何处理

 1、 git pull 分支到本地(会提示冲突)2、打开修改的文件,查看冲突内容进行修改3、git commit / git merge --abort(退出合并分支)4、git push

30. 同时变更了文件名和文件内容如何处理

场景:用户A把文件名变更,用户B在原文件名下做了变更,此时push至远端失败

 1. git pull (git自动识别文件名变更,更新文件名)2. git push 这时候不会报错

31. 把同一文件改成了不同文件名如何处理

  1、git pull (git提示:1. 删除原文件  2. 生成2个同文件名但相同内容的文件)2、git rm + 原文件 3、git rm +已修改文件名的文件4、git add 最终确认的文件名的文件5、git commit 6、git push

工作超级实用的git命令相关推荐

  1. 一周工作所用的日常 Git 命令

    像大多数新手一样,我一开始是在 StackOverflow 上搜索 Git 命令,然后把答案复制粘贴,并没有真正理解它们究竟做了什么. Image credit: XKCD[1] 我曾经想过:&quo ...

  2. 工作中实用的 Linux 命令

    1.实用的 xargs 命令 在平时的使用中,我认为xargs这个命令还是较为重要和方便的.我们可以通过使用这个命令,将命令输出的结果作为参数传递给另一个命令. 比如说我们想找出某个路径下以 .con ...

  3. 最实用的Git命令总结:新建本地分支、远程分支、关联和取消关联分支、清除本地和远程分支、合并分支、版本还原、tag命令、中文乱码解决方案、如何fork一个分支和修改后发起合并请求

    1.常用命令git.tag整理 1.新建分支本地分支 git branch <branch-name>远程分支 git push origin <branch-name>:&l ...

  4. 工作中常用的git命令记录

    1.拉取代码 git clone -b <branch>(要获取的代码对应的分支 ) .....xxx.git 2.合并代码 git merge (等同于git merge --ff): ...

  5. git add后取消_Python 命令行之旅:使用 click 实现 git 命令

    作者:HelloGitHub-Prodesire 一.前言 在前面五篇介绍 click 的文章中,我们全面了解了 click 的强大能力.按照惯例,我们要像使用 argparse 和 docopt 一 ...

  6. Google 开源的 Python 命令行库:fire 实现 git 命令

    一.前言 在前面三篇介绍 fire 的文章中,我们全面了解了 fire 强大而不失简洁的能力.按照惯例,我们要像使用 argparse.docopt 和 click 一样使用 fire 来实现 git ...

  7. Python命令行之旅:使用argparse实现git命令

    前言 本文将以我们日常工作中最常见的git命令为例,讲解如何使用argparse库来实现一个真正可用的命令行程序. 本文默认使用 Python 3 作为解释器进行讲解. 若你仍在使用 Python 2 ...

  8. 颠覆Git 命令使用体验的神器 - tig

    颠覆 Git 命令使用体验的神器 -- tig tig, 就是把 Git 这个单词倒过来念, 它是一个命令行工具, 日常使用中我用它来取代 Git 最高频的几个操作, 如 git log, git d ...

  9. Python 命令行之旅:使用 argparse 实现 git 命令

    作者:HelloGitHub-Prodesire HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...

最新文章

  1. git使用log命令显示中文乱码
  2. 怎么让datagridview中的某一行不可编辑
  3. 微服务精华问答 | 为什么需要微服务?
  4. 微信 账户升级服务器地址,微信支付商户平台账户升级后有哪些新功能呢?
  5. c++ 结构体中不同类型的初始值_Golang语言基础教程:结构体
  6. maven项目转换为web项目
  7. mahout AbstractJDBCModel log
  8. vs C3861 “rand”: 找不到标识符 ConsoleApplication1
  9. JS中的单引号和双引号
  10. 用matlab实现“太阳-地球-月亮运行示意图”动画
  11. 随笔---ubuntu下通过ifstat查看实时网速
  12. 如何管理好团队?史玉柱自述
  13. 最全的蓝桥杯嵌入式备赛集合~
  14. SpringCloud微服务架构学习
  15. EagleEye简介:户外视频监控分析和面部识别软件
  16. SpringMVC控制器内请求转发关键字forward无效原因
  17. MySQL高级篇——日志
  18. QQ浏览器 不支持html5,如何解决qq浏览器插件显示不了问题
  19. Window Internal 读书笔记
  20. Google分析统计

热门文章

  1. js,java提高编程效率之【for循环优化】
  2. vue热敏打印机_electron + vue项目实现打印小票功能
  3. 人大金仓时间格式化函数
  4. 梯度 散度 旋度的理解(笔记)
  5. 2013年计算机网络原理,全国2013年4月自学考试计算机网络原理试题
  6. Qt实现中国象棋:(六)棋子移动规则
  7. 视频编解码算法工程师岗位校招及提前批记录(持续更新)
  8. Win10 在 Visual Studio 2019 环境下配置 CUDA 10.1 + TensorFlow-GPU
  9. while(i--)与while(--i)
  10. 【每天一个java设计模式(十四)】 - 解释器模式