我是 git 和 mercurial 的新手,并且正在尝试使用这些工具。我在工作中使用 perforce 作为源代码控制,因此最终将其功能与它进行比较。
现在,我有一个如下所示的存储库:
Repo_1:
DummyProject:
Master/Default - branch
Release - branch
AnotherBranch - branch
对于 Git/Mercurial,我使用 Atlassian 的 SourceTree GUI 客户端进行操作。我已经在本地克隆了这个完整的存储库,并且可以在 GUI 客户端中看到分支。要在分支之间切换,我可以使用此工具结帐。
假设我在Master/Default分支中工作并对某些文件进行了一些更改。虽然我仍在处理这个分支,但出现了一些关键问题,我需要在Release分支中进行更改。此时,如果我从Master/Default分支切换到发布分支,SourceTree 基本上会使用发布分支的内容更新工作目录。它警告我有一些未保存的更改,我应该在切换到发布分支之前提交或搁置/存储这些更改。
实际上,我通常会有 3 个带有分支名称的文件夹,我可以从发布分支获取最新的并在发布分支上进行更改,而不用担心主/默认分支被覆盖,因为两个分支都在不同的目录中。完成后,我可以在发布分支中提交更改并在主/默认分支中恢复工作。
我可以在 git/mercurial 中做些什么吗?
我能想到的最接近的选择是再次克隆存储库(可能从本地而不是远程克隆以节省网络开销),然后在发布分支上工作并将更改推送回本地和远程存储库。
我认为这可能会浪费本地空间,因为存储库必须为此再次克隆所有历史记录和元数据。