gpt4 book ai didi

GIT - 如何在所有分支中保持文件通用

转载 作者:太空狗 更新时间:2023-10-29 12:49:40 27 4
gpt4 key购买 nike

假设我在分支“master”中有一个文件“ChangeLog”。我想在此文件中记录有关任何分支中所有更改的信息(比提交消息和其他描述性信息更详细)。

I git checkout -b revA,执行编辑,更新 ChangeLog和 git commit

然后我 git checkout -b master。此 checkout 将用分支“master”中的版本替换 ChangeLog。

我希望 ChangeLog 自动成为最近修改的版本不管我 check out 的是哪个分支。我不想将 ChangeLog 从其他分支手动 merge (或者很可能是忘记 merge )到我当前的分支中。

我还没有找到任何似乎允许这样做的东西。可以这样做吗?

最佳答案

您可以使用 checkout 后 Hook :

#!/bin/sh

newref="$2"
isbranch="$3"

# ignore file checkouts
if test $isbranch -eq 0; then
exit 0
fi

path=ChangeLog

git for-each-ref --sort=-committerdate \
--format='%(objectname) %(refname:short)' \
refs/heads/\* |
while read sha ref; do
if git rev-parse --verify --quiet "$sha:$path" >/dev/null
then
if test "$newref" != "$sha"; then
echo Checking out $path from $ref
git checkout $sha -- "$path"
fi
break
fi
done

如果合适,您仍然需要在您的分支上添加和提交 ChangeLog

这个钩子(Hook)根据分支头各自的提交日期对分支进行排序,这可能会有问题。假设您创建了一个主题分支,该分支 Root 于 master 历史记录中的一次提交。尽管它的 ChangeLog 快照在日历时间意义上较旧,但上面的钩子(Hook)会将其视为最新的,因为它被最近创建的提交引用,所以 要小心当您对 ChangeLog 进行未暂存更改时,您不会因切换分支而意外丢失工作

关于GIT - 如何在所有分支中保持文件通用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1876142/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com