"git checkout " 和 "git checkout -- " 之间的区别

11 浏览
0 Comments

"git checkout " 和 "git checkout -- " 之间的区别

我找到了一篇文章,但仍然不知道以下两种命令之间的区别:

1. git checkout

2. git checkout --

在什么情况下应该分别使用第一种和第二种命令?

0
0 Comments

在Git中,有两种使用`git checkout`命令的方式:`git checkout `和`git checkout -- `。尽管它们的实际效果是相同的,但是它们在语法和用法上有所不同。

出现这个问题的原因是为了解决文件名以连字符开头的情况。当我们使用`git checkout `时,Git会将``解释为文件名,而不是作为程序参数。这就是为什么在文件名以连字符开头时,会出现问题的原因。

为了解决这个问题,我们可以使用`git checkout -- `命令。在这种语法下,`--`之后的任何内容都被视为文件名,而不会被解释为程序参数。这就解决了文件名以连字符开头时的问题。

总结起来,`git checkout `和`git checkout -- `的区别在于对文件名的解释方式。前者将文件名视为程序参数,而后者将其视为文件名。为了避免文件名以连字符开头时的问题,我们应该使用`git checkout -- `命令。

这就是关于"git checkout "和"git checkout -- "之间的区别以及解决方法的全部内容。希望本文能帮助你更好地理解和使用Git命令。

0
0 Comments

“git checkout ”和“git checkout -- ”之间的区别在于对未合并更改的处理。

“git checkout ”会丢弃当前分支中的更改,并将文件替换为指定分支或提交的版本。如果文件中有未合并的更改,该命令将失败并显示错误消息。

“git checkout -- ”会丢弃文件中的所有更改,包括任何未合并的更改。当你想要完全放弃本地更改并重新使用指定分支或提交的版本时,这很有用。

总之,“git checkout ”用于切换到文件的特定版本,同时保留已合并到当前分支的更改,“git checkout -- ”则会丢弃文件中的所有更改,包括未合并的更改。

0
0 Comments

git checkout 和 git checkout -- 的区别在于它们对待参数的方式。特殊选项 -- 的意思是“无论参数的样子如何,都将其视为文件名”。这不是 Git 特有的,而是通用的 Unix 命令行约定。通常,我们使用它来明确参数是一个文件名而不是选项。在 Git 中,它的作用是告诉 Git 后面的参数不是可选的“treeish”参数,而是你想要的文件名。

因此,在这种情况下,始终使用 -- 是安全的,但是当你想要还原的文件的名称以 - 开头,或者与分支名称相同时,你需要使用 --。以下是一些用于分支/文件区分的示例:

git checkout README 通常会丢弃对文件 "README" 的未提交更改

git checkout master 通常会切换工作副本到分支 "master"

git checkout -- master 丢弃对文件 "master" 的未提交更改

以及选项/文件区分:

git checkout -p -- README 交互式丢弃对文件 "README" 的未提交更改

git checkout -- -p README 无条件丢弃对文件 "-p" 和 "README" 的所有未提交更改

如果你有一个以 - 开头的分支名称,我不确定你该怎么做。也许首先不要这样命名分支。

git checkout 将分支 检出。git checkout -- 将文件 的索引版本检出。

关于“Unix约定”:确实,作为选项和参数之间的分隔符的 -- 在许多程序中都得到了实现。它适用于任何使用 POSIX getopt(3) 来处理命令行选项的程序/实用程序,shell 脚本使用 getopt(1),以及一些自己实现的程序,但不能保证在所有情况下都适用。

对于像我这样的人来说:不要被名为 master 的命名搞混了,他指的是名为 master 的文件,而不是分支。

你觉得回答的哪部分令你困惑?我希望能澄清一下。

0