在Git

时间:2018-02-12 11:44:41

标签: git git-branch

说我的工作目录是C:\ Users \ f1,当前分支是master。

如果我签到另一个分支(myBranch),C:\ Users的内容怎么办? \ f1被myBranch的替换?

换句话说,同一文件夹的内容如何随分支的变化而变化? git是否删除文件夹的当前内容(C:\ Users \ f1)并将其替换为新分支的内容?

2 个答案:

答案 0 :(得分:1)

当您使用oldbranch进入git存储库然后执行git checkout newbranch时会发生这种情况:

  • git会记录您尚未添加到索引中的文件中的更改,以及尚未提交的索引中的更改。
  • git尝试同时应用于newbranch
  • 如果成功,您最终会检出newbranch,并且更改与以前一样(未添加的更改保持未添加;未提交的更改保持未提交状态)。

请注意git不是" daring"在此期间和其他操作一样(即,这不是真正的合并操作)。收到消息error: Your local changes to the following files would be overwritten by checkout:git拒绝结帐非常容易。

在这种情况下,您仍然可以通过在结帐前使用git reset --hard删除更改或使用存储来执行结帐:

git stash
git checkout newbranch
git stash pop

git stash pop通常会按预期工作;如果没有,您会得到通常的合并冲突,您可以手动解决。

答案 1 :(得分:-1)

当您从主分支切换到新分支(myBranch)时,如果您没有指定任何远程分支,只需执行

  

git checkout -b myBranch

Git将创建一个新的本地分支,其中包含master分支的内容副本。也就是说,您的主分支中存在的任何内容都将以相同的方式存在于您的新本地分支中。 另一方面,如果您从现有远程分支创建新的本地分支跟踪,例如

  

git checkout -b myBranch origin / myRemoteBranch

在这种情况下,git将创建一个本地分支,其中包含上面指定的远程分支的内容的本地副本。 只要你当前的工作分支是干净的,git将允许你创建和切换分支而不会抛出错误。

所以当你切换分支时,git基本上跟踪不同的远程分支并创建它的本地副本,这是你的本地分支。

在任何时候,你都可以

  

git remote show origin   检查本地分支到远程分支的跟踪

希望我清除了你的怀疑