什么' " git fetch&& git checkout"与" git checkout"只要?

时间:2018-06-13 18:37:34

标签: git git-checkout git-fetch

我们应该始终这样做:

git fetch && git checkout

或仅,

git checkout

例如,当从bitbucket中的分支进行结账时,它们提供以下命令:

enter image description here

git fetch && git checkout develop

但是,如果

,为什么这是必要的
  

git checkout

会做同样的事情,不是吗?

6 个答案:

答案 0 :(得分:2)

具体到你的问题“在从bitbucket的分支机构结账时,他们提供的命令为: git fetch&& git checkout develop “。这是因为在云端或远程创建开发分支,除非您从远程获取更新,否则将无法在本地计算机上使用。

因此,要切换或签出以开发分支,首先需要获取所有远程更新以了解develop分支的存在。一旦你进行了一次获取,你的本地reppo将会知道在远程创建的新分支;当你结账进行开发时,它会设置一个新的本地分支来跟踪它的远程couterpart。

答案 1 :(得分:2)

在这里,由于我每天必须将Bitbucket用于多个项目和多个分支,所以在此打个招呼,我将为您提供建议。

如果您从Bitbucket签出(即创建分支),则可以使用示例中粘贴的命令提供的命令。但是,由于在初始结帐后您很可能会切换分支,创建分支并且您的本地将不同步,因此我建议您使用终端进行以下操作。 :

  1. git checkout develop或您需要的任何分支机构
  2. git fetch && git pull,即获取所有分支和最新更改,并从您所在的分支中提取所有更改。

是的,这似乎是重复的工作,但是与Bitbucket一起使用,我会说这是确保您所使用的分支机构拥有最新信息的最安全,最明智的方法。

话虽如此,您应该始终创建分支,并且永远不要直接推送到您的developmaster分支。

因此,假设您位于develop分支上,并通过检出该分支完成了上述操作,并获取并提取了最新的分支,然后使用标准{{1 }}

我们在我店里做的事的例子:

  1. git checkout -b my-feature-branch
  2. git checkout develop
  3. git fetch && git pull

现在您已经签出了develop分支,下拉了所有最新的更改和远程分支,并从该develop分支创建了一个功能分支。

希望这会有所帮助。

答案 2 :(得分:2)

git fetch将引用拉到正在BItbucket上创建的远程分支上。

git checkout将当前目录移动到特定分支或特定提交(取决于参数)。

这是怎么回事?当您在位桶上创建分支时,它们会为您提供该命令,因为: 1-在REMOTE存储库上创建分支。您的存储库本地副本还没有该新分支。这就是git fetch命令的用途。 2- Bitbucket假定,由于您刚刚创建了新分支,因此您将立即对其进行处理,并且需要将其告知本地存储库。这就是git checkout命令的用途

那不是实现它的唯一方法。例如,您可以使用以下命令来避免使用git fetch命令:

git checkout -b {new_branch_name} && git pull origin {new_branch_name}

这不是最实用的方法,但可能会让您更好地了解这些命令的工作方式。

答案 3 :(得分:1)

git fetch使用遥控器更新origin/<branch_name>git checkout可用于切换分支。两者都没有任何关系,除非您尝试切换到远程新创建的分支,并且系统上不存在本地版本。

然而,当您执行git pull(或git fetchgit rebase)然后git checkout -b <another_branch>创建新分支时,您需要确保新分支分叉了最新版本的稳定代码。

答案 4 :(得分:1)

git fetch将从远程位置下拉所有更改

git checkout会将您切换到其他分支(或将文件恢复到以前的状态,具体取决于您的使用方式)

使用fetch和checkout切换分支并提取所有更新的文件。仅使用checkout切换分支,但继续使用本地版本。

答案 5 :(得分:1)

这个问题有问题。因为它缺少一步。 实际上,您需要3个步骤才能正确切换工作分支。 如果您只按照操作说明中描述的两个步骤进行操作,那么您会有些痛苦。

对于使用最少术语的简单解释,如果要在名为devA的分支上本地工作,则三个步骤是:

步骤1:git fetch --all 尽管从技术上讲您可以只获取这一分支。养成总是做访存的好主意-全部 该命令使git找出实际在线存储库的状态。通常应该在执行任何操作之前完成此操作,并且许多人运行的脚本会自动每分钟自动执行一次。

例如,如果您只是尝试不首先获取全部内容而转到第2步,那么很可能会返回一个错误,指出该分支实际上不存在。或切换到过时的版本并错误地通知您您实际上是在线存储库的最新用户,而实际上却不是。因此,欺骗您以为您不需要执行步骤3

步骤2:git checkout devA 这只是切换您的git在该分支上工作。简单。

步骤3:git pull 这实际上会更新您当前在分支机构工作的内容(请参阅第2步)以匹配在线存储库。如果您不这样做,那么下次您尝试提交更改时,将不小心破坏内容。 尽管如果这是您第一次在当前计算机上检出分支,则不需要使用此命令。

牢记所有这些,回到最初的问题

git fetch && git checkout =首先找出存储库的状态。然后切换到分支。

git checkout =无需费心找出存储库的状态,请尝试切换到分支。这可以告诉您该分支不存在。或者,它可能会切换到该分支的过时版本,同时错误地告诉您它与存储库是最新的。