【发布时间】:2021-03-11 12:44:35
【问题描述】:
对于一个 repo,我使用一个简单的脚本来定期提交对文件的更改,以保留相当详细且不合逻辑的历史记录,我想保留这些历史记录用于我自己的统计目的(即我知道 git rebase ,但无论如何我都想保留这个不合逻辑的历史)。目前我只是致力于一个单独的分支autocommit 并使用
git checkout master
git merge --squash autocommit
git commit
git checkout autocommit
git merge --ff-only master
对于“正确的”提交保持master 分支整洁,同时保持与autocommit-分支的关系。所以我有这样的历史
| * 95e4189 Merge branch 'main' into autocommit
| |\
| |/
|/|
* | 040386a <= created via git merge --squash autocommit
| * 72bc5a5 autocommit
| * 9aaf5a6 autocommit
| * ea758c0 autocommit
| * 7ff1de8 autocommit
但我真正想要的是将git merge autocommit --edit 转换为master 以正确 链接到历史记录。但是,我不想git push 来自autocommit 分支的任何内容(或任何带有所述消息的提交,如果这样更易于管理的话)。但是我想这基本上会破坏推送的回购,因为部分提交历史将无法访问。所以我的问题是:
- 我该怎么做呢? IE。一种
git push --skip autocommit - 我应该怎么做? squash-commit 版本似乎不是最佳的
对于可视化,我目前有:
A1 -> A2 -> A3--=> A3' -> A4 -> ... [autocommit]
/ ↓' /
M1-----------> M2 -----> ... [master]
其中↓' 表示git merge --squash,这意味着A3 不是M2 的父级,但只有M1 是,A3' 只是合并回M2 以更好地跟踪连接。我认为我想要的只是
M1--------------=> M2 ---> .... [master]
\ /
A1 -> A2 -> A3 -> A4 (or maybe A3' first merging M2 back) [autocommit]
但是来自autocommit 分支的A1 等提交都没有被推送。
【问题讨论】:
标签: git git-branch git-push