首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

别再说你不会Git了,这个教程直接拿走!

• 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。...因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,...要注意一下,可能两个人的代码都是对的 冲突解决后提交 Bug分支 1、储藏更改:将当前更改的代码储藏起来,等以后恢复使用 git stash 2、恢复储藏的代码 git stash pop //恢复的同时把...4、查看各版本号及信息(所有的commit:本地commit + 其他同事的commit) git log • git reset是把HEAD向后移动了一下,而git revert是HEAD继续前进,...执行了git add ,还没执行 git commit ,再执行上面的操作后,会恢复到git add 结束后的状态 注:一旦执行了git commit -m "*",就不能再使用上面的命令回退。

24130

Git 各指令的本质,真是通俗易懂啊!

命令详解 3.1 提交相关 3.2 分支相关 3.3 合并相关 3.4 回退相关 3.5 远程相关 1 基本概念 1.1 Git的优势 Git是一个分布式代码管理工具,在讨论分布式之前避免不了提及一下什么是中央式代码管理仓库...,命令如下: git branch 分支名 切换分支 当切换分支后,默认情况下HEAD会指向当前分支,即HEAD间接指向当前分支指向的节点 git checkout 分支名 同时也可以创建一个分支后立即切换...假设当前分支是master,执行了git cherry-pick C3(哈希值),C4(哈希值)命令后会直接将C3、C4节点抓过来放在后面,对应C3'和C4' 3.4 回退相关 分离HEAD 在默认情况下...--detach 由于哈希值是一串很长很长的乱码,在实际操作中使用哈希值分离HEAD很麻烦,所以Git也提供了HEAD基于某一特殊位置(分支/HEAD)直接指向前一个或前N个节点的命令,也即相对引用...举个例子:如果开发过程发现之前的提交有问题,此时可以将HEAD指向对应的节点,修改完毕后再提交,此时你肯定不希望再生成一个新的节点,而你只需在提交时加上--amend即可,具体命令如下: git commit

73920
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Git 各指令的本质,真的是通俗易懂!

    基本概念 Git 的优势 Git 是一个分布式代码管理工具,在讨论分布式之前避免不了提及一下什么是中央式代码管理仓库: 中央式:所有的代码保存在中央服务器,所以提交必须依赖网络,并且每次提交都会带入到中央仓库...,命令如下: git branch 分支名 切换分支 当切换分支后,默认情况下 HEAD 会指向当前分支,即 HEAD 间接指向当前分支指向的节点 git checkout 分支名 同时也可以创建一个分支后立即切换...,对应 C3'和 C4' 回退相关 分离 HEAD 在默认情况下 HEAD 是指向分支的,但也可以将 HEAD 从分支上取下来直接指向某个节点,此过程就是分离 HEAD,具体命令如下: git checkout...节点哈希值//也可以直接脱离分支指向当前节点git checkout --detach 由于哈希值是一串很长很长的乱码,在实际操作中使用哈希值分离 HEAD 很麻烦,所以 Git 也提供了 HEAD...举个例子:如果开发过程发现之前的提交有问题,此时可以将 HEAD 指向对应的节点,修改完毕后再提交,此时你肯定不希望再生成一个新的节点,而你只需在提交时加上--amend 即可,具体命令如下: git

    31720

    可能每天都会用到的Git命令速查表

    你应该将2替换为你希望从最新提交(HEAD)返回的提交数。 将各种提交压缩为一个(无需重新设置!)...在上一次提交时签出项目的状态 要返回过去查看过去一次给定提交的项目状态,请首先运行git log以查看提交历史记录,然后选择要返回的提交。 然后,复制其哈希并仅运行git checkout 。...这将使你处于"分离头"模式。要返回,只需按名称签出分支即可。 忽略已经添加到Git的文件 我们到过那里-添加或提交我们不应该拥有的东西。...错误分支上的提交 如果你在错误的分支上进行了提交,则应该能够使用我们有关删除提交的知识来解决该问题,如下所示: git branch && git reset HEAD~2 -...将提交标记为良好后,Git会将您带到第一个"不良"提交(即,你标记为不良的最后一个),以便你可以正确地调查错误。完成后,只需通过签出分支(git checkout )返回分支的头并解决问题。

    1.2K30

    Git各指令的本质,真是通俗易懂啊

    命令详解 3.1 提交相关 3.2 分支相关 3.3 合并相关 3.4 回退相关 3.5 远程相关 基本概念 ---- 1.1 Git 的优势 Git是一个分布式代码管理工具,在讨论分布式之前避免不了提及一下什么是中央式代码管理仓库...,命令如下: git branch 分支名 切换分支 当切换分支后,默认情况下HEAD会指向当前分支,即HEAD间接指向当前分支指向的节点 git checkout 分支名 同时也可以创建一个分支后立即切换...,对应C3'和C4' 3.4 回退相关 分离 HEAD 在默认情况下 HEAD 是指向分支的,但也可以将 HEAD 从分支上取下来直接指向某个节点,此过程就是分离HEAD,具体命令如下: git checkout... 节点哈希值 //也可以直接脱离分支指向当前节点 git checkout --detach 由于哈希值是一串很长很长的乱码,在实际操作中使用哈希值分离 HEAD 很麻烦,所以 Git 也提供了 HEAD...举个例子:如果开发过程发现之前的提交有问题,此时可以将 HEAD 指向对应的节点,修改完毕后再提交,此时你肯定不希望再生成一个新的节点,而你只需在提交时加上--amend即可,具体命令如下: git commit

    42930

    Git各指令的本质,真是通俗易懂啊

    基本概念 1 Git的优势 Git是一个分布式代码管理工具,在讨论分布式之前避免不了提及一下什么是中央式代码管理仓库 中央式:所有的代码保存在中央服务器,所以提交必须依赖网络,并且每次提交都会带入到中央仓库...,命令如下: git branch 分支名 切换分支 当切换分支后,默认情况下HEAD会指向当前分支,即HEAD间接指向当前分支指向的节点 git checkout 分支名 同时也可以创建一个分支后立即切换...,对应C3'和C4' 4 回退相关 分离HEAD 在默认情况下HEAD是指向分支的,但也可以将HEAD从分支上取下来直接指向某个节点,此过程就是分离HEAD,具体命令如下: git checkout...节点哈希值 //也可以直接脱离分支指向当前节点 git checkout --detach 由于哈希值是一串很长很长的乱码,在实际操作中使用哈希值分离HEAD很麻烦,所以Git也提供了HEAD基于某一特殊位置...举个例子:如果开发过程发现之前的提交有问题,此时可以将HEAD指向对应的节点,修改完毕后再提交,此时你肯定不希望再生成一个新的节点,而你只需在提交时加上--amend即可,具体命令如下: git commit

    33520

    Git各指令的本质,真是通俗易懂啊

    ,命令如下: git branch 分支名 切换分支 当切换分支后,默认情况下HEAD会指向当前分支,即HEAD间接指向当前分支指向的节点 git checkout 分支名 同时也可以创建一个分支后立即切换...,对应C3'和C4' 4 回退相关 分离HEAD 在默认情况下HEAD是指向分支的,但也可以将HEAD从分支上取下来直接指向某个节点,此过程就是分离HEAD,具体命令如下: git checkout 节点哈希值...//也可以直接脱离分支指向当前节点 git checkout --detach 由于哈希值是一串很长很长的乱码,在实际操作中使用哈希值分离HEAD很麻烦,所以Git也提供了HEAD基于某一特殊位置(分支.../HEAD)直接指向前一个或前N个节点的命令,也即相对引用,如下: //HEAD分离并指向前一个节点 git checkout 分支名/HEAD^ //HEAD分离并指向前N个节点 git checkout...举个例子:如果开发过程发现之前的提交有问题,此时可以将HEAD指向对应的节点,修改完毕后再提交,此时你肯定不希望再生成一个新的节点,而你只需在提交时加上--amend即可,具体命令如下: git commit

    26110

    git常用命令

    (删除远程主机) $ git remote rename 原主机名> (修改远程主机名) 三、git fetch git fetch命令通常用来查看其他人的进程,因为它取回的代码对你本地的开发代码没有影响...默认情况下,git fetch取回所有分支(branch)的更新。...-b newBrach origin/master (git fetch取回远程分支后可以基于此创建一个本地分支) 四、git pull git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并...八、其它命令 提交:git commit -a 对最近一次commit的进行修改:git commit -a –amend commit之后,如果想撤销最近一次提交(即退回到上一次版本)并本地保留代码:...git reset HEAD^ 合并分支:(merge from) $ git checkout master $ git merge mybranch (merge from mybranch) 删除分支

    43020

    Git 进阶高频操作

    然而,你可能仍需要恢复你储藏的内容。在这种情况下, git 提供了git stash branch 命令来帮助你。这条命令基于储藏条目生成时的提交,会将保存的储藏内容转换到一个新分支。...如果你在命令后增加了这个选项, Git 会打开一个 UI 界面并列出将要被复制到目标分支的备选提交记录,它还会显示每个提交记录的哈希值和提交说明,提交说明有助于你理解这个提交进行了哪些更改。...此模式下你可以重新排序、编辑、删除,把多个提交合并成一个,把一个提交分离成多个, 然后把它们放回原来的分支或者不同的分支。...a name # t, reset = reset HEAD to a label 其中 s, squash 将会所在行所在的提交合并到前一个提交中 一般为方便确认 rebase 的返回...如果把衍合当成一种在推送之前清理提交历史的手段,而且仅仅衍合那些尚未公开的提交对象,就没问题。

    71520

    git原理及指令

    然后把当前分支指向新的提交节点。下图中,当前分支是master。 在运行命令之前,master指向ed489,提交后,master指向新的节点f0cec并以ed489作为父节点。 ?...比如,git checkout HEAD~ foo.c会将提交节点HEAD~(即当前提交节点的父节点)中的foo.c复制到工作目录并且加到暂存区域中。...如果既没有指定文件名,也没有指定分支名,而是一个标签、远程分支、SHA-1值或者是像master~3类似的东西,就得到一个匿名分支,称作detached HEAD(被分离的HEAD标识)。...然而,当提交操作涉及到“分离的HEAD”时,其行为会略有不同,详情见在下面。 ?...HEAD标识处于分离状态时的提交操作 当HEAD处于分离状态(不依附于任一分支)时,提交操作可以正常进行,但是不会更新任何已命名的分支。(你可以认为这是在更新一个匿名分支。) ?

    49510

    用21张图,把Git 工作原理彻底说清楚

    在运行命令之前,master指向ed489,提交后,master指向新的节点f0cec并以ed489作为父节点。 即便当前分支是某次提交的祖父节点,git会同样操作。...如果想更改一次提交,使用git commit –amend。Git会使用与当前提交相同的父节点进行一次新提交,旧的提交会被取消。 另一个例子是分离HEAD提交[3],后文讲。...然而,当提交操作涉及到“分离的HEAD”时,其行为会略有不同,详情见在下面。...关注公众号“Java后端技术全栈”,回复面试,获取面试优质资料 HEAD标识处于分离状态时的提交操作 当HEAD处于分离状态(不依附于任一分支)时,提交操作可以正常进行,但是不会更新任何已命名的分支。...树对应着工作目录中的文件夹,树中包含的 树或者blob对象对应着相应的子目录和文件。每次提交都存储下它的上一级树的识别码。

    3.5K20

    图解 Git 各种用法,简单明了,一目了然!

    在运行命令之前,main指向ed489,提交后,main指向新的节点f0cec并以ed489作为父节点。 即便当前分支是某次提交的祖父节点,git会同样操作。...如果想更改一次提交,使用 git commit --amend。git会使用与当前提交相同的父节点进行一次新提交,旧的提交会被取消。 另一个例子是分离HEAD提交,后文讲。...然而,当提交操作涉及到“分离的HEAD”时,其行为会略有不同,详情见在下面。...HEAD标识处于分离状态时的提交操作 当HEAD处于分离状态(不依附于任一分支)时,提交操作可以正常进行,但是不会更新任何已命名的分支。(你可以认为这是在更新一个匿名分支。)...树对应着工作目录中的文件夹,树中包含的 树或者blob对象对应着相应的子目录和文件。每次提交都存储下它的上一级树的识别码。

    38610

    Learning Git by Animations

    看到一个动画版的Git教程(网址),动画效果真心不错,所以学了下,本文是记录其中的几个重点部分。 HEAD HEAD 是当前提交记录的符号名称 – 其实就是你正在其基础进行工作的提交记录。...你提交时,改变了 bugFix 的状态,这一变化通过 HEAD 变得可见。 分离HEAD:分离HEAD实际上就是指HEAD并没有指向某个分支,而是指向了某个具体的提交记录。...解析:git rebase [branch]操作也是用来合并分支,但是合并时并不产生新的提交记录,而是复制那个分支下的所有提交记录加入到当前的分支下面,同样地,该操作不改变当前分支。...2> 解析:git cherry-pick方便我们选择所需的提交记录加入到某个分支下,使用git rebase -i启动rebase的交互模式也可以完成该任务,它甚至可以对提交记录进行排序...本地的远端分支仅伴随远端更新而更新,这个分支上创建的提交不会更新该分支,只会使其分离HEAD。

    44120

    Git知识点整理

    git reset是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。...另外,说一下git revert, git reset –hard和 –soft的区别 git reset –mixed id: 是将git的HEAD变了(也就是提交记录变了),但文件并没有改变,(也就是...git reset –soft id: 实际上,是git reset –mixed id后,又做了一次git add。 git reset –herd id: 是将git的HEAD变了,文件也变了。...merge 是一个合并操作,会将两个分支的修改合并在一起,默认操作的情况下会提交合并中修改的内容 merge 的提交历史忠实地记录了实际发生过什么,关注点在真实的提交历史上面 rebase 并没有进行合并操作...k和--no-keep-index指定保存进度后,是否重置暂存区 --patch 会显示工作区和HEAD的差异,通过编辑差异文件,排除不需要保存的内容。

    52910

    图解Git工作原理

    在运行命令之前,main指向ed489,提交后,main指向新的节点f0cec并以ed489作为父节点。 ? 即便当前分支是某次提交的祖父节点,git会同样操作。...如果想更改一次提交,使用 git commit --amend。git会使用与当前提交相同的父节点进行一次新提交,旧的提交会被取消。 ? 另一个例子是分离HEAD提交,后文讲。...然而,当提交操作涉及到“分离的HEAD”时,其行为会略有不同,详情见在下面。 ?...HEAD标识处于分离状态时的提交操作 当HEAD处于分离状态(不依附于任一分支)时,提交操作可以正常进行,但是不会更新任何已命名的分支。(你可以认为这是在更新一个匿名分支。) ?...树对应着工作目录中的文件夹,树中包含的 树或者blob对象对应着相应的子目录和文件。每次提交都存储下它的上一级树的识别码。

    71030

    Git知识总览(五) Git中的merge、rebase、cherry-pick以及交互式rebase

    二、分离HEAD 1、移动HEAD指针 HEAD指针是指向当前所在的操作分支,比如我们现在是在master分支,那么HEAD就指向master分支,然后master分支指向的是我们的commit号。...分离的 HEAD 就是让其指向了某个具体的提交记录而不是分支名。下方左边的图就是我们要完成的目标,右边是我们分支的初始化状态。 ?...2、在提交树上移动分支 下方要完成的不单单是HEAD指针的移动,而是分支指针的移动,在Git上可以移动你所创建分支的指向,使其指向任意提交过的分支上。...然后使用 git branch -f master C6 命令将master分支指向C6节点。 最后使用 git checkout HEAD^ 命令将分离的HEAD指针进行上移。 ?...下方我们再做个尝试,在一个分支上进行了reset , 然后在reset后的分支上做了一些提交。最后我们将这些提交进行push,然后看一下具体的效果。

    12.3K61

    22 张图,摸清了 Git 的门路

    在运行命令之前,main指向ed489,提交后,main指向新的节点f0cec并以ed489作为父节点。 即便当前分支是某次提交的祖父节点,git会同样操作。...如果想更改一次提交,使用 git commit --amend。git会使用与当前提交相同的父节点进行一次新提交,旧的提交会被取消。 另一个例子是分离HEAD提交,后文讲。...然而,当提交操作涉及到“分离的HEAD”时,其行为会略有不同,详情见在下面。...HEAD标识处于分离状态时的提交操作 当HEAD处于分离状态(不依附于任一分支)时,提交操作可以正常进行,但是不会更新任何已命名的分支。(你可以认为这是在更新一个匿名分支。)...树对应着工作目录中的文件夹,树中包含的 树或者blob对象对应着相应的子目录和文件。每次提交都存储下它的上一级树的识别码。

    37730

    semi-sync原主库加入集群阻塞问题分析

    问题现象 客户在一个一主两从的半同步复制环境下做了手工切换,然后尝试把原主库加入集群中,结果发现新集群中的数据一直无法同步到slave(原主库)中来,查看slave(原主库)同步状态,IO线程和SQL线程都是...这里最奇怪的是Rpl_semi_sync_master_status=ON。 根据半同步复制原理:主库发生数据变更写binlog,然后等待从库接收并返回ACK,最后在存储引擎层提交数据。...这也就是为什么在从库(原主库)一直查不到新主库变更后的数据原因。在默认情况下,半同步复制只有在等待ACK超出 rpl_semi_sync_master_timeout设置的时间才会自动降为异步复制。...这里slave(原主库)被认为是半同步的master,但是没有从库连接他,所以一直在等待从库返回的ACK。等待的时间我们查看rpl_semi_sync_master_timeout变量取值 ?...进入半同步复制,客户端在master每提交一个事务,master MySQL将对应事务写入binlog,然后等待slave返回的ACK,之后在存储引擎层提交,最后返回给客户端写入成功的消息。

    2.8K111

    图解Git

    在运行命令之前,master指向ed489,提交后,master指向新的节点f0cec并以ed489作为父节点。 ? 即便当前分支是某次提交的祖父节点,git会同样操作。...如果想更改一次提交,使用git commit --amend。git会使用与当前提交相同的父节点进行一次新提交,旧的提交会被取消。 ? 另一个例子是分离HEAD提交,后文讲。...用分离HEAD提交(找不到好的译法) HEAD是分离的时候, 提交可以正常进行, 但是没有更新已命名的分支. 。(可以看作是匿名分支。) ? 如果此时切换到别的分支,那么所作的工作会全部丢失。...没有图片体现着下,细节看这里:git-rebase(1) 技术说明 文件内容并没有真正存储在索引(.git/index)或者提交对象中,而是以blob的形式分别存储在数据库中(.git/objects)...树对应着工作目录中的文件夹,树中包含的 树或者blob对象对应着相应的子目录和文件。每次提交都存储下它的上一级树的识别码。

    77180

    git 那些事儿 —— 基于 Learn Git Branching

    master 分支的引用向前移动了一下而已 在提交树上移动 HEAD 是一个对当前检出记录的符号引用 —— 也就是指向你正在其基础上进行工作的提交记录,大多数修改提交树的 git 命令都是从改变 HEAD...分离的 HEAD HEAD 通常情况下是指向分支名的 (如 bugFix),分离的 HEAD 就是让其指向了某个具体的提交记录而不是分支名。...git reset HEAD^ 撤销最近一次提交。在 reset 后,最近一次提交所做的变更还在,但是处于未加入暂存区(Unstage)状态。...git revert HEAD 同样是撤销最近一次提交,在 revert 后多了一个新提交,这个提交刚好是用来撤销 HEAD 这个提交的。...断点续传式git clone(伪) [39]. git怎么查看哪些文件是在版本控制下的呢 [40]. git修改之前commit的提交信息 [41].

    2K20
    领券