Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当我签出主分支时,它实际上并没有在git中签出_Git_Smartgit - Fatal编程技术网

当我签出主分支时,它实际上并没有在git中签出

当我签出主分支时,它实际上并没有在git中签出,git,smartgit,Git,Smartgit,我今天遇到了这样一种情况,在从上游分支机构撤资并重新调整后,最近对上游分支机构的承诺表现得好像没有生效 症状以我记忆中最好的顺序出现: 在本地分支中编写代码时,Visual Studio解决方案文件一直显示为在没有我干预的情况下被修改——它的新内容在最近的提交中只撤销了一个文件(但没有撤销其他3.cs和.prj文件)。看起来好像VisualStudio正在这么做,但我不确定。(也就是说,git status显示了一个新修改的.sln文件,但我的更改不应该影响项目) 我无法生成解决方案,因为此文件

我今天遇到了这样一种情况,在从上游分支机构撤资并重新调整后,最近对上游分支机构的承诺表现得好像没有生效

症状以我记忆中最好的顺序出现:

  • 在本地分支中编写代码时,Visual Studio解决方案文件一直显示为在没有我干预的情况下被修改——它的新内容在最近的提交中只撤销了一个文件(但没有撤销其他3.cs和.prj文件)。看起来好像VisualStudio正在这么做,但我不确定。(也就是说,
    git status
    显示了一个新修改的.sln文件,但我的更改不应该影响项目)

  • 我无法生成解决方案,因为此文件已被修改,并且解决方案不知道重要的新依赖项(添加到两个项目的引用)。放弃修改后的文件(理论上我希望在最近的提交中添加来自上游的更改)没有帮助

  • 我一直在一个本地开发分支机构中进行更改,但我不知道我的一个本地提交是如何导致这种奇怪的情况的——我只是没有进行这种更改

  • 我多次关闭并重新打开VS,清理并重建解决方案

  • SmartGit日志显示,除了我对本地分支所做的提交或更改之外,没有其他提交或更改,这是我所期望的

  • 为了消除任何混淆因素,我从本地的开发分支切换到本地的主分支(我通常不做任何修改,也不做任何新的提交),并重建了项目,所有结果都是一样的

  • 我终于注意到SmartGit日志提供了直观的证据,证明master并不是真正的master。请看SmartGit/Hg 5.0.3(build#2073)中的屏幕截图:

    这是在git控制台
    git checkout master
    中发出后的结果。但是看看连接提交节点的蓝线:它表明我确实签出了历史上的第11次向后提交

    如果我发出
    git checkout master^
    ,那么它会正确地签出第二次提交,并相应地调整蓝线

    如果我签出SHA最近的提交,
    git checkout a07df46
    ,那么蓝线一直延伸到最上面的提交

  • 当我执行
    git show ref
    时,它指示
    refs/heads/master
    指向来自上游的最近提交的SHA——正如预期的那样

  • 我尝试了以下一系列命令,但没有任何改善(SHA是来自上游的最近提交的命令):

  • 我只想让我的存储库恢复同步,这样我就可以继续开发了

    如果我不能很快找到答案,我将把所有本地分支推送到一个个人远程分支(与上游主项目不同),删除我的本地存储库,在本地重新克隆上游存储库,然后将我关心的任何分支从我的分支中拉回来。但是,我真的很想知道git是如何进入这个奇怪的大师而不是大师状态的


    如何在不重新克隆整个存储库的情况下从这种奇怪的状态恢复?

    是否确实正确配置了源存储库的远程跟踪?(胡乱猜测)当我拉动时,我会执行
    git拉动--重新设置上游主机的基址
    ,因为我拉动的遥控器名为
    上游
    。由于我在命令中指定了remote,所以远程跟踪分支设置为什么并不重要。我已经这样做了三个月了,直到昨天才有问题。此外,有时我会执行
    git-pull-f上游主节点
    ,然后在每个分支中执行
    git-rebase主节点
    。这也不应该关心远程跟踪的设置,除非我遗漏了什么。
    git checkout HEAD^
    git branch -f master master^
    git branch -f master a07df46
    git checkout master