什么是checkout
git?
我知道一旦你做checkout
了一个特定的分支,HEAD
那个分支的点.但这究竟意味着什么?这是否意味着我可以在那个分支上工作?如果是的话,那么,如果不检查分支机构,我就无法继续工作了?
还有什么remote checkout
意思呢?它有用吗?
Dav*_*ulp 49
如您所述,HEAD
是一个标签,指出您在提交树中的位置.当您从一次提交移动到另一次提交时,它会随您移动. git checkout <commit>
是在提交树中移动的基本机制,将focus(HEAD
)移动到指定的提交.
提交可以通过任何多种方式来指定,提交散列,分行名称,标签名称,相对语法(HEAD^
,HEAD~1
等)等.考虑将结帐更改为分支通常很有用,并且有一些选项可以从这个角度工作,但它们都引用了提交.
检查提交除了HEAD
四处移动之外还有一些副作用.
-b
选项,将根据当前提交创建新分支,然后激活.--track
选项,可以使签出的分支知道远程分支--orphan
选项创建一个新分支(如同-b
)但不会基于任何现有提交.还有一些选项,您可以在git checkout手册页中阅读,所有选项都围绕从一个提交移动到另一个提交 - 只是改变移动除了移动之外的效果HEAD
.
owa*_*786 21
让我解释一下结帐的一些用例,包括文件,文件夹和分支,以便它可以帮助理解.
假设我们有文件夹命名dev
,index.html
并且Everything也被跟踪,工作目录是干净的.
如果我不小心更改了文件名index.html
,我想要撤消,我将只使用git checkout index.html
它将从存储库当前选择的分支恢复该文件状态.
现在,如果我在dev
文件夹中进行了一些更改,并希望恢复它.我可以使用,git checkout dev
但如果已经分支命名dev
而不是checkout该文件夹它将拉下该分支.为了避免这种情况,我宁愿这样做git checkout -- dev
.
现在这里裸双击表示当前分支并向dev
当前所选分支询问git for folder .
同样如果我这样做git checkout alpha dev
将从alpha分支下拉dev文件夹.
这个答案是针对你的第一个问题'git checkout'的意思.
Mic*_*ild 19
"签出"意味着您从存储库中获取任何给定的提交,并在工作目录中重新创建关联文件和目录树的状态.
当你签出一个不是分支头的提交(例如git checkout HEAD~2
)时,你就是一个所谓的分离头.您可以在此处创建提交,但是一旦切换到其他分支,这些提交将无法通过分支名称恢复,甚至可能在一段时间后被垃圾回收器删除.
归档时间: |
|
查看次数: |
58488 次 |
最近记录: |