checkout
git 中的s是什么?
我知道一旦您checkout
对特定分支进行操作,就HEAD
指向该分支。但这到底是什么意思?这是否意味着我可以在那个分支上工作?如果是,那么,在不签出分支的情况下,我无法进行处理吗?
还有,这remote checkout
是什么意思?有什么用?
checkout
git 中的s是什么?
我知道一旦您checkout
对特定分支进行操作,就HEAD
指向该分支。但这到底是什么意思?这是否意味着我可以在那个分支上工作?如果是,那么,在不签出分支的情况下,我无法进行处理吗?
还有,这remote checkout
是什么意思?有什么用?
Answers:
如您所述,HEAD
是一个标签,用于指示您在提交树中的位置。当您从一个提交移至另一个提交时,它会与您一起移动。 git checkout <commit>
是在提交树中移动,将焦点(HEAD
)移至指定提交的基本机制。
提交可以通过任何多种方式来指定,提交散列,分行名称,标签名称,相对语法(HEAD^
,HEAD~1
等)等。通常认为将签出更改为分支是很有用的,从该角度来看,有一些选项可行,但是它们都引用提交。
签出提交除了HEAD
四处走动以外还具有一些副作用。
-b
选择该选项后,将基于当前提交创建一个新分支,然后将其激活。--track
选项,可以使检出的分支知道远程分支--orphan
选项,则会创建一个新分支(如-b
),但不会基于任何现有提交。还有更多选项,您可以在git checkout手册页中阅读这些选项,所有这些选项都围绕着从一个提交移动到另一个提交-除了move之外,该移动还有什么作用HEAD
。
git checkout <commit> <path>
不要切换分支。
git checkout <path>
。
让我解释一下使用文件,文件夹和分支进行签出的一些用例,以便对理解有所帮助。
假设我们有一个名为的文件夹,dev
并且index.html
还跟踪了所有内容,并且工作目录很干净。
如果我不小心更改了文件名,index.html
并且想要撤消该操作,那么我将简单地使用git checkout index.html
它,它将从存储库当前选定的分支中恢复该文件状态。
现在,如果我在dev
文件夹中做了一些更改并想要恢复它。我可以使用,git checkout dev
但是如果已经命名了分支dev
而不是检出该文件夹,它将拉低该分支该怎么办。为了避免这种情况,我宁愿这样做git checkout -- dev
。
现在,这里的双破折号代表当前分支,并向git询问dev
当前选定分支中的文件夹。
同样,如果我这样做git checkout alpha dev
,它将从alpha分支下拉dev文件夹。
这个答案是针对您的第一个问题“ git checkout的真正含义”。