Git常用场景使用方法

  1. 本地存在多个commit:

【场景】代码和远程仓库一致,本地修改后,存在多次本地commit,直接push最新的提交,push成功,但本地多次commit记录也会记录到远程仓库中
【举例】第一次提交:添加File1文件,文件内容666666
              第二次提交: 添加File2文件,文件内容888888,修改File1内容

2. 远程仓库代码回退:

先本地版本回退:git reset commitid
    本地回退版本强推远程仓库:git push -f

3. rebase操作:

【场景】代码和远程仓库一致,本地修改后存在多次本地commit,本地多次提交的代码没有冲突,rebase合并本地多次commit
【举例】如1中例子,第二次提交为最新提交,希望只保留第二次提交
【操作】3-1. git rebase -i commitid

3-2. 之后会进入类似vim的编辑器(i插入修改,修改完:wq保存)
        pick:表示需要提交的commit记录|squash:表示合并到前一个commit
        reword:使用本次提交,但修改commit信息

3-3. 之后会进入提交信息编辑页,修改保存,rebase完毕,合并成功

【注意】 命令中commitid是两次提交的前一个commitid
                第一个pick不可修改,可以将后面的squash
                如果页面显示noop,就是你的commitid选的是最新提交的commit,这样是不对的

4. push冲突

【场景】本地commit了,但在push之前,远程代码被别人修改过了,代码冲突的情况处理
【举例】添加一个File3,提交前手动修改远程仓库代码(模拟别人提交修改了远程仓库代码),远程仓库代码被修改后,本地push
【操作】4-1. 添加File3

4-2. 修改远程仓库代码

4-3. 本地push代码,提示冲突,选择Merge,直接push成功

4-4 . Merge后推送到远端有两条commit(因为这次push只修改了File3,并没有修改File1,Merge后相当于先拉取代码再提交,所以直接push成功)

【举例】添加一个File3,并修改File1,提交前手动修改远程仓库代码(模拟别人提交修改了远程仓库代码),远程仓库代码被修改后,本地push需要手动解决冲突。
【操作】4-a. (版本回退后)添加File3,修改File1

4-b. 修改远程仓库代码

4-c. 本地push代码,提示冲突,选择Merge后手动解决冲突
            Accept Yours: 该文件选择你的版本合并到远端
            Accept Theirs: 该文件选择远端的版本,即放弃该文件的修改
            Merge :对比本地和远端的差异,手动解决冲突,一般都Merge

左边是本地的修改,右边是远端的代码,中间是最终推送远端

看情况对比修改

修改确认后可能会出现push被拒绝,再重新提交一次就好了。

【建议】本地先拉取代码,如果冲突手动解决冲突,然后再push

【注意】没有commit就拉取代码,并且Accept Theris,可能会把本地修改过的代码覆盖掉,导致修改的代码丢失,注意备份。
-------------------------------------------------想到别的场景后续再补充------------------------------------------------------------

总结

到此这篇关于Git常用场景使用的文章就介绍到这了,更多相关Git常用场景使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • git分支的创建、切换、合并及删除操作小结

    一.查看现存分支 查看现存分支 : git branch命令; git branch 从结果可以看出, 现在只有一个分支master; 二.创建分支 创建分支 : git branch 分之名称, 就可以创建一个分支, 创建完分支以后可以查看分支, 当前使用的分支会显示成为绿色, 前面带有 "*" , 如果不是当前使用的分支, 显示的是白色, 并且没有 "*" 前缀; git branch branch1 三.切换分支 切换分支 : git checkout 分支名

  • Git常用场景使用之分支操作

        1. 拉取推送分支: ​    git branch 分支名 : 创建分支 ​    git checkout 分支名 : 切换分支 ​    git checkout –b 分支名 : 创建并切换到新分支 ​    本地拉取分支后推送到远程: ​        git push <远程主机名> <本地分支名>:<远程分支名>         [注意]直接git push 会将当前本地分支推送到对应远端同名分支,如果远端没有同名分支则会新建同名分支     ​ 

  • git分支(branch)操作相关命令及分支命令的使用

    分支(branch)操作相关命令 查看本地分支:$ git branch 查看远程分支:$ git branch -r 创建本地分支:$ git branch [name] ----注意新分支创建后不会自动切换为当前分支 切换分支:$ git checkout [name] 创建新分支并立即切换到新分支:$ git checkout -b [name] 删除分支:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的.如果想强

  • Git常用场景使用方法

      1. 本地存在多个commit: [场景]代码和远程仓库一致,本地修改后,存在多次本地commit,直接push最新的提交,push成功,但本地多次commit记录也会记录到远程仓库中 [举例]第一次提交:添加File1文件,文件内容666666               第二次提交: 添加File2文件,文件内容888888,修改File1内容 2. 远程仓库代码回退: 先本地版本回退:git reset commitid     本地回退版本强推远程仓库:git push -f 3.

  • Python Decorator装饰器的创建方法及常用场景分析

    目录 前言 一.创建方式 二.常用场景 前言 1.装饰器本质是一个语法糖,是对被装饰方法或类进行的功能扩充,是一种面向切面的实现方法2.装饰器可以分成方法装饰器和类装饰器,他们的区别是一个是用函数实现的装饰器,一个是用类实现的装饰器,他们也都能在方法和类上进行装饰3.类装饰器看起来结构更加清晰,因此下面的代码实现的装饰器全是类装饰器 一.创建方式 1.创建“装饰方法”的类装饰器 from functools import wraps # 装饰器类 class MyDecorator(object

  • Git 常用命令整理

    前言 这里就不介绍 git 了,表一看到命令行就怕怕,常用的命令也就这些,基本满足 99% 以上的项目需求,非常实用. 正文 一.常用 git 命令 1.1 git clone <url> [<directory>] 从远程库 clone 代码到本地,directory 用于指定一个新目录名 1.2 git status 检查本地状态,可以查看当前所在分支.新增或被修改的文件 1.3 git checkout <file> 还原某文件所作的修改,也可以 "gi

  • 详解async/await 异步应用的常用场景

    前言 async/await 语法用看起来像写同步代码的方式来优雅地处理异步操作,但是我们也要明白一点,异步操作本来带有复杂性,像写同步代码的方式并不能降低本质上的复杂性,所以在处理上我们要更加谨慎, 稍有不慎就可能写出不是预期执行的代码,从而影响执行效率.下面将简单地描述一下一些日常常用场景,加深对 async/await 认识 最普遍的异步操作就是请求,我们也可以用 setTimeOut 来简单模拟异步请求. 场景1. 一个请求接着一个请求 相信这个场景是最常遇到,后一个请求依赖前一个请求,

  • 使用SSH快速下载Git项目的实现方法

    Git下载项目的几种方式 Git是常用的代码版本技术,而GitLab则是开源的Git版本管理软件,GitLab是最受欢迎的版本管理开源软件.在Git中常用的下载项目方式有两种,分别是: 通过https用户名和密码下载 通过ssh下载 通过https输入用户名和密码下载这种方式比较简单,但不便之处在于需要多次输入用户名和密码.而通过ssh方式下载则直接在本机与Git服务器建立信任通道,无需每次都输入用户名和密码. 下面我们重点介绍如何通过ssh下载项目. 生成秘钥 通过ssh下载项目,首先需要在本

  • java中Lambda常用场景代码实例

    本文实例为大家分享了java中Lambda常用场景的具体代码,供大家参考,具体内容如下 public class test18 { /** * lambda表达式的常用场景 */ @Test public void test() { List<String> list_one = new ArrayList<>(); list_one.add("NIKE"); list_one.add("Addidas"); /** * 用在匿名内部类里简写

  • 详解git的基本使用方法

    什么是git? git是目前世界上最先进的分布式版本控制系统. git与SVN的最主要区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候用的都是自己的电脑,所以开始工作之前需要从中央服务器那里获取最新的版本,然后开始工作,工作完后,需要把自己所做的工作推送到中央服务器.集中式版本控制系统必须要联网才能工作,如果在局域网中,有足够的宽带,运行速度够快,而在互联网环境下,网速慢通常会导致服务难以进行. git是分布式版本控制系统,没有中央服务器,每个人的电脑是一个完整的版

  • Spring Boot整合mybatis使用注解实现动态Sql、参数传递等常用操作(实现方法)

    前面介绍了Spring Boot 整合mybatis 使用注解的方式实现数据库操作,介绍了如何自动生成注解版的mapper 和pojo类. 接下来介绍使用mybatis 常用注解以及如何传参数等数据库操作中的常用操作. 其实,mybatis 注解方式 和 XML配置方式两者的使用基本上相同,只有在构建 SQL 脚本有所区别,所以这里重点介绍两者之间的差异,以及增删改查,参数传递等注解的常用操作. 详解SpringBoot 快速整合Mybatis(去XML化+注解进阶)已经介绍过了,不清楚的朋友可

  • React Hooks常用场景的使用(小结)

    前言 React 在 v16.8 的版本中推出了 React Hooks 新特性.在我看来,使用 React Hooks 相比于从前的类组件有以下几点好处: 代码可读性更强,原本同一块功能的代码逻辑被拆分在了不同的生命周期函数中,容易使开发者不利于维护和迭代,通过 React Hooks 可以将功能代码聚合,方便阅读维护: 组件树层级变浅,在原本的代码中,我们经常使用 HOC/render props 等方式来复用组件的状态,增强功能等,无疑增加了组件树层数及渲染,而在 React Hooks

随机推荐