免责声明
我对 GIT 有点陌生,所以如果我完全错了,请原谅。我已经使用 Subversion 很长时间了,看到了 GIT 的巨大好处,并且正在积极尝试进行转换。但是,我提出了这个问题,我似乎无法找到一个好的教程或操作方法。这就是上游标签的正确使用。
我做了什么
我的示例是 github.com 托管存储库 redmine。它包含许多用于稳定版本和分支的标签以及当前正在运行的 master。
我已经通过发布在我自己的系统上分叉了它
cd /srv/git-repos
git clone --mirror https://github.com/redmine/redmine.git redmine.git
然后我通过执行以下操作克隆了我的本地分叉
cd /opt
git clone /srv/git-repos/redmine.git
然后我按照 github.com 的说明添加远程上游
cd /opt/redmine
git remote add upstream https://github.com/redmine/redmine.git
很酷,此时我在我的系统上有一个 redmine 的分叉副本,我可以提交并从中推送和拉取。我还添加了真正的 redmine 作为上游,我也可以从中提取。
所以我想做的第一件事就是在我当前安装正在运行的状态下获取这个新的 repo。
似乎很容易:
# Checkout the older tag I'm on
git checkout v1.1.0
# Add a plugin as a submodule
git submodule add git://github.com/delaitre/redmine_time_tracker.git vendor/plugins/redmine_time_tracker
git submodule update --init --recursive
现在我想把它提交到我的叉子上(我很确定我已经出错了)
git commit -m 'Added a new submodule'
我在哪里
惊人的!我现在回到了我从不使用 git 开始的地方,但一切都是版本化且安全的,并且希望更易于管理。
问题
重点是在升级到上游标签的新版本(v1.4.0)之前我想保证安全。
那么,如何在保留对本地分支的提交的同时切换到上游的新标签?
我在上面说过(我想我已经出错了)。从一些额外的阅读中,我认为我应该以某种方式分支远程标签,并根据远程标签提交一个新分支。这是因为我确定我现在处于“分离的 HEAD 状态”,这显然很糟糕。
寻找
- 如何从标签分支。
- 命名此“分支标签”的最佳做法是什么(例如 _v1.2.0、my_v1.2.0、local_v1.2.0)
- 我是不是过于肛门,谁在乎它的名字?
- 下一步:如何合并新的远程标签(即 v1.4.0)
- 我如何提交这个新的合并标签等。
结论
我是否完全偏离了基础,坚果,完全错了,或者没有抓住重点?这是不常见的情况吗?我是否错过了有关如何执行此操作的文档?