Git 工作中的一些命令操作

2023-05-16

本篇为工作中 git 使用过程中的一些操作记载,不定期更新。

目录

1、git  推本地代码到远程

2、git 放弃修改/commit/撤销远程提交记录

3、git  pull/push/fetch

4、git关联本地与远程分支

5、git branch  查看(删除)分支  

6、git  tag 

7、git  恢复reset删除(本地分支的commit被reset了看不到了怎么恢复)

8、git  config

9、关于git不清洗缓冲区不能切分支的问题。

10、git  merge(合并分支&&commit)

11、git  remote

12、git  submodule

13、本地项目提交github的repository

14、合并某个commit提交记录到当前分支



1、git  推本地代码到远程

git  clone http://github.com/jquery/jquery.git   克隆远程仓库到本地
git  status              //(最常用的命令) 查看当前代码库当前分支的变化,包括 没有add的文件和已提交等待push的commit 
如果本地代码都push到远程了会返回类似 nothing to commit, working tree clean
git  add  .              //将当前目录下的所有修改添加到本地暂存区。
git  commit -m  '这是提交的注释,gitlab会看到描述'   //添加本地暂存区的数据到本地的分支(HEAD)
git  pull origin master  //push前先拉gitlab的代码是个好习惯、(此时可能会有冲突)
如果有冲突(别人更新了远程代码库) 就合并一下,这块建议在idea这种自带git工具或者 source Tree 这种工具中玩,比较方便。 然后可以选择 merge/rebase
merge会将分支树变丑,默认是merge 然后再commit 就可以push了。
git  push origin  master //将本地master的commit提交到远程。

2、git 放弃修改/commit/撤销远程提交记录

git checkout .               //放弃本地 add操作之前的修改。
git checkout -- a/b.txt      //放弃本地指定文件的修改(未add的文件)。   如果是新创建的文件直接手动删除就好了。
git reset HEAD a.txt         //放弃 add 但没commit的修改。(已经add的文件)
git reset --hard HEAD ^      //放弃本次commit、  HEAD ^ 可以根据commitID进行修改。  git log查看、
git reset --hard commitID    //回滚当前分支版本的修改到某一个提交。 这个commitID 是你要回滚到的commitID
git push -f origin master    //回滚完需强制提交。(gitlab不会被污染) origin master 根据分支不同需要切换。


3、git  pull/push/fetch

git push <远程主机名> <本地分支名>:<远程分支名>
将本地的master分支推送到origin主机的master分支。如果master不存在,则会被新建
git push  origin --delete dev      //删dev分支本地与远程的联系,并在远程删除dev分支。  origin 是远程主机名。默认origin
git push origin :foo               //空 source 会删除远程仓库中的foo分支。
git push -u origin master          //将本地的master分支推送到origin主机, -u指定origin为默认主机,后面就可以不加任何参数使用git push
git push origin                    //将当前分支推送到远程。
git push origin master^:newBranch  //检索master^ 推送到远程的newBranch 推送的分支不存在创建新分支

git fetch origin foo               //抓远程的foo分支到本地的  origin/foo分支   所取回的更新,在本地主机上要用”远程主机名/分支名”的形式读取
也可以使用git merge命令或者git rebase命令,在本地分支上合并远程分支. git merge origin/master 就合并fetch的信息到当前分支了。
git fetch origin foo^:bar          //抓远程foo提前一个commit的记录到本地    本地bar分支不存在就本地创建   
如果 git fetch 没有参数,它会下载所有的提交记录到各个远程分支!!!
git fetch origin :bar              //如果fetch空 source 会在本地创建一个分支 bar 

git pull origin foo                //相当于git fetch origin foo; git merge origin/foo
git pull origin master             //会将远程的master抓下来并与当前分支合并,无论我们当前检出的位置是哪。
git pull origin master:foo         //抓取master,将foo指向master的commit  合并当前位置与抓下来的master

4、git关联本地与远程分支

1.本地已有分支,建立关联关系
git branch --set-upstream-to origin/feature/1.0.0base  关联本地当前分支(master)   与远程 feature/1.0.0base 分支

2.本地尚未有分支,新建分支并创建关联关系(常用)
git checkout -b feature/1.0.0base   origin/feature/1.0.0base
新建本地 feature/1.0.0base 分支关联到远程的指定分支


5、git branch  查看(删除)分支  

git branch -a                  //查看远程的所有分支  

git branch -v                  //查看本地分支与远程分支的对应关系。

git branch -vv                 //查看本地与远程分支的对应关系。

git branch -r                  //列出远程分支。

git branch -d                  //删除本地分支。

如果想删除本地dev分支并且删除远程库dev分支,并删除他俩之间的联系。

git branch -d dev              //删本地dev分支
 
git push  origin --delete dev  //删dev分支本地与远程的联系,并在远程删除dev分支。


6、git  tag 

git tag 是以当前的HEAD的 commit记录来打tag的。

git tag                   //查看tag
git tag v1.1.0            //给当前分支打tag
git tag v1.0.0 039bf8b    //给指定commit打tag
git tag --delete v1.0.0   //删除本地tag
git push -d origin v1.0.0 //删除远程tag   ==>  git push --delete origin v1.0.0

git push origin v1.0.0    //推送本地指定tag
git push --tags           //推送所有本地tag

7、git  恢复reset删除(本地分支的commit被reset了看不到了怎么恢复)

git reflog  查看被reset的commit

然后再执行  git reset --hard HEAD@{XXX} 来恢复。

8、git  config

git config --system --list     ----查看系统的配置。

git config --global --list     ----查看全局的配置。
 
git config --local  --list     ----查看当前仓库的配置。

底层配置会覆盖顶层配置

举个栗子。
git config --global user.name "myname"
git config --global user.email  "test@gmail.com"

9、关于git不清洗缓冲区不能切分支的问题。

有如下几种处理方式:
1. git add并且git commit,再git checkout,切换到当前分支
2. git add但不git commit,可以git stash,然后git checkout到新分支,做修改,然后git checkout回到之前的分支之后git stash apply,再git commit,提交到之前的分支
git stash apply stash@{2} 到应用指定的stash存储桶、
3. git add但不git commit,也不git stash,直接git checkout到新分支,做修改,然后再git commit的话,记录就在切换后的分支下面。

其背后的原因:一个本地的git repo只有一个工作区和暂存区,但是有多个分支的提交区,而我们的checkout只是将HEAD指针从一个分支切换到另一个分支。


10、git  merge(合并分支&&commit)


合并其他分支的代码到当前分支。
git  merge  hotfix   合并  hotfix分支的代码到  当前的分支。 (合并的是分支)
当我们只需要合并一个commit时,就只需 git checkpick    1heohdqi2ud     将指定的commitID 合并到当前分支、
还有一种是使用rebase  rebase和merge的区别就是 rebase更好看一些。不会让git tree 乱七八糟的。
git rebase --onto master 76cada^
git rebase side1 side2   将side2 合并到side1下面。rebase  commit  side只是一个标志HEAD。可以写成分支名称。


11、git  remote

git remote update origin --prune   # 更新远程主机origin 整理分支

git remote -v                      # 列出详细信息,包括库和URL地址。

12、git  submodule

git submodule add https://www.gitlabxxx.com/zhangyong.git ext/zhangyong

上面这个命令是在父.git 下执行的。将子模块添加到了 父目录下/ext/zhangyong处。  
在提交父项目到gitlab时不会将ext/zhangyong中的所有文件都提上去,而是在zhangyong这个文件中记录https://www.gitlabxxx.com/zhangyong.git 的commitID

//虽然是工作目录中的一个子目录,但 Git 还是会将它视作一个子模块。当你不在那个目录中时,Git 并不会跟踪它的内容, 而是将它看作该仓库中的一个特殊提交。

git diff --cached --submodule    // 查看子模块的信息。

克隆项目到本地
git clone --recursive http://gitlabxxx.com/zhangyong/MainProject

上述命令相当于先 git  clone  http://gitlabxxx.com/zhangyong/MainProject 在到对应的子模块中顺序执行git submodule init git submodule update 将子模块的代码拉下来、

更新子模块
1.父目录下运行  git submodule foreach git pull
2.子模块中执行  git pull

删除submodule

git rm --cached  sql_source/s1      //变更父.git的index文件
rm -rf sql_source/s1                //删除子模块文件(夹)
vim .gitmodules                     //变更module配置文件  删除对应的子模块信息
vim .git/config                     //变更配置信息

[submodule "sql_source/s1"]
  path = sql_source/s1
  url = git@gitlabxxx.com:zhangyong.git

13、本地项目提交github的repository

git init  

git add .

git commit -m ' msg'

git pull origin master --allow-unrelated-histories   

处理冲突  commit

git push origin master

14、合并某个commit提交记录到当前分支

git checkout master

git cherry-pick  dad12dawdwa     //  后面是commitID

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git 工作中的一些命令操作 的相关文章

  • shell脚本中/bin/bash的作用,引号与括号的使用

    shell脚本通常第一句是 bin bash 在很多情况中 xff0c 如果没有设置好这一行 xff0c 那么该程序很可能无法执行 xff0c 因为系统无法判断该程序需要使用什么shell来执行 通俗点讲 xff0c bin bash 是指
  • 解决STM32虚拟U盘枚举过慢的问题

    1 最近在一个项目中使用STM32虚拟U盘功能 xff0c 外接SPI flash 连接到电脑上面后虚拟出一个U盘出来 xff0c 软件使用RT thread的usb device mass storte大容量存储设备 代码移植很简单 xf
  • vscode 使用makefile 在线调试运行C/C++程序的方法

    1 前言 上一篇文章vscode在线调试C C 43 43 程序的方法中介绍了调试程序的方法 xff0c 由于文章中使用的编译程序规则是调用task json中来实现的 xff0c 不适用于一般的程序 目前大多数程序都是来使用makefil
  • 我的2013年终总结

    2013年6月毕业 xff0c 2012年九月开始实习 xff0c 一直在做和android相关的开发 工作有的涉及硬件 xff0c 有的是专门为公司定制的app 2013年的遗憾就是 xff0c 这一年里自己没有一款上线的app 听相关的
  • 用Android手机spydroid-ipcamera搭载局域网监控环境

    相比有很多人都想用手机实现视频监控吧 xff0c 今天这个教程 xff0c 将会教大家用spydroid ipcamera搭建局域网监控环境 准备工作 xff1a 1 准备一部带有摄像头的 xff0c API level在9以上的手机 xf
  • 3D数学--学习笔记(三):3D中绕任意轴的旋转

    本文转自 xff1a http blog csdn net zjc game coder article details 24269757 不要小看我们在Unity或者3DMAX中的一个简单的旋转物体操作 题记 这里需要用到的知识 xff1
  • Android拼图游戏开发全纪录0

    本文转自 xff1a http blog csdn net eclipsexys article details 18881849 最近刚完成一个Android的小项目 拼图游戏 项目并不复杂 xff0c 但也是一个完整的项目 xff0c
  • Android拼图游戏开发全纪录1

    本文转自 xff1a http blog csdn net eclipsexys article details 18887567 今天我们继续来讲解Android拼图游戏全纪录的第二篇 xff0c 今天要完成的任务比较简单 xff1a 界
  • Android 4.2 SafeVolume机制

    最近一个项目过认证 xff0c 在声压测试时failed 整改方案为 xff1a 在用户将耳机音量提高至安全音量以上时 xff0c 阻止此操作并弹出警告框 xff0c 待用户确认后才提升音量 一开始并不知道android4 2中默认自带了这
  • 命令行查看android手机wi-fi密码

    两招帮你查看wifi密码 xff08 抱歉 xff1a 由于无法传第三张图片 xff0c 第三个图片内容请参照参考网址获得 xff09 第一 xff0c 手机必须root 第二 xff0c 用es文件浏览器或RE管理器进入date misc
  • android网络时间同步总结

    本文转自 xff1a http www cnblogs com hoji real archive 2011 11 14 2247984 html 最近看了下网络时间同步 xff0c 总结一下 整体描述 xff1a android网络时间同
  • win7删除ubuntu系统

    win7 43 ubuntu双系统 xff0c ubuntu开机的时候 xff0c 电脑会响 xff0c ubuntu系统进不去 进入win7系统后 xff0c F盘是通过磁盘管理压缩剩余空间安装ubuntu系统的 xff0c QQ安装在F
  • 手机电池和taskId的寻找

    刷机的时候启动手机时间比较久 xff0c 拔掉电池给手机断电 xff0c 启动的比较快一点 一直这样干 xff0c 一段时间以后 xff0c 手机充电的时候 xff0c 会显示bad battery 提示电池坏掉 电池坏掉后 xff0c 刷
  • 如何使用Proteus进行电路设计仿真?

    Proteus是一款功能非常强大的软件 xff0c 是英国著名的EDA工具 仿真软件 xff0c 从原理图布图 代码调试到单片机与外围电路协同仿真 xff0c 一键切换到PCB设计 xff0c 真正实现了从概念到产品的完整设计 支持和Kei
  • OKHttpUtils使用介绍

    一 xff0c 概述 在上一篇blog的末尾讲到了OKHttp使用时的缺点 xff0c 和对OKHttp封装的必要性 在github上有很多对OKHttp封装的优秀框架 xff0c 其首推的就是hongyang大神的OKHttpUtils
  • Ubuntu18.04LTS系统盘制作

    记录一下制作系统盘的过程 xff0c 参考资料如下网址 xff0c 谢谢 win10下安装Ubuntu16 04双系统 xff0c 用软碟通制作系统盘 gt 点击此处网址 xff1b 安装win7 Ubuntu16 04双系统 xff0c
  • vmware12-15中ubuntu15.10-18.10的vmwaretools失效,不能拖动复制粘贴以及自动适应窗口分辨率

    新安装或异常关机或重新划分分区导致的vmware tools失效 xff0c 不能拖动复制粘贴文件文本以及自动适应窗口分辨率 xff0c 无论怎样重装vmware tools或open vm tools均无效 最后发现有效的方法如下 xff
  • 【环境搭建】Docker镜像相关操作(切换镜像源、查询、获取、查看、创建、上传、保存、删除等)

    目录 1 镜像源查看及设置2 镜像相关操作2 1 获取镜像列表2 2 镜像下载2 3 查看本地的镜像2 4 从镜像创建容器2 5 将容器抽象为镜像 commit2 6 将容器抽象为镜像 Dockerfile2 7 将镜像保存为压缩包2 8
  • 【废了-准备删除02】信息收集——基于WAMP的drupal7.x管理系统

    目录 1 概述2 域名 子域名 IP信息收集3 端口扫描3 1 扫描过程3 2 小结 4 网站目录扫描4 1 目的4 2 dirbuster 扫描4 3 御剑后台扫描4 4 小结 5 指纹识别5 1 目的5 2 指纹识别5 3 指纹利用5
  • Spring boot App启动报错 missing ServletWebServerFactory bean

    将一个普通Java App应用改写为Java Web App xff0c 添加了spring boot starter parent之后 xff0c Run as Spring App一致报如下错 org springframework c

随机推荐

  • 开源项目|RT-Thread 软件包应用作品:水墨屏桌面台历

    简介 平时经常会有一些事情忘记 xff0c 比如今天几号 xff0c 星期几 xff0c 哪天有什么事情要做 有时候写在本子上 xff0c 有时候记在微信里 xff0c 但有时候连记在哪里都忘记了 为了应对这个情况 xff0c 我制作了一款
  • 【嵌入式AI入门日记】将 AI 模型移植到 RT-Thread 上(1)

    本期我们分享主题是如何将 AI 模型部署到嵌入式系统中 xff0c 下一期将介绍如何在 RT Thread 操作系统上运行 Mnist Demo xff08 手写数字识别 xff09 嵌入式关联 AI AI落地一直是一个很红火的前景和朝阳行
  • uc/os-ii任务调度的锁定与解锁

    调度器上锁函数OSSchedlock 的功能是用于禁止任务调度 xff0c 使任务保持对CPU的控制权 调度器开锁函数OSSchedUnlock 的功能是解除对任务调度的禁止 调度器上锁和开锁的实现原理是 xff1a 对全局变量锁定嵌套计数
  • uc/os-ii信号量集

    在实际应用中 xff0c 任务常常需要与多个事件同步 xff0c 即要根据多个信号量组合作用的结果来决定任务的运行方式 C OS II为了实现多个信号量组合的功能定义了一种特殊的数据结构 信号量集 信号量集所能管理的信号量都是一些二值信号
  • 【OK6410裸机程序】点亮LED

    globl start start 硬件相关的设置 Peri port setup ldr r0 61 0x70000000 orr r0 r0 0x13 mcr p15 0 r0 c15 c2 4 64 256M 0x70000000 0
  • 通过串口实现printf和scanf函数

    转自 草根老师博客 xff08 程姚根 xff09 在做裸板开发时 xff0c 常常需要通过输出或者通过串口输入一些信息 在有操作系统机器上 xff0c 我们很少关心输入和输出的问题 因为有很多现成的库函数供我们调用 在做裸板开发时 xff
  • DDR协议解析

    DRAM内部分割成多个L Bank xff0c 每个L Bank形状相同 xff0c 彼此独立 xff0c 可以独立工作 早期的DRAM芯片内部分为2个L Bank xff0c 后来是4个 xff0c DDR3内存芯片为8个 在进行寻址时需
  • apt-get安装指定版本&查询版本

    一 通过apt get安装指定版本 apt get install lt lt package name gt gt 61 lt lt version gt gt 二 查询指定软件有多少个版本 说明 xff1a 在Linux用这个查询并不能
  • 使用apt-get install时有时候一堆依赖要安装,一个一个安装特别烦人,可以直接用suggest全部安装,具体命令如下

    使用apt get install时有时候一堆依赖要安装 xff0c 一个一个安装特别烦人 xff0c 可以直接用suggest全部安装 xff0c 具体命令如下 apt get install install suggests packa
  • linux-Centos 7下tftp-server服务的安装与配置

    转自 http www cnblogs com 5201351 p 4934625 html TFTP xff08 Trivial File Transfer Protocol 简单文件传输协议 xff09 是TCP IP协议族中的一个用来
  • Linux启动打印信息

    U Boot 1 1 6 Oct 5 2016 16 45 02 for SMDK6410 u boot 1 1 6 Updated for OK6410 TE6410 Board Version 2012 09 23 OEM Forlin
  • 对比S3C6410外部中断STM32外部中断

    转自 xff1a http comm chinaaet com adi blogdetail aspx id 61 40071 amp currentpage 61 2 a S3C6410外部中断 中断在嵌入式里面是很常见的一个功能了 通过
  • shell脚本记录

    1 find name o 找出当前目录下所有的 o文件 使用在makefile中如下 clean rm f liblog so 96 find name o 96
  • makefile中的patsubst

    1 wildcard 扩展通配符 2 notdir xff1a 去除路径 3 patsubst xff1a 替换通配符 例子 xff1a 建立一个测试目录 xff0c 在测试目录下建立一个名为sub的子目录 mkdir test cd te
  • ElasticSearch学习&&理解

    注 xff1a 本篇的es基于7 5 1版本 目录 Elasticsearch是什么 xff1f ElasticSearch的环境搭建 ElasticSearch的名词 ElasticSearch查询出的数据格式 ElasticSearch
  • Kibana学习&理解

    注 xff1a 本篇的kibana基于7 5 1版本 Kibana是什么 xff1f kibana是一个数据可视化平台 展示与分析 将es里面的东西通过各种图表展示出来 xff0c 还可以执行es的各种搜索 amp 监控 Kibana环境搭
  • filebeat学习

    注 xff1a 本篇基于filebeat7 5 2 filebeat是什么 xff1f Filebeat 是用于转发和集中日志数据的轻量级传送程序 作为服务器上的代理安装 xff0c Filebeat 监视您指定的日志文件或位置 xff0c
  • Git Flow 用法

    git flow 工作流程 如下图所示 master 分支 master 分支主要方稳定 随时可上线的版本 这个分支只能从别的分支上合并过来 xff0c 一般来讲 xff0c 从develop 上合并 xff0c 或者从hotfix分支上合
  • Qt父窗口与子窗口间的焦点传递问题的完美解决

    使用activateWindow 或者raise 参考文章 xff1a https blog csdn net Hoarce article details 107215868 http www manongjc com detail 19
  • Git 工作中的一些命令操作

    本篇为工作中 git 使用过程中的一些操作记载 xff0c 不定期更新 目录 1 git 推本地代码到远程 2 git 放弃修改 commit 撤销远程提交记录 3 git pull push fetch 4 git关联本地与远程分支 5