只有在成功 stash 之前,Git才会藏起来

标签 git bash

我的工作流程的一部分涉及很多工作:

  • git存储更改
  • git pull
  • 流行 stash 更改
  • 启动mergetool解决冲突

  • 我试图编写一个脚本来一次完成所有这些事情,所以我可以从终端上调用它。
    #!/bin/bash
    
    # First stash our local changes
    git stash
    
    # Then git pull to update our repo
    git pull
    
    # Pop the stash
    git stash pop
    
    # Launch mergetool if necessary
    git mergetool
    

    我遇到的问题是,如果我不小心运行了此代码,并且没有对存储进行任何更改,则git stash pop将应用一些(通常是超旧的)存储。我想要做的是仅在我确实藏有东西之前才运行git stash pop。有没有办法做到这一点?

    最佳答案

    阅读关于您为什么要做什么的解释,我可能会寻求完全不同的方法。首先,我要获取要使用的 Remote :

    git fetch <remote> (e.g. git fetch origin)
    

    然后,我将根据该远程服务器的特定分支进行重新设置:
    git rebase <remote>/<branch> (e.g. git rebase origin/master)
    

    这样可以 merge 您的更改,您仍然可以解决所有冲突。

    如果您不喜欢这种方法,则可能要使用带有--no-commit标志的git pull来代替:
    git pull --no-commit
    

    这样, merge 后将不会执行自动提交。

    关于只有在成功 stash 之前,Git才会藏起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34114700/

    相关文章:

    git - 如何强制 Git 在 Windows 下使用 LF 而不是 CR+LF?

    linux - 在文件中查找 HEX 值并 grep 以下值

    git - `git pull --rebase --autostash` 和 `git pull --ff-only` 之间的区别?

    Git 只抓取一个目录

    git - 将分支从主提交移动到上一个主提交

    bash - 使用\copy 时的 Postgres 变量替换

    bash - Cmder - 'eval' 命令无法识别

    使用 Bash 的 Windows GitLab CI 运行器

    linux - BASH中多列文件的反向排序顺序

    git - Git 中的作者和提交者有什么区别?