git,更改本地分支会影响其他本地分支?

use*_*938 16 git git-branch

我有一个主分支

现在为了一些测试,我做了一个分支A

我结帐分支A修改文件,当我再次检查主数据时,也会有更改.

在其他存储库中,我有正确的行为

Vis*_*rai 21

未提交的更改将从一个分支移动到另一个分支.为了使它们分开,您必须stash在移动到另一个分支之前进行这些更改.当您返回分支时,可以通过apply这些更改来检索它们.

如下所示:

>$ git status
On branch branch_1
Your branch is up-to-date with 'origin/branch_1'.

modified:   dir/file.rb 
>$ git stash
>$ git checkout <branch_2>

>$ git checkout <branch_1> #after finishing your tasks in branch_2 you can go back to branch_1
>$ git stash apply
Run Code Online (Sandbox Code Playgroud)

现在,您将获得之前在branch_1中所做的更改

  • *"未跟踪提交"*?您可能意味着"未提交的更改".而且他们不会从一个分支移动到另一个分支.它们不在任何分支上,因为它们不在存储库中(它们尚未提交). (3认同)
  • 是的,未提交的更改不会在任何分支上,因此如果您结帐,将在其他分支中可用。 (2认同)

axi*_*iac 8

我结帐分支A修改文件,当我再次检查主数据时,也会有更改.

未提交的更改不属于任何分支.它们仅存在于工作树中(如果已添加,则存在于索引中).

切换分支时使用干净的工作树是一种很好的做法,以避免在工作树中的更改与切换的分支之间的差异冲突时出现问题.

因为分支A刚刚创建,并且您没有提交任何内容,也没有提交master,分支A指向相同的提交master和切换,A并且master不需要更改工作树.这就是为什么你可以切换分支而不会发生冲突.

为了将您刚才所做的更改放在一个分支中(假设已检出的分支是A),您必须将其添加到索引然后提交它们:

git add .
git commit
Run Code Online (Sandbox Code Playgroud)

阅读更多关于git addgit commit.