【问题标题】:Git for Visual Studio ignores a projectVisual Studio 的 Git 忽略项目
【发布时间】:2018-05-12 21:41:01
【问题描述】:

我正在使用 Visual Studio Team Services 来托管我的解决方案的存储库。该解决方案有四个项目,但出于某种原因,Visual Studio 在记录更改时会完全忽略其中一个项目。因此,该项目未包含在 repo 中。

但是,项目的右键菜单包括“源代码管理”部分,就好像它已经包含在存储库中一样,而不是它应该显示的“添加到源代码管理”选项。

“Keklist 2 Beta - Win Desktop_CSharp”是缺少的项目。

如何解决这个问题?

编辑:截图!

编辑:从丢失的项目中删除文件后的屏幕截图

.gitignore 在缺少的项目文件夹中找到,但其中的所有内容似乎都已检出。

## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/

# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in     wwwroot
#wwwroot/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUNIT
*.VisualState.xml
TestResult.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# DNX
project.lock.json
project.fragment.lock.json
artifacts/

*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

还有更多,检查整个文件的 Pastebin 链接(它有 261 行长)

【问题讨论】:

  • 如果您更改 Keklist 2 Beta - Win Desktop_CSharp 项目的文件并在团队资源管理器中显示更改窗口的屏幕截图会怎样?是否也可以检查一下是否在.gitignore中指定了项目?
  • 不,gitignore 中没有项目。第四张截图显示了删除文件的结果
  • 您是否删除了“Keklist 2 Beta - Win Desktop_CSharp.csproj”文件? “Keklist 2 Beta - Win Desktop_CSharp.csproj”文件的更改类型是什么(例如ibb.co/e2g0Fd)? git status 命令的输出是什么?您是否已将该项目提交到您的 repo 中?
  • 不,我没有删除项目文件。更改类型是“编辑”,就像在示例中一样。它也不会让我与未修改的比较。就提交而言,项目文件似乎包含在 repo 中,但由于 VS 没有跟踪项目其余部分的更改,我无法为该项目提交任何内容。
  • “VS 没有跟踪项目其余部分的更改”是什么意思?如果您提交所有更改,然后检查 Keklist 2 Beta - Win Desktop_CSharp 项目是否受版本控制?

标签: git visual-studio-2017 azure-devops


【解决方案1】:

在检查了离开 cmets 的用户提出的所有可能的问题后,我做了以下事情:

  1. 找到丢失项目的文件夹

  2. 转到 Visual Studio Team Services 在线仪表板

  3. 手动上传缺少的项目文件,因为它出现在我的系统上

  4. 使用 Visual Studio 的 VSTS 窗格提取新提交并推送合并

现在该项目似乎按预期工作。感谢所有试图提供帮助的人!

【讨论】:

    【解决方案2】:

    检查本地克隆存储库中的该子项目是否包含.git/
    或者在主本地 repo 的根文件夹中的 .gitmodules 中可见。

    在这两种情况下,这将表示一个嵌套的Git repository,它只会在推送后显示为父回购索引中的条目,而不是文件夹内容。

    另一种选择是让“Keklist 2 Beta - Win Desktop_CSharp”子文件夹内容被忽略购买.gitignore 指令。

    检查:

    cd /path/to/repo
    git check-ignore -v -- ""Keklist 2 Beta - Win Desktop_CSharp/aFile"
    

    (选择该项目文件夹中的现有文件)

    然后您将看到是否有任何 gitignore 规则可以解释无法添加这些元素(因为它们将被忽略)。

    【讨论】:

    • 不,其中没有任何“.git”文件夹。奇怪的是,还有 .gitattributes 和 .gitignore。
    • 还需要注意的是,VS 甚至不跟踪与该项目相关的任何文件的更改。因此,即使它会在推送后出现,我也无法推送它,因为它无法识别更改。
    • @YoshiAskharoun 父仓库中没有 gitmodules?项目的父/祖父文件夹中是否有 .git 文件夹。因为如果不是,那只是意味着该项目位于其他地方,根本没有被 Git 跟踪。
    • 解决方案文件夹中有一个.git文件夹。我会在问题中添加更多屏幕截图。
    • 你能把.gitignore文件的内容贴出来吗?在 keklist 2 Beta 文件夹中
    【解决方案3】:

    如果其他人遇到此问题,我通过右键单击要添加项目的文件夹,将鼠标悬停在“添加”选项上,然后单击“添加现有项目”来修复它。这让我可以进入文件浏览器并选择 Visual Studio 中缺少的 .csproj,之后一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      • 2018-07-25
      • 2016-11-02
      • 2018-05-05
      • 1970-01-01
      • 2021-01-07
      • 2010-09-08
      相关资源
      最近更新 更多