最近,我不得不恢复计算机并重新安装所有软件。
Git表现得我不熟悉。
我做了
$ git init
$ git branch -b newBranch
$ git checkout newBranch
在此之后,我对几个文件进行了一些更改并添加了一个新文件。
我没有$ git add -A
NOR $ git commit -m 'msg'
在,
$ git checkout master
newBranch
上所做的所有更改都反映在master
:
在,
$ git status
所有更改都显示为未上演(红色)。
以前,每当我切换到分支机构并进行一些更改时, 在切换到另一个分支时,我将无法再看到这些更改(暂存/未暂存或已提交/未提交)。
仅在运行时
$ git merge sourceBranch destinationBranch
这些更改会在其他分支上显示。这似乎不是这种情况
与我的Git。
是吗
答案 0 :(得分:0)
因此,您现在正在newBranch
分支机构工作,您进行了更改,但尚未提交任何内容。
为什么允许结帐master
分支?
Git允许这样做,因为切换到不会覆盖您的任何本地更改。
但是,如果您现在正在使用master
分支并更改某些文件,Git将阻止您这样做,因为本地更改将被覆盖。
答案 1 :(得分:0)
简短回答:在您add
或commit
之前,git不会跟踪您的本地更改。如果在没有添加或提交的情况下切换分支,git不会覆盖这些本地更改,因此您不会太容易丢失数据。
有三个独立的域名:
L
)S
)R
)您已在L
中进行了更改。这些不会反映在S
和R
中,域名是分开的。如果你没有告诉git add
(S
)或commit
(R
),L
中的更改不属于任何分支但是,仅限于L
域。
当您checkout
分支,来自master
和newBranch
时,git会更改当前的HEAD
,即本地更改将如果您前往S
或R
,请引入add
或commit
。
当您checkout
分支时,git还会尝试将已签出的提交(在您检出的分支的顶端)提交到文件系统域L
。 但是,为了防止自己陷入困境并在L
中丢失未经分级和未经修改的更改,git不会覆盖这些L
更改。由于它们未被添加或提交,否则无法检索它们。
注意:您可以通过将-f
(强制)标记传递给checkout
来告诉git覆盖此类本地更改。你会在没有任何警告的情况下丢失本地更改。
另请注意:在进行本地更改时切换分支并非总是可行,例如,如果更改为分支将应用将覆盖某些本地更改的更改。这是我经常使用-f
的地方,当我知道我想丢失本地更改时。
这个答案(我的)可能有所帮助:https://stackoverflow.com/a/2569513/108802
答案 2 :(得分:0)
它没有被破坏或任何尝试添加那些非舞台并再次提交。
答案 3 :(得分:0)
以前的安装误导了我的实际命令和Git功能。 必须彻底阅读文档。