工作超级实用的git命令
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、git fetch <远程仓库名> <远程分支名> 默认获取获取远端仓库全部更新,可加分支名获取对应分支更新(此时本地会有一棵独立的树)eg: git fetch origin master 获取origin仓库master分支更新2、git merge --allow-unrelated-histories <远端分支名> 在当前分支下合并分支(对两个不相干的树进行merge)3、git push <远程主机名> <本地分支名>:<远程分支名> (--all 全部)将本地的分支推送到远程主机的远程分支,分支不存在则会新建ps: git push <远程仓库> : <远程分支名> 删除远程仓库的远程分支(push了空的分支上去,相当于删除远程分支)
- 远端仓库有的文件,本地仓库也有,直接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命令相关推荐
- 一周工作所用的日常 Git 命令
像大多数新手一样,我一开始是在 StackOverflow 上搜索 Git 命令,然后把答案复制粘贴,并没有真正理解它们究竟做了什么. Image credit: XKCD[1] 我曾经想过:&quo ...
- 工作中实用的 Linux 命令
1.实用的 xargs 命令 在平时的使用中,我认为xargs这个命令还是较为重要和方便的.我们可以通过使用这个命令,将命令输出的结果作为参数传递给另一个命令. 比如说我们想找出某个路径下以 .con ...
- 最实用的Git命令总结:新建本地分支、远程分支、关联和取消关联分支、清除本地和远程分支、合并分支、版本还原、tag命令、中文乱码解决方案、如何fork一个分支和修改后发起合并请求
1.常用命令git.tag整理 1.新建分支本地分支 git branch <branch-name>远程分支 git push origin <branch-name>:&l ...
- 工作中常用的git命令记录
1.拉取代码 git clone -b <branch>(要获取的代码对应的分支 ) .....xxx.git 2.合并代码 git merge (等同于git merge --ff): ...
- git add后取消_Python 命令行之旅:使用 click 实现 git 命令
作者:HelloGitHub-Prodesire 一.前言 在前面五篇介绍 click 的文章中,我们全面了解了 click 的强大能力.按照惯例,我们要像使用 argparse 和 docopt 一 ...
- Google 开源的 Python 命令行库:fire 实现 git 命令
一.前言 在前面三篇介绍 fire 的文章中,我们全面了解了 fire 强大而不失简洁的能力.按照惯例,我们要像使用 argparse.docopt 和 click 一样使用 fire 来实现 git ...
- Python命令行之旅:使用argparse实现git命令
前言 本文将以我们日常工作中最常见的git命令为例,讲解如何使用argparse库来实现一个真正可用的命令行程序. 本文默认使用 Python 3 作为解释器进行讲解. 若你仍在使用 Python 2 ...
- 颠覆Git 命令使用体验的神器 - tig
颠覆 Git 命令使用体验的神器 -- tig tig, 就是把 Git 这个单词倒过来念, 它是一个命令行工具, 日常使用中我用它来取代 Git 最高频的几个操作, 如 git log, git d ...
- Python 命令行之旅:使用 argparse 实现 git 命令
作者:HelloGitHub-Prodesire HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...
最新文章
- git使用log命令显示中文乱码
- 怎么让datagridview中的某一行不可编辑
- 微服务精华问答 | 为什么需要微服务?
- 微信 账户升级服务器地址,微信支付商户平台账户升级后有哪些新功能呢?
- c++ 结构体中不同类型的初始值_Golang语言基础教程:结构体
- maven项目转换为web项目
- mahout AbstractJDBCModel log
- vs C3861	“rand”: 找不到标识符	ConsoleApplication1
- JS中的单引号和双引号
- 用matlab实现“太阳-地球-月亮运行示意图”动画
- 随笔---ubuntu下通过ifstat查看实时网速
- 如何管理好团队?史玉柱自述
- 最全的蓝桥杯嵌入式备赛集合~
- SpringCloud微服务架构学习
- EagleEye简介:户外视频监控分析和面部识别软件
- SpringMVC控制器内请求转发关键字forward无效原因
- MySQL高级篇——日志
- QQ浏览器 不支持html5,如何解决qq浏览器插件显示不了问题
- Window Internal 读书笔记
- Google分析统计
热门文章
- js,java提高编程效率之【for循环优化】
- vue热敏打印机_electron + vue项目实现打印小票功能
- 人大金仓时间格式化函数
- 梯度 散度 旋度的理解(笔记)
- 2013年计算机网络原理,全国2013年4月自学考试计算机网络原理试题
- Qt实现中国象棋:(六)棋子移动规则
- 视频编解码算法工程师岗位校招及提前批记录(持续更新)
- Win10 在 Visual Studio 2019 环境下配置 CUDA 10.1 + TensorFlow-GPU
- while(i--)与while(--i)
- 【每天一个java设计模式(十四)】 - 解释器模式