Gitrebase
对我来说是获取线性历史记录的好方法,但最近我对它的行为有点困惑。情况是我有本地仓库、GitLab 上的原始仓库和课程的只读上游仓库。
基本上 TA 在上游 repo 中发布文档和代码,我获取它并合并到我的 repo 中,然后完成实验室。这是一个迭代的过程,因为lab2是在我完成lab1并push到origin之后发布的。在这个迭代中发生了令人困惑的事情。
在 lab3 发布后,我将master
(其中包含我的 lab1 和 lab2 的代码)重新定位到upstream/master
,却发现我的提交都聚集在 git 历史的最新位置,例如:
lab1-TA-release -> lab2-TA-release -> lab3-TA-release -> lab1-my-code(有变基时间)-> lab2-my-code(有变基时间)
我认为是提交时间显示了我的工作轨迹,所以我希望看到的是线性历史,例如:
lab1-TA-release -> lab1-my-code -> lab2-TA-release -> lab2-my-code -> lab3-TA-release
有什么办法可以实现我的愿望吗?
- - -更新 - - -
例如,现在我已经完成了 lab2,lab3 已经发布在upstream/master
. lab3-TA-release
不在我当地的主人身上(所以我不能简单地使用rebase
我的master
)。我需要git rebase upstream/master
先。正是在这里,人们my lab2-my-code
聚集lab1-my-code
在一起,所有人都在新的时间里焕然一新。所以真正的提交时间(当我完成工作时)消失了,我很困惑。
有没有办法自动保留提交的原始时间(意味着实时)并使其线性化?