git打patch包及应用patch

git 打patch包和应用patch包-单个文件

打patch包

  • 查找要打patch包的对应记录

    git log
    在这里插入图片描述

  • 打patch包

    git format-patch -1 75ca77f568bdeae3ca6ad4cce0f98ebe98644257
    在这里插入图片描述
    在当前目录下生成个xxxx.patch文件

应用patch包补丁

  • 切换分支

    • 查看分支列表:

      git branch

    • 切换到需要补丁分支:

      git checkout 分支名称
      在这里插入图片描述

  • 补丁已打的patch包

    • 检查patch文件:

    git apply --stat 已打的patch包名

    • 检查能否应用成功:

      git apply --check 已打的patch包名

    • 打补丁:

      git am --signoff < 已打的patch包名
      在这里插入图片描述

### 如何在 Git 中生成含未跟踪文件的补丁 默认情况下,`git diff` 或 `git format-patch` 不会自动含未跟踪(untracked)的文件。为了生成一个含这些文件的补丁,可以按照以下方法操作: #### 方法一:手动添加未跟踪文件并生成补丁 可以通过 `git add` 将未跟踪文件暂存到索引区,然后再使用 `git diff --staged` 来生成补丁。 ```bash # 添加所有未跟踪文件以及已更改的文件到暂存区 git add . # 生成相对于上一次提交的差异补丁 git diff --staged > untracked_patch.diff ``` 这种方法的优点是可以灵活控制哪些文件会被加入补丁[^1]。 #### 方法二:利用 `--no-index` 参数生成跨目录补丁 如果不想实际将未跟踪文件添加到版本库中,也可以通过 `git diff --no-index` 命令比较两个不同的目录结构来生成补丁。 假设当前工作树中的状态是你希望捕获的内容,则可以用如下方式生成补丁: ```bash # 创建一个新的临时空目录作为对比基线 mkdir empty_dir # 使用 git diff --no-index 对比空目录和当前目录 git diff --no-index empty_dir . > untracked_files.patch # 删除临时目录 rm -rf empty_dir ``` 这种方式不会影响现有仓库的状态,并能有效捕捉到所有新增加但尚未被追踪的改动[^4]。 #### 注意事项 当应用此类含新文件引入动作的补丁时,请注意接收端可能也需要相应地处理这些新的路径名或确认其环境适合接受这样的变更。 ### 补充说明关于其他相关命令的作用范围 - 如果仅需撤销某次特定提交所代表的变化而非涉及任何未track过的资源,则应考虑采用如下的reset策略[^3]: ```bash git reset --soft HEAD~1 # 移动分支指针前移一位但仍保留working tree不变以便重新整理后再commit ``` 而针对单个文件级别的局部恢复则推荐checkout选项[^2]: ```bash git checkout HEAD path/to/file_to_restore ``` 最后提醒,在日常开发流程里务必谨慎对待任何形式的数据删除类指令以免误伤重要资料!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值