使用git切换分支

大约在NetBSD 9版本结束时,我fork了一个HEAD(trunk)并进行了我的开发提交,偶尔也会从官方库中pull一些更新。但是在10.99.6版本后,出现了大量冲突导致无法继续pull。

我认为可能是在安装gcc12(之前是gcc10)时出现了问题。由于NetBSD最初是通过Git进行镜像和通过CVS管理源代码,所以偶尔会出现异常。

由于没有办法,我决定先回归到netbsd-10基础上。这是因为HEAD已经使用gcc12,可能还存在问题。没有必要冒着风险去获取锅中的栗子。

由于现有文件没有做过修改,几乎都是新文件,所以可以通过复制文件进行重建。但是为了难得的机会,我们打算保留迁移的记录提交。

准备NetBSD-10分支。

git remote add upstream https://github.com/NetBSD/src.git
git fetch upstream
git checkout -b netbsd-10 upstream/netbsd-10

在原分支上创建自己提交的清单。由于旧的在下面,所以进行反向排列。

git log --author="Hiroki Mori" --pretty=format:%H > /tmp/id
tail -r /tmp/id > /tmp/id.rev

由于最后一行没有换行,导致第一行和最后一行连在一起,我手动修复了它。

将其应用于NetBSD-10分支。

cat /tmp/id.rev | git cherry-pick --stdin

由于错误发生在正在pull的commit上,而不是在自己的修正上,所以我们需要回退并再次尝试直到成功。

git cherry-pick --abort
vi /tmp/id.rev

还有更聪明的方法。虽然我在使用Git时尽量避免复杂操作,但我进行了各种研究。

由于构建后obj目录仍然存在并引发错误,因此我果断删除了它。

find . -type d -name obj -prune -exec rm -rf {} \;

因为看起来没有问题,所以我已经上传到GitHub了。

git push origin netbsd-10

因为上升带宽很窄,所以花了相当长时间。

我在当天的交通状况下准备了早晨9点左右的分支,并在12点后进行了推送。

filename(7).png

古老的架构开发,由于相关部分几乎没有改动,所以在开发过程中很少会引发冲突,这是它的优点。

在此找到有关10的发行的页面。

 

将本家的更新合并进来的方法如下所示。

git merge upstream/netbsd-10
bannerAds