git - 当我从有新文件的本地分支执行 git fetch 和 git checkout origin/branch 时,实际上会发生什么?
问题描述
考虑我有一个本地分支A
和两个远程分支A
和B
. 本地分支包含一些不在远程
的文件。
然后,我执行以下操作:A
B
git fetch
git checkout origin/B
然后,来自本地 A 的那些文件仍然存在,我删除了这些文件并提交了我对一些文件中所需的更改
origin/B
:
git add .
git commit -m "fixes made"
然后,head 与显示提交哈希分离
所以,我在这里有两个问题
为什么我本地分支中的那些文件
A
复制/保留到/inorigin/B
?头怎么掉了?
解决方案
为什么我的本地分支 A 中的那些文件复制/保留到/在 origin/B 中?
因为它们不是来自分支 A 的文件。它们是您工作目录中不受 git 管理的文件。您没有将它们添加到分支 A 或其他任何地方的任何提交中。并且 git 不会对没有被告知管理的文件做任何事情。在您提交之前,工作不会“在分支上”。
头怎么掉了?
因为你做到了git checkout origin/B
,这使人HEAD
分离。您可能的意思是git checkout -t origin/B
,它创建了一个新分支B
,其上游origin/B
和指向HEAD
那里。
推荐阅读
- sparql - 维基数据示例和子类
- php - 集成 Apple Pay 时,如何将 Stripe 的 javascript paymentRequest 与 PHP 处理服务器端混合使用
- iis - 强制在 IIS 中出现内部服务器错误
- python - UWSGI 不会将应用程序标准输出重定向到标准输出,仅重定向到文件
- reactjs - 在 redux 操作函数中获取和调度
- ios - 在球体 ARKit Swift 4 上添加照片
- c# - WPF 命令绑定到静态视图模型
- c# - 在堆栈上创建类的实例
- sql - 排除符合条件的记录
- xml - XPath - find an element based on its parent's sibling's child's text