git 命令汇总

瞎扯

最近有几个留言想让写下git的内容,git是一个工具,主要是用来管理码农的代码的,理由很简单,码农写的代码太多,自己都不知道可能哪里出现了Crash。Linux也是因为git的出现,可以让世界上越来越多的人维护修改bug,现在的linux内核才发展的越来越快。

 

git基础

我觉得,要学习git,首先要了解几个概念

  • working dir 这个是工作区,我们一般都处在工作区中
  • index 这个是缓存区,可以临时保存你的改动
  • HEAD 指向你最新提交的结果(上图没显示)
  • 哈希号 上面那个...... 表示每次提交生成一次哈希号,可以认为是某次提交的身份证号码(上图没显示)
  • local repository : 本地仓库
  • remote repository:远程仓库

 

安装初始化git

正常我们都是在Linux下开发和使用git,如果在windows和苹果下开发,请自行百度

安装git

#sudo apt-get install git 
#sudo apt-get install git-doc git-svn git-email git-gui gitk

初始化git

ssh-keygen #生成git key 默认在.ssh目录下
git init # 在当前目录新建一个Git代码库
git init [project-name] # 新建一个目录,将其初始化为Git代码库
git clone [url]# 下载一个项目和它的整个代码历史
git config --list# 显示当前的Git配置
git config -e [--global]# 编辑Git配置文件
# 设置提交代码时的用户信息
git config --global user.email "you@example.com"
git config --global user.name "Your Name"

 

 

代码提交相关命令

git clone https://github.com/username/repo name.git # 从远程仓库下载代码
git status . # 查看当前工作区的修改
git add * # 跟踪新文件
git add -u [path] # 添加[指定路径下]已跟踪文件

rm *&git rm * # 移除文件
git rm -f * # 移除文件
git rm --cached * # 停止追踪指定文件,但该文件会保留在工作区
git mv file_from file_to # 重命名跟踪文件

git log # 查看提交记录

git commit # 提交更新
git commit [file1] [file2] ... # 提交指定文件
git commit -m 'message'
git commit -a # 跳过使用暂存区域,把所有已经跟踪过的文件暂存起来一并提交
git commit --amend#修改最后一次提交
git commit -v # 提交时显示所有diff信息

git reset HEAD *#取消已经暂存的文件
git reset --mixed HEAD *#同上
git reset --soft HEAD *#重置到指定状态,不会修改索引区和工作树
git reset --hard HEAD *#重置到指定状态,会修改索引区和工作树
git reset -- files#重置index区文件

git revert HEAD #撤销前一次操作
git revert HEAD~ #撤销前前一次操作
git revert commit ## 撤销指定操作

git checkout -- file#取消对文件的修改(从暂存区——覆盖worktree file)
git checkout branch|tag|commit -- file_name#从仓库取出file覆盖当前分支
git checkout -- .#从暂存区取出文件覆盖工作区

git diff file #查看指定文件的差异
git diff --stat #查看简单的diff结果
git diff #比较Worktree和Index之间的差异
git diff --cached #比较Index和HEAD之间的差异
git diff HEAD #比较Worktree和HEAD之间的差异
git diff branch #比较Worktree和branch之间的差异
git diff branch1 branch2 #比较两次分支之间的差异
git diff commit commit #比较两次提交之间的差异

git log --grep=aplog #查找关键字aplog

git log #查看最近的提交日志
git log --pretty=oneline #单行显示提交日志
git log --graph # 图形化显示
git log --abbrev-commit # 显示log id的缩写
git log -num #显示第几条log(倒数)
git log --stat # 显示commit历史,以及每次commit发生变更的文件
git log --follow [file] # 显示某个文件的版本历史,包括文件改名
git log -p [file] # 显示指定文件相关的每一次diff
git log --oneline #只用一行显示每次的提交包含哈希号和commit内容 

git stash #将工作区现场(已跟踪文件)储藏起来,等以后恢复后继续工作。
git stash list #查看保存的工作现场
git stash apply #恢复工作现场
git stash drop #删除stash内容
git stash pop #恢复的同时直接删除stash内容 最好不要这么干,除非你下次确认不会再使用缓存数据
git stash apply stash@{0} #恢复指定的工作现场,当你保存了不只一份工作现场时。

 

分支操作

git branch #列出本地分支
git branch -r#列出远端分支 为了方便查看,前面会有一个*号显示
git branch -a#列出所有分支
git branch -v#查看各个分支最后一个提交对象的信息
git branch --merge#查看已经合并到当前分支的分支
git branch --no-merge#查看为合并到当前分支的分支
git branch test#新建test分支
git branch branch [branch|commit|tag] # 从指定位置出新建分支
git branch --track branch remote-branch # 新建一个分支,与指定的远程分支建立追踪关系
git branch -m old new #重命名分支
git branch -d test #删除test分支
git branch -D test #强制删除test分支 可以多分支同时删除
git branch --set-upstream dev origin/dev #将本地dev分支与远程dev分支之间建立链接

git checkout test#切换到test分支
git checkout -b test#新建+切换到test分支
git checkout -b test dev#基于dev新建test分支,并切换

git merge test#将test分支合并到当前分支
git merge --squash test ## 合并压缩,将test上的commit压缩为一条

git cherry-pick commit #拣选合并,将commit合并到当前分支,比如我们之前在dev分支下做了一个修改,然后切换到master下面来,同步了最新的代码,可以通过cherry-pick把之前的提交同步过来
git cherry-pick -n commit #拣选多个提交,合并完后可以继续拣选下一个提交

git rebase master#将master分之上超前的提交,变基到当前分支
git rebase --onto master 169a6 #限制回滚范围,rebase当前分支从169a6以后的提交
git rebase --interactive #交互模式
git rebase --continue# 处理完冲突继续合并
git rebase --skip# 跳过
git rebase --abort# 取消合并

远程分支相关命令

git fetch origin remotebranch[:localbranch]# 从远端拉去分支[到本地指定分支]
git merge origin/branch#合并远端上指定分支
git pull origin remotebranch:localbranch# 拉去远端分支到本地分支
git push origin branch#将当前分支,推送到远端上指定分支
git push origin localbranch:remotebranch#推送本地指定分支,到远端上指定分支
git push origin :remotebranch # 删除远端指定分支
git push origin remotebranch --delete # 删除远程分支
git branch -dr branch # 删除本地和远程分支
git checkout -b [--track] test origin/dev#基于远端dev分支,新建本地test分支[同时设置跟踪]

 

git远程源

git是一个分布式代码管理工具,所以可以支持多个仓库,在git里,服务器上的仓库在本地称之为remote。

个人开发时,多源用的可能不多,但多源其实非常有用。

正常的时候,我们在一个远程仓库作为本地代码仓库的源,但是有时候我们远程仓库的地址改变了,本地不管提交还是拉取代码都会出错,这时候就需要更新源。

git remote add origin1 git@github.com:weiqifa/demo.git #添加源
git remote#显示全部源
git remote -v#显示全部源+详细信息
git remote rename origin1 origin2#重命名
git remote rm origin#删除
git remote show origin#查看指定源的全部信息

 

想清楚了再使用

gitpush-f origin master#强制提交,这个命令你领导估计也不知道你干嘛了,当然你爽了,别人就瞎逼了

同步其他分支的某个文件

git show yan3_dev:scripts/resource_tool>scripts/resource_tool

把yan3_dev 分支下的resource_tool 同步到当前分支下

 

打包项目源码命令相关

git clone –bare kernel/ 这样生成kernel.git 这里会包含.git文件夹

git clone kernel.git/ 这样来解包

 

打补丁命令相关

git diff ./ > *.patch

patch -p1 < xxx.patch

 

查看历史分支图

git log –graph –all

 

git 忽略文件相关

Git 忽略一些文件的提交 - 嵌入式Linux - CSDN博客

 

学会查找资料

总结的命令不一定会都用到,但是学会如何查找资料解决自己的问题非常关键,很多时候我们提交可能提示出错,很多的时候都是分支跟master有冲突,或者从错误日志上可以看出问题,多动动脑子,很快就可以解决了。

git help commit #查看commit命令的帮助信息

 

参考

Git 命令 - 嵌入式Linux - CSDN博客​blog.csdn.net

https://blog.csdn.net/weiqifa0/article/details/11655049​blog.csdn.net

GIT安装和配置 - 嵌入式Linux - CSDN博客​blog.csdn.net

GIT安装和配置 - 嵌入式Linux - CSDN博客​blog.csdn.net

https://blog.csdn.net/weiqifa0/article/details/51917879​blog.csdn.net

ubuntu下面的git服务器搭建 - 嵌入式Linux - CSDN博客​blog.csdn.net

ubuntu下面的git服务器搭建 - 嵌入式Linux - CSDN博客​blog.csdn.net

【Github教程】史上最全github使用方法:github入门到精通 - 嵌入式Linux - CSDN博客​blog.csdn.net

https://blog.csdn.net/weiqifa0/article/details/10107375​blog.csdn.net

GIT非常好的整理 - 嵌入式Linux - CSDN博客​blog.csdn.net

GIT非常好的整理 - 嵌入式Linux - CSDN博客​blog.csdn.net

在git上push代码时缺少Change-Id - 嵌入式Linux - CSDN博客​blog.csdn.net

https://stackoverflow.com/questions/1337320/how-to-grep-git-commit-diffs-or-contents-for-a-certain-word​stackoverflow.comHow to grep Git commit diffs or contents for a certain word?​stackoverflow.com

How to grep Git commit diffs or contents for a certain word?​stackoverflow.com

Git工具详解以及与GitHub的配合使用_Linux教程_Linux公社-Linux系统门户网站​www.linuxidc.com我的git笔记​yanhaijing.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/468860.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的最佳队友之K8无线蓝牙键盘深度使用测评( Keychron K8 )

K8 无线蓝牙键盘深度使用测评&#xff08; Keychron K8 &#xff09;——500 元左右最适配 Mac 电脑的机械键盘 0.键盘参数&#xff1a; 首先我们在实际测评之前&#xff0c;看下这个键盘的具体参数&#xff0c;心里有个大致的了解~ 87键 国产佳达隆G轴 可选茶轴/红轴/青轴 蓝…

你见过哪些操蛋的代码?

NO.1#define TRUE FALSE //Happy debugging suckers快乐的去调试你的代码吧&#xff0c;哈哈NO.2#define NULL (::rand() % 2) // would be quite nice aswell嗯&#xff0c;这个代码也很不错NO.3#define if( if(!卧槽&#xff0c;这个代码更加叼&#xff0c;哈哈&#xff…

后序线索树怎样画图_算法新解刘新宇(二)二叉搜索树:数据结构中的“hello world”...

二叉搜索树BST定义&#xff1a;基于广义二叉树&#xff0c;一颗二叉树定义&#xff1a;或者为空 或者包含三部分&#xff1a;一个值&#xff0c;一个左分支和一个右分支。这两个分支也都是二叉树分支。一颗二叉搜索树是满足下面条件的二叉树&#xff1a;所有左分支的值都小于本…

Android 亮屏速度分析总结

前面聊的 最近在调试项目的亮屏速度&#xff0c;我们希望在按下power键后到亮屏这个时间能达到500MS以内&#xff0c;在Rockchip 3399和3288上面的时间都不能达到要求&#xff0c;因此引发了一系列的调试之路。 计算按下power键到亮屏的时间 Android 唤醒时间统计 刚开始的时…

英语学习中总结的阅读、段落匹配、选词填空技巧

1 阅读题 一般五道题都是围绕主旨来问的&#xff0c;所以后四个问题也能帮助第一题的解答&#xff0c;找共有词~~~串起来 文章一般都是新旧观点的碰撞&#xff0c;所以有时候他问的是旧观点&#xff0c;要看清楚他问的是新观点还是旧观点&#xff0c;这是个陷阱~ 2 段落匹配 反…

sql 账号查询一个表查询权限_一个查询语句引发的问题以及巨型表相关操作探索与思考...

背景&#xff1a;关于这个标题想了试了好几个总觉得欠那么点意思。大致情况是&#xff0c;在某服务支持中&#xff0c;1张大表4.5T左右&#xff0c;该表也是分区表。其中一个执行频繁的SQL写法有很大问题&#xff0c;导致巨表全量扫描&#xff0c;造成IO负载很大&#xff0c;业…

Android 亮屏速度分析

前面聊的最近在调试项目的亮屏速度&#xff0c;我们希望在按下power键后到亮屏这个时间能达到500MS以内&#xff0c;在Rockchip 3399和3288上面的时间都不能达到要求&#xff0c;因此引发了一系列的调试之路。计算按下power键到亮屏的时间Android 唤醒时间统计刚开始的时候&…

container_of实例

1 前面说的 container_of 在linux内核代码里面使用非常多&#xff0c;对于喜欢linux编程的同学来说&#xff0c;对这个函数要非常清楚他的使用方法&#xff0c;而且还要知道他的原理&#xff0c;这对以后看内核代码&#xff0c;写内核驱动的帮助都非常大&#xff0c;当然&…

Git 分布式版本控制工具 03Git常用命令:Git全局设置+本地与远程仓库操作获取Git仓库+标签操作+忽略名单+工作区、暂存区、版本库+分支操作+暂时保存

Git常用命令目录4 Git常用命令4.1 Git全局设置4.2 获取Git仓库4.2.1 在本地初始化Git仓库4.2.2 从远程仓库克隆4.3 常见的概念&#xff1a;工作区、暂存区、版本库4.4 常见的概念&#xff1a;Git工作区中文件的状态4.5 本地仓库操作4.5.1 git status4.5.2 git add4.5.3 git res…

matlab dir函数_MATLAB自动管理文件

MATLAB自动管理文件1. MATLAB中路径设置(1)cd:用于切换当前工作目录示例&#xff1a;将当前工作目录切换到D:\Documents\MATLAB\Matlab test\study下。代码:cd (D:\Documents\MATLAB\Matlab test\study)(2)path:用于对搜索路径的操作示例&#xff1a;先查看当前所有的文件路径&…

Git 分布式版本控制工具 04Gitcode案例:多人协作开发流程+创建仓库+拉取操作+克隆仓库+拉取远程仓库中最新的版本+修改拉取的本地代码

文章目录5. Gitcode5.1 多人协作开发流程5.2 创建仓库5.3 拉取操作5.3.1 克隆仓库5.3.2 拉取远程仓库中最新的版本5.4 修改拉取的本地代码5.5 解决冲突5.6 跨团队协作5. Gitcode 在版本控制系统中&#xff0c;大约90%的操作都是在本地仓库中进行的&#xff1a;暂存&#xff0c…

rabbitmq如何保证消息不被重复消费_如何保证消息不被重复消费

一. 重复消息为什么会出现消息重复&#xff1f;消息重复的原因有两个&#xff1a;1.生产时消息重复&#xff0c;2.消费时消息重复。1.1 生产时消息重复由于生产者发送消息给MQ&#xff0c;在MQ确认的时候出现了网络波动&#xff0c;生产者没有收到确认&#xff0c;实际上MQ已经…

Git 分布式版本控制工具 06在IDEA中使用Git:获取Git仓库+本地仓库操作+远程仓库操作+创建/查看/切换/推送/合并分支操作

在IDEA中使用Git7. 在IDEA中使用Git7.1 在IDEA中配置Git7.2 获取Git仓库7.2.1 本地初始化仓库7.2.2 从远程仓库克隆7.3 Git忽略文件7.4 本地仓库操作7.4.1 将文件加入暂存区7.4.2 将暂存区文件提交到版本库7.4.3 查看日志7.5 远程仓库操作7.5.1 查看远程仓库7.5.2 添加远程仓库…

linux 内核宏container_of剖析

1、前面说的我在好几年前读linux 驱动代码的时候看到这个宏&#xff0c;百度了好久&#xff0c;知道怎么用了&#xff0c;但是对实现过程和原理还是一知半解。container_of宏 在linux内核代码里面使用次数非常非常多&#xff0c;对于喜欢linux编程的同学来说&#xff0c;了解其…

目录树 删除 数据结构_数据结构:B树和B+树的插入、删除图文详解

B树1.1B树的定义B树也称B-树,它是一颗多路平衡查找树。我们描述一颗B树时需要指定它的阶数&#xff0c;阶数表示了一个结点最多有多少个孩子结点&#xff0c;一般用字母m表示阶数。当m取2时&#xff0c;就是我们常见的二叉搜索树。一颗m阶的B树定义如下&#xff1a;1)每个结点最…

MMdetection框架速成系列 第01部分:学习路线图与步骤+优先学习的两个目标检测模型代码+loss计算流程+遇到问题如何求助+Anaconda3下的安装教程(mmdet+mmdet3d)

mmdetection 学习目录1 mmdetection 学习建议1.1 mmdetection 学习的第一件事1.2 mmdetection学习路线图1.2.1 优先看的两个库1.2.2 阅读代码1.2.3 代码学习步骤1.2.4 建议优先学习的两个目标检测模型代码1.2.5 loss计算流程的攻坚克难1.3 遇到问题如何求助2 Anaconda3下的安装…

机器人循迹小车资料

前言 我记得在大学的时候&#xff0c;参加电子比赛&#xff0c;我们有一个题目是平衡小车项目&#xff0c;那个对基础要求还是比较高的&#xff0c;总结了一些平衡车机器的资料&#xff0c;希望对大家有帮助。 正文 关注公众号&#xff0c;回复【机器人资料】获取

单片机实现环形队列_稀疏数组和队列(二)

队列的介绍队列以一种先入先出(FIFO)的线性表&#xff0c;还有一种先入后出的线性表(FILO)叫做栈。教科书上有明确的定义与描述。类似于现实中排队时的队列(队尾进&#xff0c;队头出)&#xff0c;队列只在线性表两端进行操作&#xff0c;插入元素的一端称为表尾&#xff0c;删…

漫画-Linux中断子系统综述

1、中断引发的面试教训2、什么是中断&#xff1f;中断&#xff1a; &#xff08;英语&#xff1a;Interrupt&#xff09;指当出现需要时&#xff0c;CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。即在程序运行过程中&#xff0c;系统出现了一个必须由CPU立即…

SQL强化(二) 在Oracle 中写代码

一 : 关于查询中的转换 -- 字符串转换 一 : decode 函数 转换 SELECT DECODE ( PROTYPE.PRO_TYPE_DATE, L, 长, m, 短, 默认值 )FROM PROTYPE -- 字符串转换 二 : case 转换 SELECT T1.PRO_TYPE_ID, T1.PRO_TYPE_NAME, CASE T1.PRO_TYPE_DATEWHEN S THEN 短WHEN L THEN 长EL…