git check-pick,git patch 与 git stash 详解

这篇具有很好参考价值的文章主要介绍了git check-pick,git patch 与 git stash 详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大家好,我是 17。

今天和大家聊一聊 git check-pick,git patch 与 git stash 的用法。

git cherry-pick

为什么要用 cherry-pick?

不适合 merge 的场景就可以考虑 cherry-pick。

试想下面这些场景

  1. 只想同步分支的部分提交。两个分支是两上完全独立的 feature,不适合 merge。

  2. 不想过早的同步分支。

下面举几个例子。 dev 为 分支 ,A、B 为 commit。

git cherry-pick dev   将 dev 分支的最近一次提交,转移到当前分支。
git cherry-pick A 可以转移有权访问的任意分支的任意提交。
git cherry-pick A B 一次可以同步多个提交   
    
转移从 A 到 B 的所有提交,不包含 提交 A。提交 A 必须早于提交 B,否则命令将失败,但不会报错。
git cherry-pick A..B 

包含提交 A 
git cherry-pick A^..B   

如果没有冲突会在当前分支形成一个新的提交,提交的内容和 message 完全一样,只是 hash( commit id) 值不一样。

如果有冲突,解决冲突的方法前面在 git checkout 那一节已经说过,解决的方法是一样的,最后用 git cherry-pick --contine,如果想撤销用 git cherry-pic --abort

git patch

为什么要用 patch?

不适合 merge,也不方便 cherry-pick 的场景,可以考虑 patch。

试想下面这些场景

  1. 两个不同的 git 库,其中的某段代码需要同步。
  2. 有些修改会影响所有开发者,但你想做这个修改,来验证一些东西。你需要另一个开发配合,需要把这个修改同步给他。直接 copy 是个办法,但如果修改较多,容易出错,用 patch 比较合适。

虽然 check-pick 也可以同步不同的库,但实操的时候,因为权限或安全问题,不大方便联网同步。

patch 方案

pach 有两种方案,diff 和 format-patch。

diff 仅保留了文件重 A 状态变成 B 状态的差别,而不会保留 commit 记录消息等信息,diff可以多个commit生成单个patch。用 git apply 应用补丁。

format-patch 完整保留了每次提交的完成信息,每个commit都生成一个patch文件。用 git am 应用 补丁。

检查都是用 git apply --check。查看 都是 git applay -stat

diff 生成 patch,apply 应用patch

制作 patch

git diff >fix.patch  
    
git diff 38d8e02 >fix.patch 相当于 
git diff 38d8e02 HEAD >fix.patch

总之,diff 的结果都可以制作 patch。

应用 patch

git apply --check fix.patch
git apply fix.patch

format-patch 制作 patch ,am 应用 patch

git format-patch -2               用最近的两次提交制作 patch 
git format-patch commitId         某次提交以后的所有patch,不包括本次提交
git format-patch --root commitId  从第一次提交到指定提交的所有 patch
git format-patch -o patch -2      输出 patch 文件到 patch 文件夹      

format-patch 制作的 patch 是一个提交一个文件,正序排列。

0001-第一次提交.patch
0002-第二次提交.patch

应用提交

git apply --check *.patch
git am *.patch

git stash

stash 的英文原意是 贮藏。git stash 的功能就是把当前工作区的内容存起来。和提交到暂存区不同,git stash贮藏的内容不受分支切换的影响。

应用场景

  1. 开发了一阵,发现分支错了。这时最好的文案就是 git stash save ,切到新分支后 git stash pop
  2. 开发到一半,有一个紧急的 bug 要 fix,这时提交会造成无效的提交记录。可以先 git stash save,切换分支修复 bug,再切回来 git stash pop

注意:没有被 add 过的文件不会被 stash 起来,如果想把这些文件也一起 stash,可以加上 -u 参数,它是 --include-untracked 的简写, git stash -u。文章来源地址https://www.toymoban.com/news/detail-405579.html

到了这里,关于git check-pick,git patch 与 git stash 详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Git stash系列详解和使用

    有的时候项目中需要不停的切换分支,那我们已经修改的代码还不想提交,用什么方法既不用提交自己的代码成功切换分支呢? 下面就介绍下git stash的系列用法,stash在英文意思是隐藏,git stash 的作用也是隐藏未完成的代码,防止它干扰别人或者新分支的工作。 1、git stash

    2024年02月02日
    浏览(35)
  • Git cherry-pick详解

    此文在阅读前需要有一定的git命令基础,若基础尚未掌握,建议先阅读这篇文章Git命令播报详版 对于多分支的代码库,将代码从一个分支引入到另一个分支是常见需求。 这时分两种情况。一种情况是,你需要另一个分支的所有代码变动,那么就采用合并( git merge )。另一种

    2024年02月12日
    浏览(64)
  • Git cherry-pick命令详解

    个人中心 DownLoad Git中的 cherry-pick 命令用于选择一个提交并将其应用到当前分支上,而不必合并整个分支。这在需要在不影响其他代码的情况下将单个提交应用到其他分支时非常有用。以下是cherry-pick命令的详细介绍。 复制代码 git cherry-pick commit-hash commit-hash :要应用的提交的

    2024年02月08日
    浏览(50)
  • git cherry-pick命令用法详解

            想在某个稳定版本上,添加一个刚开发完成的版本中的功能。就可以使用 Cherry-pick 命令,将这个功能相关的 commit 提取出来,合入稳定版本的分支上。         对于多分支的代码库,将代码从一个分支转移到另一个分支是常见需求。 通常开发时分两种情况:

    2024年01月25日
    浏览(45)
  • (详解踩坑)GIT版本回滚git stash、git reset、git reset --hard、git revert

    目录 背景 一、(git log、git reflog)查看git提交日志及命令历史 1.1 git log(提交日志)  1.2 git reflog(命令历史) 二、git reset(回退到指定的版本,并且保留更改) 2.1 回退到指定版本 2.2 快捷回退上一版本 三、git reset --hard(回退到指定版本,不保留更改) 四、git revert(回退

    2024年02月12日
    浏览(53)
  • error: your local changes would be overwritten by cherry-pick. hint: commit your changes or stash th

    代码合并时出现如下报错 解决方案 参见https://www.cnblogs.com/lywJ/p/10277270.html https://blog.csdn.net/sinat_34937826/article/details/107316884

    2024年02月11日
    浏览(83)
  • git补丁操作:git生成patch和应用patch

    一、生成patch 1、拉取代码仓 2、在clone到本地的代码目录中,例如对README.md文件进行了修改。然后使用 git status 命令查看工作目录和暂存区的状态。   (示例修改是在README.md文件开头添加了如下内容)   3、生成patch   查看README.patch的内容(可以用Notepad++)   二、应用patch

    2024年02月12日
    浏览(62)
  • Git Stash 贮藏命令

    在使用Git过程中,有时当你在项目的其它分支正在进行开发,并且该分支还尚未开发完成进行提交,这个时候需要你切换分支进行工作,这个时候做到一半的工作既不想全部丢掉又不想到处都是问题的就commit,十分冲突。解决问题的方法就是 git stash 命令 贮藏(stash)会处理

    2024年02月07日
    浏览(45)
  • git stash 正确用法

    目录 一、背景 二、使用 2.1 使用之前,先简单了解下 git stash 干了什么:  2.2 git stash 相关命令 2.3 使用流程 1. 执行 `git stash`  2. 查看刚才保存的工作进度 `git stash list` 3. 这时候在看分支已经是干净无修改的(改动都有暂存到 stash) 4. 现在就可以正常切换到目标分支,进行相应

    2024年02月20日
    浏览(61)
  • Git Stash详细讲解

             git stash 这个命令可以将当前的工作状态保存到git栈,在需要的时候再恢复。         当在一个分支的开发工作未完成,却又要切换到另外一个分支进行开发的时候,可以先将自己写好的代码,储存到 git 栈,进行另外一个分支的代码开发。这时候 git stash 命令就

    2024年02月02日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包