git checkout自动合并本地修改

Raz*_*zer 6 git merge git-checkout

我尝试在shell上执行以下命令

git init

echo "test1" > test1.txt
git add test1.txt
git commit -a -m "test1"

echo "test2" >> test1.txt

git branch test
git checkout test
Run Code Online (Sandbox Code Playgroud)

text.txt 现在包含:

test1
test2
Run Code Online (Sandbox Code Playgroud)

结账后分支test所有本地修改从master合并.

为什么?

我期望因为本地更改而git拒绝结帐test.我希望git要求提交或stash本地更改.

编辑:我使用bash脚本来执行此命令.我得到以下输出:

r@r:/tmp/test$ ./createrepo 
Initialized empty Git repository in /tmp/test/.git/
[master (root-commit) 0407f5b] test1
 1 file changed, 1 insertion(+)
 create mode 100644 test1.txt
M       test1.txt
Switched to branch 'test'
Run Code Online (Sandbox Code Playgroud)

twa*_*erg 14

git努力不丢失可能有价值的数据.在这种情况下,它实际上并不是合并分支,因为有问题的更改尚未提交.相反,当您执行a时git checkout,它会尝试保留新制作但未提交的修改,因此它会检出您请求的提交,并添加您未提交的更改.如果您确实要放弃未提交的更改,请使用git checkout -f或git checkout后跟git reset --hard HEAD.有时,如果您尚未提交的更改无法合并到您正在检查的内容中​​,您将收到错误消息并且结帐将失败.

  • 我不想丢弃任何东西.但我不希望那些未经修改的变化自动合并.如果我在`test`中提交一些内容,然后进行一些未经修改的更改并尝试再次切换,git说它不能,因为实际上存在未经修改的更改.但是,如果这个新分支中没有提交,为什么git不会这样做呢?因为`master`分支和`test`具有相同的`HEAD`? (2认同)