如何用bash脚本实用地检查git中的分支是否需要重新设置基础?

吉姆·费尔

我正在为我的团队开发一个bash脚本,以强制对工作分支进行定期基础调整。我目前面临的问题是如何确定分支是否位于master后面和/或是否需要重新建立基础,而不是盲目地尝试重新建立分支。

这是我到目前为止的简化版本:

#Process each repo in the working directory.
for repo_dir in $(ls -1); do
    # if working branch is clean ...

        # BEGIN update of local master
        git checkout master
        git fetch origin
        git merge remotes/origin/master
        # END update of local master

        for sync_branch in $(git branch | cut -c 3-); do
            if [ "$sync_branch" != "master" ]; then
                # BEGIN rebase working branch
                git checkout $sync_branch
                git rebase master
                # Do NOT push working branch to remote.
                # END rebase working branch
            fi
        done
    fi
done

任何想法将不胜感激。谢谢!

为了确定是否需要重新建立分支基础,您需要找出最新的提交是什么以及两个分支共享的最后一次提交是什么。

要在分支上找到最新的提交:

git show-ref --heads -s <branch name>

然后找到您的分支机构共有的最后一个提交:

git merge-base <branch 1> <branch 2>

现在,您需要做的就是找出这两个提交是否为同一提交。如果是这样,则无需重新设置基准。如果不是,则需要重新设置基准。

例子:

hash1=$(git show-ref --heads -s master)
hash2=$(git merge-base master foo/bar)
[ "${hash1}" = "${hash2}" ] && echo "OK" || echo "Rebase is required"

尽管如注释中所述,但是如果您尝试重新建立已经是最新的分支。Git将妥善处理此情况并退出。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从git kraken重新设置分支

来自分类Dev

自动为Git子分支重新设置基础

来自分类Dev

压缩原始分支中的提交后如何重新设置基础?

来自分类Dev

如何为master重新设置基础并将[master]更改集成到我的分支中?

来自分类Dev

重新设置分支基础而不签出

来自分类Dev

交互式重新设置后如何在git中重新附加分支

来自分类Dev

当git合并了一个远程分支时,它会为该分支重新设置基础

来自分类Dev

在git中重新设置基准后不要签出分支

来自分类Dev

如何在git中重新设置基础,强制所有冲突发生

来自分类Dev

用上游分支对本地分支重新设置基础

来自分类Dev

在git中,如何将分支重新设置为master

来自分类Dev

如何在Git中重新设置同一分支的提交?

来自分类常见问题

Git分支在重新设置后分叉

来自分类Dev

合并后如何重新设置基础?

来自分类Dev

在重新设置其中一个基础后,如何使两个具有共同历史的git分支彼此一致?

来自分类Dev

修剪旧的Git提交而无需重新设置基础

来自分类Dev

在 bash 脚本中,如何检查是否设置了“-e”?

来自分类Dev

Git-父级重新设置后如何修复子分支

来自分类Dev

在重新设置基准之前,是否应将master合并到共享的稳定集成分支中?

来自分类Dev

git:在重新设置基准后删除死分支?

来自分类Dev

重新设置后的Git分支在远程后面

来自分类Dev

git合并或为陈旧分支重新设置?

来自分类Dev

如何重新设置一系列分支?

来自分类Dev

如何重新设置一系列分支?

来自分类Dev

如何用标签实用地删除按钮

来自分类Dev

Powershell正在重新设置脚本中的变量

来自分类Dev

是否可以检查bash脚本中是否设置了-e?

来自分类Dev

如何在Git中重新设置和合并“有状态”?

来自分类Dev

如何将分支的一部分重新设置为master分支?

Related 相关文章

  1. 1

    如何从git kraken重新设置分支

  2. 2

    自动为Git子分支重新设置基础

  3. 3

    压缩原始分支中的提交后如何重新设置基础?

  4. 4

    如何为master重新设置基础并将[master]更改集成到我的分支中?

  5. 5

    重新设置分支基础而不签出

  6. 6

    交互式重新设置后如何在git中重新附加分支

  7. 7

    当git合并了一个远程分支时,它会为该分支重新设置基础

  8. 8

    在git中重新设置基准后不要签出分支

  9. 9

    如何在git中重新设置基础,强制所有冲突发生

  10. 10

    用上游分支对本地分支重新设置基础

  11. 11

    在git中,如何将分支重新设置为master

  12. 12

    如何在Git中重新设置同一分支的提交?

  13. 13

    Git分支在重新设置后分叉

  14. 14

    合并后如何重新设置基础?

  15. 15

    在重新设置其中一个基础后,如何使两个具有共同历史的git分支彼此一致?

  16. 16

    修剪旧的Git提交而无需重新设置基础

  17. 17

    在 bash 脚本中,如何检查是否设置了“-e”?

  18. 18

    Git-父级重新设置后如何修复子分支

  19. 19

    在重新设置基准之前,是否应将master合并到共享的稳定集成分支中?

  20. 20

    git:在重新设置基准后删除死分支?

  21. 21

    重新设置后的Git分支在远程后面

  22. 22

    git合并或为陈旧分支重新设置?

  23. 23

    如何重新设置一系列分支?

  24. 24

    如何重新设置一系列分支?

  25. 25

    如何用标签实用地删除按钮

  26. 26

    Powershell正在重新设置脚本中的变量

  27. 27

    是否可以检查bash脚本中是否设置了-e?

  28. 28

    如何在Git中重新设置和合并“有状态”?

  29. 29

    如何将分支的一部分重新设置为master分支?

热门标签

归档