我是git的新手。我了解git的基础知识以及使用git的开发过程,但是有一件事使我感到困惑。
每当我必须从git存储库中提取一些包含多个项目(example)的内容时,就会看到以下说明步骤:
这让我有些困惑。因为我已经拥有完整的存储库,所以如果我可以只复制文件夹并用它做任何我想做的事,为什么还要结帐我感兴趣的项目?
答案 0 :(得分:3)
前两个步骤只是告诉您 <?xml version="1.0" encoding="UTF-8"?>
<project clover="1.01">
<package name="A:B:C">
</package>
</project>
</coverage>
,它将克隆到某个文件夹中,然后告诉import React, {Component} from 'react';
import ComponentOne from 'componentone';
import ComponentTwo from 'componenttwo';
class MyComponent extends Component {
state = {
show:""
}
render() {
let content = null;
if(show === "showOne"){
content = <ComponentOne />;
}else if (show === "showTwo"){
content = <ComponentTwo />;
}
return (
<div>
<ul>
<li id="show-one">
<button onclick={this.setState({ show: "showOne" })}>Show One</button>
</li>
<li id="show-two">
<button onclick={this.setState({ show: "showTwo" })}>Show Two</button>
</li>
</ul>
{content}
</div>
)
}
}
到该文件夹中。仅当您不想想要开始使用该仓库的git clone
或默认分支时,才需要执行第三步。通常,在git克隆之后,默认情况下会选择cd
分支。因此,如果您的指令希望您在其他master
分支上工作,那么第三步就很有意义。
运行master
将自动创建一个名为yyy
的本地分支。 如果您的存储库中有一个同名的跟踪分支。在这种情况下,它也会切换到新创建的本地分支。
答案 1 :(得分:2)
注意:我以注释开始,但是它足够长,并且确实可以使用一些格式,因此将其移至答案。这是对您对Tim Beigeleisen的评论的答复:
如果您引用我的示例链接,请检查“ stereo_image_proc”是否有效,但是我看不到它是分支之一,怎么会这样?
git checkout stereo_image_proc
不抱怨(乍一看似乎什么也没做)的原因是git checkout
本身实际上是两个不同命令组合成一个命令。在某些人(包括我的人)看来,这是一个功能或不适当的功能:git checkout
的参数可以是分支名称或路径名称。 / p>
特别是:
git checkout branch
要求Git切换,或者有时甚至创建,然后切换到您在命令行上提供名称的分支。
最后,将切换到是一个非常复杂的过程,但它起步很简单:它更改了Git的HEAD
概念,因此您位于命名分支上。它具有另一个非常有用的功能:在Git实际切换到(和/或创建)该分支之前,Git确保这不会掩盖您偶然在错误上启动的任何工作。 em>分支。
git checkout name1 name2 ... nameN
要求Git从某些命名或隐式提交中提取特定文件。通常最好用git checkout -- file
来写,其中--
告诉Git,名称不应被视为分支。也就是说,假设您有一个名为master
的文件并且要提取它:那么git checkout master
将不起作用,因为这是名为{的分支 {1}},但是您想要名为master
的文件。因此master
告诉Git:不是分支,是文件。
当您使用这种git checkout -- master
时,您是在告诉Git:我知道我开始编辑一个或多个文件,但是现在我决定编辑该文件或所有这些文件,是一个错误。将它们放回原样,将它们还原为每个文件的先前版本。例如,假设您有一个名为git checkout
的文件,并开始对其进行编辑,然后意识到您应该创建一个 new 文档文件。您将添加的新内容复制到新文件中,但是现在您希望README.txt
回到开始编辑之前的状态。因此,您运行README.txt
,然后清除对文件的更改。
但就Git而言,在此处命名目录(或文件夹,如果您更喜欢该术语),则意味着该目录中的每个文件,包括递归的所有子目录。由于git checkout README.txt
是目录,而不是分支名称,因此您将获得stereo_image_proc
的第二种形式。
最重要的是,git checkout
告诉Git 清除对该目录中任何文件所做的任何更改。如果您没有进行任何更改,那么,没问题!但是,如果有的话,这可能是灾难性的。
由于git checkout stereo_image_proc
有 这两种模式-安全的开关分支模式和不安全的我所有的工作模式—每次运行git checkout
时,都要记下正在调用的是哪个。