带有 Visual Studio 2015 的 Git 切换分支导致更改
Posted
技术标签:
【中文标题】带有 Visual Studio 2015 的 Git 切换分支导致更改【英文标题】:Git switch branch with Visual Studio 2015 causes changes 【发布时间】:2017-03-07 02:57:16 【问题描述】:我有以下场景:
-
我从 master 创建了一个本地分支
在本地分支上工作,提交更改
使用 Visual Studio git 插件切换到 master
对 master、commit、sync 进行一些更改
当我切换回本地分支时,我立即在该分支上对我在 master 上编辑的文件进行了未提交的更改。因此,如果我查看这些文件的更改,则没有实际更改,但我猜测文件的修改日期已更改或其他原因。
起初这只是麻烦,但是当您切换回 master 时,master 将对在本地分支中编辑的文件进行“幽灵”更改,因此,如果您继续这样工作一段时间,您就会收到大量冲突的垃圾邮件合并两个分支时,这可能会导致工作丢失。
有什么线索吗?
【问题讨论】:
【参考方案1】:问题可能出在 CRLF (how to change line ending settings)
签出 Windows 样式,提交 Unix 样式的行结尾 Git 将在签出文本文件时将 LF 转换为 CRLF。提交文本文件时,CRLF 将转换为 LF。对于跨平台项目,这是 Windows 上的推荐设置(“core.autocrlf”设置为“true”) 按原样签出,提交 Unix 样式的行结尾 Git 在签出文本文件时不会执行任何转换。提交文本文件时,CRLF 将转换为 LF。对于跨平台项目,这是 Unix 上的推荐设置(“core.autocrlf”设置为“input”)。 按原样签出,按原样提交 Git 在签出或提交文本文件时不会执行任何转换。跨平台项目不建议选择此选项(“core.autocrlf”设置为“false”)
【讨论】:
【参考方案2】:您的忽略文件在两个分支上都正确吗?可能是您不小心添加了 Visual Studio 使用的文件,该文件不应该在您的存储库中。
您可以尝试使用精选的 .gitignore 文件,例如 this one。但是,如果您已经将文件添加到存储库中,即使它们在忽略文件中,git 也会继续跟踪它们的更改
【讨论】:
忽略文件根本不是modfieid,在所有分支中都是一样的。如果是这种情况,我会得到一些特定文件的更改,我可以从 git ignore 中忽略这些文件。但是更改是在切换之前在分支上编辑/创建的文件上进行的。以上是关于带有 Visual Studio 2015 的 Git 切换分支导致更改的主要内容,如果未能解决你的问题,请参考以下文章
带有 char16_t 或 char32_t 的 Visual Studio C++ 2015 std::codecvt
带有 Visual Studio 2013 社区版的 RDLC
带有 Visual Studio (Cordova) 的 IPA 语言