【问题标题】:git commands as hg commandsgit 命令作为 hg 命令
【发布时间】:2015-10-20 08:06:07
【问题描述】:

我曾使用 Mercurial,但现在使用 Git。我在理解 Git 方面有些困难,您能帮帮我吗,Mercurial 等 Git 命令的替代品有哪些:

hg up -C 
hg revert --all 
hg purge

如果我与 Mercurial 命令“hg up”有一些冲突,我可以运行类似hg revert --all & hg purgehg up -C 的命令。

git pull 和文件冲突之后,如果我不想继续,而只想恢复到原始状态,或者在没有冲突的情况下更新文件(如hg up -C),我该怎么办?

【问题讨论】:

    标签: git merge mercurial


    【解决方案1】:

    【讨论】:

    • 感谢您的回答。我试着听从你的建议。在命令git reset --hard 之后,所有更改都被丢弃,然后我运行命令git checkout -f 并收到下一条消息screencloud.net/v/x2p5 然后我检查文件更改并且未应用新更改。之后我运行命令git status 并收到消息screencloud.net/v/8Dl9。然后我再次运行命令git pull,我再次遇到冲突=((((这很混乱,因为如果我有干净的工作目录,我可以运行命令hg pull而不会发生冲突,但是如果我运行git pull,我会遇到冲突
    • 有关您的git checkout -f 错误消息,请参阅stackoverflow.com/a/2452610/6309
    【解决方案2】:

    在“git pull”和文件冲突之后,如果我不想继续,而只是恢复到原始状态,我该怎么办

    当您执行git pull 时,您实际上是在执行git fetch 后跟git merge git rebase。假设您的拉取策略使用合并,那么您的问题是如何撤消在git pull 期间完成的合并。撤消合并的一种干净方法是将本地分支重置为最新提交:

    git reset --hard <SHA-1 hash of latest commit>
    

    我能做什么...更新文件而不发生冲突(如 hg up -C)

    当您执行git pull 时,您将更改所有来自远程分支的文件。通常你不想只更新没有冲突的文件。 Git 是一个基于 workspace 的版本控制系统,而 SVN 是一个基于 文件 的 VCS。

    如果你真的想尝试做一个git pull然后只更新不冲突的文件,那么你可以使用以下命令来识别哪些文件有冲突:

    git diff --name-only --diff-filter=U
    

    然后对于列表中的每个文件,您可以对其进行git reset

    git checkout -- filename_in_conflict
    

    【讨论】:

    • 您是否正在寻找一种映射 Mercurial 命令的方法,或有关如何在 Git 中实际执行的信息?
    • 我不懂 Git =( 如果我运行 hg pull &amp; hg up -C 我总是在工作目录中得到实际代码而不会发生冲突,但 git fetch &amp; git checkout -f 不是 hg pull &amp; hg up -C。如果我运行命令 @987654337 @我收到消息screencloud.net/v/scPD
    • 我对您的建议是发布一个新问题,您可以在其中指定确切您在 Git 中尝试执行的操作。您将得到一个可以帮助您入门的答案。
    • 非常感谢您的帮助。这是我的新问题stackoverflow.com/questions/33255900/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 2012-09-29
    • 1970-01-01
    • 2021-09-22
    • 2017-07-19
    • 1970-01-01
    相关资源
    最近更新 更多