the*_*mis 9 git version-control
假设我在分支"master"中有一个文件"ChangeLog".我想记录有关此文件中任何分支的所有更改的信息(比提交消息和其他描述性信息更详细).
我git checkout -b revA,执行编辑,更新ChangeLog和git commit.
然后我git checkout -b master.此结帐将使用分支"master"中的版本替换ChangeLog.
我想要的是ChangeLog自动成为最近修改过的版本,无论我检查哪个分支.我不想手动合并(或者,很可能,忘记合并)ChangeLog从其他分支到我当前的分支.
我还没有发现任何似乎允许这样的东西.是否有可能做到这一点?
你可以使用一个post-checkout钩子:
#!/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
Run Code Online (Sandbox Code Playgroud)
ChangeLog如果合适,仍然需要在您的分支上添加和提交.
这个钩子按其头部的相应提交日期对分支进行排序,这可能是有问题的.假设您创建一个以master的历史记录中的提交为根的主题分支.即使它的快照ChangeLog在日历时间的意义上较旧,上面的钩子会将它视为最新的,因为它是由最近创建的提交引用的,所以要小心不要因为切换分支而意外丢失工作当你有未分阶段的更改时ChangeLog.
我知道这个答案正在乞求这个问题,但我认为其他任何事情都会让你自己陷入困境.
如果您在提交消息中添加了足够的描述,那么git log符合要求.特定分支中的所有更改都是由进入它的提交准确描述的,并且它不可能过时或者描述不属于它的更改.
自从我转向git后,我已经放弃了手动维护更改日志.对我来说,它没有价值和重大成本.
没有理由不在提交中提供完整的描述.随着--amend您可以修复了拼写错误,并添加细节,如果你坚持有一个简短的主题线和完整的描述的约定,那么你可以短期和长期的日志格式之间进行选择.
| 归档时间: |
|
| 查看次数: |
2864 次 |
| 最近记录: |