代码之家  ›  专栏  ›  技术社区  ›  Tim unnamed eng

“git reset-q”是否可以等同于不带“-q”的某些“git reset”命令?

git
  •  -2
  • Tim unnamed eng  · 技术社区  · 6 年前

    主页 git reset

    git reset [-q] [<tree-ish>] [--] <paths>…
    

    此窗体重置所有的索引项 <paths> 到他们所在的州 <tree-ish> . (不影响工作树或电流 这意味着Git重置 <路径& 与…相反 git add <paths> .

    我认为上述命令形式需要 -q . 但确实 [-q] 意味着 -Q 是可选的吗?如果是,它与以下命令有什么区别?

    git reset [<mode>] [<commit>]
    

    此窗体将当前分支头重置为 <commit> 而且可能 更新索引(将其重置为 <提交& gt; ) 工作树取决于 <mode> . 如果 <模式& GT; 被省略, 默认为 --mixed .

    不是第一种形式吗 git reset -q HEAD [--] <paths>… 一样

    git reset mixed HEAD [--] <paths>…
    

    ?

    注意我相信 git reset [<mode>] [<commit>] 可以添加 [--] <paths>... 最后,因为它显示在以下命令的输出中:

    $ git rm feature2file 
    rm 'feature2file'
    $ git status
    On branch feature2
    Your branch is ahead of 'origin/feature2' by 2 commits.
      (use "git push" to publish your local commits)
    
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
        deleted:    feature2file
    

    谢谢。

    1 回复  |  直到 6 年前
        1
  •  1
  •   torek    6 年前

    这个 -q 旗帜 可选,由非空 <paths>... 部分。例如:

    git reset HEAD feature2file
    

    有一个 <path> 论点,即 feature2file 因此,这意味着 -Q 旗帜。

    …它和……有什么区别? git reset [<mode>] [<commit>]

    这个命令 <路径& GT; 参数,调用 git reset .

    有些人(包括我自己)认为,这些应该始终是两个不同的前端git命令,以减少混淆的可能性。但他们不是,所以我们陷入了困惑。

    不是第一种形式吗 git reset [-q] [<tree-ish>] [--] <paths>… 一样 git reset --mixed HEAD [--] <paths>… ?

    (我修好了你的无虚线 mixed 阅读 --mixed )它将会是 如果 后者是允许的。至少官方不允许这样做,但是:

    $ git reset --mixed HEAD -- Makefile
    warning: --mixed with paths is deprecated; use 'git reset -- <paths>' instead.
    

    注意 --hard --soft 被排除在外:

    $ git reset --soft HEAD -- Makefile
    fatal: Cannot do soft reset with paths.
    $ git reset --hard HEAD -- Makefile
    fatal: Cannot do hard reset with paths.
    

    案例 --混合 ,这是默认的如果 [<mode>] 被省略,以及 [<commit>] 可选,默认为 HEAD 意味着:

    git reset hello
    

    含糊不清:

    • 它适合吗? git重置[<模式>][<提交>] 模式,在哪里 mode 省略(默认为 --混合 ) hello 是否通过GitRevisions文档中的六步规则转换为提交?是的,很明显它符合这个模式。
    • 它适合吗? git reset [-q] [<tree-ish>] [--] <files>... 模式,在哪里 <tree-ish> 省略 <files> 是文件名 你好 ?是的,它很适合 那个 模式也是如此。

    哪一个做 Git复位 使用?答案是:它被编码为尝试两者,如果两者都是 能够 应用,生成错误消息:

    fatal: ambiguous argument 'wt-status.c': both revision and filename
    Use '--' to separate paths from revisions, like this:
    'git <command> [<revision>...] -- [<file>...]'
    

    如果对不同的操作模式有单独的命令,就不会出现这个问题。