文章目录

  • 1. 撤销已经add,但是没有commit的问题
  • 2. 撤销已经commit,但是没有push到远端的文件(仅撤销commit 保留add操作)
  • 3. 撤销已经push到远端的文件
  • 4. git commit --amend 修改git提交目录
  • 查看状态
  • 5. 修改分支名称 `git branch (-m | -M) `
  • 6. merge 合并分支冲突解决
  • 7. git checkout 切换分支报错 - git reset --hard FETCH_HEAD
  • 8. git 去除分支后一直带有 rebasing

1. 撤销已经add,但是没有commit的问题

git reset HEAD

2. 撤销已经commit,但是没有push到远端的文件(仅撤销commit 保留add操作)

撤销上一次的提交

git reset --soft HEAD^

按照输入的数字撤销输入数字条commit记录

git reset HEAD~数字

3. 撤销已经push到远端的文件

// 切换到指定分支
git checkout 分支名
// 撤回到需要的版本
git reset --soft 需要回退到的版本号
//提交撤销动作到服务器,强制提交当前版本号
git push origin 分支名 --force

可以通过 git log 命令查看提交的版本号(选择需要回退的版本号)

注意:

git reset --soft/hard 需要回退到的版本号
soft 和 hard的区别

  • soft:保留本地当前工作区,用于重新提交(回退到指定版本号,回退的版本号代码会保留到本地工作区,本地工作区代码还是保留最后提交的状态)
  • hard不保留本地当前工作区,回退到指定版本号之后,同时本地工作区代码也回退,一定要谨慎使用

git push origin 分支名 --force
撤销后强制提交到当前分支的版本号状态,这里使用要谨慎


4. git commit --amend 修改git提交目录

使用命令:git commit --amend既可以对上次提交的内容进行修改,也可以修改 commit 的描述信息 message

可以直接使用命令修改最近一次 commit 的message新消息

git commit --amend -m "update message"

使用命令进入 vim 编辑器

git commit --amend


按 字母 E 可以进入编辑状态,如果进入的不是编辑状态,可以输入字母 i 或者字母 c,进行编辑修改

输入字母 i 或者字母 c,进行编辑修改

然后编辑修改信息

修改成功之后,按 ESC 退出编辑状态,然后连续按 两下 大写字母 Z ,就可以保存下来了。

保存成功之后,输入 git log 查看修改情况

或者使用Idea自带的 Amend Comment


查看状态

查看没有git add的文件

git checkout

查看当前提交状态

git status

5. 修改分支名称 git branch (-m | -M) <oldbranch> <newbranch>

步骤:

  1. 将旧分支名称 oldBranch 更新为新的名称 newBranch
    -m-M 的区别:使用-M则表示强制重命名
    -m:移动/重命名一个分支和相应的reflog。
    -M:移动/重命名一个分支,即使新的分支名称已经存在。
git branch -m oldbranch newbranch
  1. 删除旧远程分支 oldBranch
    使用 -D 相当于强制删除,类似 --delete --force
git push --d origin oldbranch
  1. 将修改后的本地新分支推送到远程仓库上
git push origin newbranch

git 分支常用命令 描述
git branch 查看本地所有分支(当前本地所在分支前面带*且为绿色,其它本地分支为白色)
git branch -r 查看远程所有分支(远程分支都为红色)
git branch -a 查看本地和远程所有分支
git branch -d <branchName> 删除本地分支,branchName 为本地分支名【使用 -D 相当于强制删除,类似 --delete --force
git branch -d -r <branchName> 删除远程分支,branchName 为远程分支名【注意:删除分支之后,要推送到远程服务器上才有效】
git push origin <branchName> 将分支推送到远程服务器上,branchName为分支名称

提供销控管理工具

git 选项 描述
-f --force,强制操作
-r --remote,远程
-a --all,全部
-d --delete,删除
-D --delete --force-d-D 组合,表示强制删除
-m --move,移动或重命名
-M --move --force-m-M 组合,表示强制重命名,即使新的分支名称已经存在

6. merge 合并分支冲突解决

冲突发生,大概率是你和别人修改同一位置导致的(所以在提交代码之前要先同步一下代码),可以借助 git mergetool 命令查看
一般冲突解决思路:将目标分支代码合并到自己的分支上,然后处理冲突,解决冲突后再合并(即在执行 pushb之前先进行 pull

步骤1:切换到主分支(合代码的目标分支)

git checkout master

步骤2:从目标分支拉取最新内容

git pull

步骤3:切换到自己的分支上

git checkout branchName

步骤4:将主分支代码合并到自己的分支上

git merge master

步骤5:出现冲突,就解决掉冲突(两种方式:pull 命令 或者 fetch + rebase

如果使用 pull 命令拉取代码,冲突文件中就回出现类似下面这种情况的东西

<<<<<<< HEAD
private static final List<Integer> DEFAULT_RULE_LIST = new ArrayList<Integer>(){{add(8); add(4); add(4); add(4); add(12); }};
=======
private static final String DEFAULT_INTERVAL_STR = "-";
>>>>>>> 987bf2d1591ad351ab6e52ecdbcb2a2147204161

这就是冲突的内容,<<<<<<< HEAD>>>>>>>987bf2d1591ad351ab6e52ecdbcb2a2147204161 之间的部分就是是发生冲突的部分。
中间的 ======= 是将本地与远程的冲突的部分进行分离(就是分隔符)。
<<<<<<< HEAD 到 >>======= 是本地分支的代码,而 =======>>>>>>>>>987bf2d1591ad351ab6e52ecdbcb2a2147204161 就是远程仓库的代码,其中这一串数字 987bf2d1591ad351ab6e52ecdbcb2a2147204161 是commit提交的版本号。
将冲突解决,然后 push 合并代码就可以了。

,然后 git push 合代码。


7. git checkout 切换分支报错 - git reset --hard FETCH_HEAD

git checkout 切换分支报错:

Can’t checkout because of unmerged files
You have to resolve all merge conflicts before checkout.

After resolving conflicts you also probably would want to commit your files to the current branch.

git pull 报错:
Pulling is not possible because you have unmerged files.

hint: Fix them up in the work tree, and then use 'git add/rm <file>

hint: as appropriate to mark resolution and make a commit.

Exiting because of an unresolved conflict.

原因:

切换分支处理冲突过程中的导致本地 local 文件冲突,

解决办法:

  1. 需要将冲突的文件 resolvegit add -u, git commit 之后才能继续操作

  2. 放弃本地文件的修改,git reset --hard FETCH_HEAD,回到上次成功pull之后的【谨慎使用,如果需要使用,请先保存本地 local 修改的部分内容】

    FETCH_HEAD 表示上一次成功 git pull 之后形成的 commit 记录点。

    git merge 会形成 MERGE-HEAD(FETCH-HEAD)

    git push 会形成 HEAD 的引用,HEAD代表本地最近成功push后形成的引用。

8. git 去除分支后一直带有 rebasing

原因:合并代码时出现错误 ,分支后面一直带着 rebasing

解决方法:

  1. ,然后解决冲突提交

    git status 找到冲突文件,解决冲突后提交,最后 git rebase --continue`

  2. git rebase --abortgit rebase --skip 放弃当前rebase操作文件

  3. rm 命令删除 rm .git/rebase-apply

【备注】merge 同理

Git取消add 、 commit、push的命令相关推荐

  1. git常用命令(一)本地库初始化git init / add / commit / status / rm --cached / restore / reset

    1.git本地库初始化 命令:git init 效果:Initialized empty Git repository .git文件存放和本地库相关的子目录和文件 2.设置签名 2.1. 签名的形式 ...

  2. git学习 add - commit - init

    资料来自 B站尚硅谷BV1pW411A7a5,侵权删 希望有一点点linux基础. 代码托管中心: 码云 github 团队协作 跨团队协作 本地库初始化 git init 效果 设置签名 1.项目级 ...

  3. Git关于pull,commit,push的总结

    以前总是由于自己的自身的原因,对于每一次的git的操作,我都是通过eclipse或者是idea来进行的,但是 我每一次都不是很清楚的关于这些方面的操作,现在我们来进行关于git bash的操作,正是由 ...

  4. git如何撤销未push的commit

    撤销commit一般用git reset ,语法如下: git reset [ --mixed | --soft | --hard] [<commit ID>] 1.使用参数--mixed ...

  5. git 取消commit

    git如何撤销上一次commit操作 1.第一种情况:还没有push,只是在本地commit git reset --soft|--mixed|--hard <commit_id> //g ...

  6. git远程仓库分支的各命令的具体解析(git remote add)

    0 可参考文章 本文重点参考的Git官方中关于git远程仓库的使用教程: 2.5 Git 基础 - 远程仓库的使用 3.5 Git 分支 - 远程分支 1 问题背景 看完上面的教程后,我们再一步一步抠 ...

  7. 问题解决:使用GitHub时git push需要输入账号和密码Username for... (Use git clone SSH) git remote add 或set-url(推荐)

    一.问题描述 每次 gpm (git push origin master) 需要输入密码 二.解决方法 出现这个原因是你 git clone 时用了 https 地址,如果想不输入密码,应该用 ss ...

  8. g-git 相关命令 及其 基本原理探索(二):git 在工作中的常用命令操作 ,超级实用!!!

    上一篇git 基本原理对git的使用以及文件分布已经有了一个整体的了解. 本篇将对工作中常用的一些git 操作命令的操作进行总结归纳,方便今后查阅. 文章目录 1. 分离头指针 2. 通过HEAD 来 ...

  9. git 取消 所有暂存_Git版本管理完全指南—学好Git一文足矣

    开心?一下 image.png 第一部分 命令行 1.分支操作 1. git branch 创建分支2. git checkout -b 创建并切换到新建的分支上3. git checkout 切换分 ...

  10. git 修改commit_结合IDEA与命令行,解决常用git操作与特殊情况的最佳实践

    本文适合总觉得git操作不够顺滑,被各种分支问题搞得焦头烂额的Java业务开发同学. 如果是git的初学者,建议搜索下git其他入门教程,这方面资料很多,非常推荐git init一个新项目,然后本地操 ...

最新文章

  1. 学习Linux的第十一课时
  2. 要素图层范围查询属性arcgis api for js
  3. MaskedTextBox
  4. bgl 词典_深大版成语词典发布!不学不是深大人!深大快讯
  5. 2299 Ultra-QuickSort(归并)
  6. Java基础——虚拟机结构
  7. multiprocess模块使用进程池调用apply_async()提交的函数及回调函数不执行问题
  8. 学python能做什么类型的工作-Python支持哪些数据类型
  9. 路由重发布Route Redistribution
  10. 秋色园QBlog技术原理解析:Module之页面基类设计(五)
  11. 30个有助于探索Go编程语言的在线资源
  12. python3 读文件 编码_Pyhton3下的ISO8859-1编码文件的读取
  13. iPhoneX设计稿适配Android,三分钟弄懂iPhoneX设计尺寸和适配(二)
  14. 【时间与空间】极移矩阵
  15. Android12之OpenSL ES基础数据结构总结(十)
  16. 服务器的虚拟机网速如何分配,管理ESXi主机网络与虚拟机网络
  17. c语言 猜数字小游戏
  18. 函授计算机应用基础答案,计算机应用基础函授本科考试题库
  19. 留住员工的10个方法,老板与管理者必读
  20. Mofile免费网盘容量翻倍了

热门文章

  1. Java实现 蓝桥杯 算法提高 日期计算
  2. 第12周 上机报告 1之练习3 回文日
  3. ANT下载和配置 IDEA
  4. 测序深度的计算,你真的掌握了吗
  5. 领航机器人广告段子_医院机器人物流科技宣传广告语_段子网收录最新段子
  6. 圣诞帽php,微信小程序“圣诞帽”的实现方法
  7. 名词用作动词举例_古语名词使动用法解析
  8. 辞职信上写什么辞职理由比较合适
  9. python安装在什么地方_python的第三方库库安装在哪里了
  10. 日本财险前瞻2012年IT发展 CDP技术助力异地灾备