Git 吉特认为我';当我没有';T
我需要帮助解决一个非常令人恼火的问题。我是的开发团队成员,这意味着我经常审查参与者自己分支机构的功能更新。为此,我下拉了他们回购协议的本地副本,并使用以下代码签出特定的分支机构:Git 吉特认为我';当我没有';T,git,github,version-control,Git,Github,Version Control,我需要帮助解决一个非常令人恼火的问题。我是的开发团队成员,这意味着我经常审查参与者自己分支机构的功能更新。为此,我下拉了他们回购协议的本地副本,并使用以下代码签出特定的分支机构: git remote add this_fork this_fork_url git checkout -b this_fork/this_branch git branch --set-upstream-to=remotes/this_fork/this_branch this_fork/this_branch gi
git remote add this_fork this_fork_url
git checkout -b this_fork/this_branch
git branch --set-upstream-to=remotes/this_fork/this_branch this_fork/this_branch
git pull
我有几个供款人回购协议的本地副本,以及来源,其中我经常切换。使用contributor repos,我从不更改代码,我只需检查代码并编译和测试应用程序
然而,我注意到,有时候,当我签出其中一个贡献者分支时,git会告诉我您的分支是remotes/this_fork/this_branch by#提交的负责人。(使用“git push”发布本地提交)
,或您的分支和“remotes/this#u fork/this#u branch”已经分开,并且分别有##和##不同的提交。(使用“git pull”将远程分支合并到您的分支中)
。因为我知道我没有做任何更改,所以我尝试通过运行一个git pull
来继续,但在前一种情况下,这会导致git强制我执行git commit
,并导致git在后一种情况下执行合并。运行git status
会显示相同类型的消息,但不会显示修改过的文件
一旦我的分支回购协议的一个本地副本出现这种情况,我发现解决它的唯一方法就是完全删除回购协议的本地副本——但这并不总是有帮助。我在一个分支上观察到,在我完全删除它之后,它仍然处于相同的状态,然后重新添加远程(事实上,我用所有本地回购副本删除了整个director和.git dir)。运行git reset--hard
没有帮助
这在Ubuntu和Windows上都会发生(应用程序是跨平台的)。请注意,并非每次远程、每次分支或每次我签出分支时都会发生这种情况。我将不会有任何问题与一个分支数周,然后突然有一天,当我检查出来,这发生了
请注意,这与作者实际进行并推动更改的情况不同。就我而言,我没有做任何更改
所以我想我的问题有两个:“为什么git会认为我做了更改,而我没有?”和“我该如何解决这个问题?”尝试
git checkout-B this\u fork/this\u branch remotes/this\u fork/this\u branch
如报告中所述: 如果给定了
-B
,则在不存在时创建;否则,它将被重置。这是与
$git分支-f[]
$git结帐
这样,您就可以确保您的本地分支this\u fork/this\u branch
始终重置为您已获取的分支remotes/this\u fork/this\u branch
。在这种情况下,前面或后面都不应该有提交。
$git fetch Caritor\u Amithowej@Rio-71 MINGW64~/KTAB(Caritor\u Arun/xmlparser)$git checkout-B Caritor\u Amit/testing切换到并重置分支“Caritor\u Amit/testing”您的分支和“remotes/Caritor\u Amit/testing”已经分开,分别有36和42个不同的提交,分别地(使用“git pull”将远程分支合并到您的分支中)
@Dr.Drew whatgit checkout-B Caritor\u Amit/testing remotes/Caritor\u Amit/testing
将返回?似乎已经完成了。但是对于一个分支,语法git checkout-B this_fork/this_branch
确实有效,而另一个分支则需要第二个分支。为什么会出现这种情况?@Dr.Drew,因为(手册页)“如果未找到
,但在一个具有匹配名称的遥控器(称之为
)中确实存在跟踪分支,则将其视为等同于$git checkout-b--track/
”@Dr.Drew“知道什么会首先导致问题吗?git错误地认为我做了更改?”当git重用现有的本地分支(测试
):这就是为什么我建议-B
:它强制分支(即使是现有分支)重置为其远程起始点分支。
$ git branch -f <branch> [<start point>]
$ git checkout <branch>