我是git的新手,我正在尝试用它来理解概念,特别是分支和合并.
所以这是我的设置,
我有一个主分支,我用'master'文本创建一个主文本文件.
现在我做了git checkout -b branch并创建了一个分支.
我编辑分支'父'文件并添加一行文本.
现在如果我提交此更改并切换回master,它将不会影响,因为它不应该影响,因为分支更改不应该反映在主分支中.
但是,如果我离开分支未提交并切换到主,这个更改反映在那里,git将主文件视为已编辑,当我这样做
git status -s
Run Code Online (Sandbox Code Playgroud)
它显示带有M的主文件.
任何人都可以向我解释未提交的更改如何在主分支中反映出来吗?
当签出另一个分支时,Git会保留您未提交的更改,这非常实用.
您可以将此视为未提交的更改"仅属于"您的工作副本,而不属于任何分支或提交.他们是独立的.当您在分支中提交更改时,如果结帐具有不同的文件版本,它们当然会更改.
此行为的唯一例外是,如果分支更改将未提交的文件带到其他版本,则取消结帐的情况如下:
A--B - feature
\
-C - master
Run Code Online (Sandbox Code Playgroud)
假设feature分支中的提交B 将一行更改为foo.txt,并且您已master检出分支.你做了不同的改变foo.txt.
您提交更改master和结帐feature
git add foo.txt
git commit -m "changed foo.txt"
git checkout feature
Run Code Online (Sandbox Code Playgroud)
这里没有问题,记录的变化master以及何时进行相应feature foo.txt更改.
如果您没有提交并尝试签出feature,那么Git将打印相应的消息,并保持master分支签出:
git checkout feature
Run Code Online (Sandbox Code Playgroud)
错误:checkout会覆盖对以下文件的本地更改:
foo.txt
请在提交更改或存储更改之前切换分支.中止
| 归档时间: |
|
| 查看次数: |
5491 次 |
| 最近记录: |