我已经完成了一个功能分支feature-x.我想将结果合并回default分支并关闭feature-x,以便在输出中删除它hg branches.
我想出了以下场景,但它有一些问题:
$ hg up default
$ hg merge feature-x
$ hg ci -m merge
$ hg up feature-x
$ hg ci -m 'Closed branch feature-x' --close-branch
Run Code Online (Sandbox Code Playgroud)
所以feature-x分支(更改40- 41)已关闭,但有一个新头,即结束分支变更集44,hg heads每次都会列出:
$ hg log ...
o 44 Closed branch feature-x
|
| @ 43 merge
|/|
| o 42 Changeset C
| |
o | 41 Changeset 2
| |
o …Run Code Online (Sandbox Code Playgroud) 灵感来自Git的初学者:最终的实用指南.
这是一个信息使用水银为汇编初学者的实际使用.
初学者 - 一个已经触及源代码控制而不太了解它的程序员.
实用 - 涵盖大多数用户经常遇到的情况 - 创建存储库,分支,合并,从/向远程存储库提取/推送等.
备注:
- 解释如何完成某些事情而不是如何实现某些事情.
- 每个答案处理一个问题.
- 尽可能简明扼要地回答.
- 编辑/扩展现有答案,而不是在同一主题上创建新答案.
- 请为想要了解更多信息的人提供Mercurial wiki或HG Book的链接.
问题:
尝试hg在控制台上使用任何Mercurial 命令时,我不断收到此错误。我使用 Homebrew 安装了 Python,我正在运行 Mac OS Catalina v. 10.15.1。
任何参考将不胜感激。这是我得到的错误:
hg commit --amend
ERROR:root:code for hash md5 was not found.
Traceback (most recent call last):
File "/usr/local/Cellar/python@2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py", line 147, in <module>
globals()[__func_name] = __get_hash(__func_name)
File "/usr/local/Cellar/python@2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py", line 97, in __get_builtin_constructor
raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type md5
ERROR:root:code for hash sha1 was not found.
Traceback (most recent call last):
File "/usr/local/Cellar/python@2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py", line 147, in <module>
globals()[__func_name] = __get_hash(__func_name)
File "/usr/local/Cellar/python@2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py", line 97, …Run Code Online (Sandbox Code Playgroud) 我用它来从repo中删除一个文件:
hg remove <full file path>
Run Code Online (Sandbox Code Playgroud)
您可以使用什么命令hg remove对本地删除的所有文件执行操作?
通过本地删除,我的意思是那些出现!在你做的时候hg status.
对于添加,您可以hg add添加所有新文件(前缀为?).
我下载了TortoiseHg 1.0进行评估.对于我的生活,我无法弄清楚如何建立一个分支.它似乎理解分支(例如在其存储库浏览器中)但我似乎无法找到制作分支的方法.这似乎是一种基本功能,因为DVC经常被吹捧的好处是轻量级分支.
我用Google搜索并且找不到关于这个主题的讨论(至少对于最近的版本)所以我不得不假设我错过了什么,对吧?
更新:所以我在下面标记了Chad Birch的回答来回答"新分支"问题.正如他正确指出的那样,您执行提交,然后单击分支按钮以显示分支维护对话框,您可以在其中创建新分支.我有点希望他们为我们提供了一个上下文菜单选项.一旦你分支,下一个自然的问题是如何合并,这也不明显.事实证明,选项隐藏在存储库资源管理器中.您需要选择另一个分支的头部,右键单击,然后选择"与...合并".
我正在寻找git commit --amendMercurial 的反向部分,即修改我的工作副本链接的提交的方法.该修订程序的要求是:
如果可能,它不应该要求任何扩展.它不能要求非默认扩展,即没有官方Mercurial安装附带的扩展.
如果修改提交是我当前分支的一个负责人,则不应创建新的头.如果提交不是头,则可以创建新头.
该程序应该是安全的,如果由于任何原因修改失败,我希望在修改之前恢复相同的工作副本和存储库状态.换句话说,如果修改本身可能失败,则应该有一个故障安全过程来恢复工作副本和存储库状态.我指的是修改程序性质的"失败"(例如冲突),而不是与文件系统相关的问题(如访问限制,无法锁定文件进行写入,......) )
更新(1):
更新(2):
在Git我可以这样做:
1. Start working on new feature:
$ git co -b newfeature-123 # (a local feature development branch)
do a few commits (M, N, O)
master A---B---C
\
newfeature-123 M---N---O
2. Pull new changes from upstream master:
$ git pull
(master updated with ff-commits)
master A---B---C---D---E---F
\
newfeature-123 M---N---O
3. Rebase off master so that my new feature
can be developed against the latest upstream changes:
(from newfeature-123)
$ git rebase master
master A---B---C---D---E---F
\
newfeature-123 M---N---O
我想知道如何在Mercurial中做同样的事情,我已经在网上搜索了答案,但我能找到的最好的是:git rebase …
我们现在有一个"stiging"分支,其中"staging"似乎是一个更好的语义契合.处理这个问题的好策略是什么?
所以我在Mercurial中犯了一个愚蠢的错误.很多时候,我会在没有做"hg pull"和"hg update"的情况下开始工作.当我尝试推送我的更改时,出现错误.
有没有办法删除我的本地提交,所以我可以避免创建多个头,分支等?我只想删除我的本地提交,将我的更改与提示合并,然后重新提交.听起来很简单吧?我似乎无法找到任何方法轻松删除本地提交,所以我可以干净地合并提示.
我再次尝试删除使用"hg ci"进行的本地提交.我不想修改文件,还原等.
是否可以从我的工作目录中删除所有未跟踪的文件?假设我在工作目录中添加了一堆文件,没有通过'hg add'添加它们,现在想完全摆脱这些新文件?
我在Windows上,虽然我使用的是PowerShell,因此这里也可以使用组合解决方案.