github同步-上游、源站和本地存储库

github同步-上游、源站和本地存储库,git,github,fetch,synchronize,Git,Github,Fetch,Synchronize,我是陆龟城/github的noob,它快把我逼疯了 基本上,我创建了一个本地分支,比如说myBranch,做了一些我想保留的事情,然后感觉我把现有的其他分支搞砸了。我也做了一些不正确的推到我的原点,所以那里的一些分支也被弄乱了。我现在想要的是只保留我在本地myBranch中所做的工作,并根据上游更新所有其他内容,以便本地存储库和源代码都“干净” 首先,我发现根据上游更新origin的唯一方法是首先更新本地存储库,然后将其推送到origin 第二,我逆流而上。但是,当我签出到上游/主节点或本地主节

我是陆龟城/github的noob,它快把我逼疯了

基本上,我创建了一个本地分支,比如说myBranch,做了一些我想保留的事情,然后感觉我把现有的其他分支搞砸了。我也做了一些不正确的推到我的原点,所以那里的一些分支也被弄乱了。我现在想要的是只保留我在本地myBranch中所做的工作,并根据上游更新所有其他内容,以便本地存储库和源代码都“干净”

首先,我发现根据上游更新origin的唯一方法是首先更新本地存储库,然后将其推送到origin

第二,我逆流而上。但是,当我签出到上游/主节点或本地主节点,或尝试合并上游/主节点和本地主节点时,总是会出现以下错误“签出/合并将覆盖以下未跟踪的工作树文件”。原因可能是什么

第三,在github中,我可以看到上游存储库有两个分支:master和ASecondBranch,因此origin也有这两个分支需要更新。但是在我获取之后,只有上游/主节点可以看到使用'git branch-r',而我找不到上游/第二个分支。那么如何根据上游更新本地和源分支

提前谢谢

First:是的,让origin在上游存储库中保持最新状态的唯一方法是首先从上游获取本地克隆,然后将更改推送到origin

通常,这并不是什么大事;如果您正在使用fork为其他人的项目做贡献,那么您应该将您的更改保留在您自己的分支中,听起来您已经这样做了,并从该分支向上游项目提交一个pull请求。比如说,master是否在上游/master之后并不重要,因为pull请求只关心您指定的分支

如果您已经在主服务器上提交了您不想保留的内容,您将需要重置-很难对上游/主服务器进行重置。要在Tortoise中执行此操作,请签出主机,使用同步对话框从上游获取,打开日志视图,右键单击提交到上游/主机,选择将主机重置为此,然后选择硬。请注意,下次推送时,需要选择“强制覆盖”。您可以根据需要使用其他分支进行重复。在执行此操作之前,请仔细检查您的日志,并确保您可以放弃在本地完成的工作

第二:听起来你的工作副本中有一些变化,但你还没有准备和提交。当您使用git时,如果养成经常提交并保持工作副本干净的习惯,就容易多了。要么将更改提交到您所在的分支,要么将其隐藏,要么将其清除。未跟踪的文件应该出现在Tortoise的提交对话框中


第三:这个很奇怪;git获取应该为从中获取的远程站点中的新分支创建远程跟踪分支。您是否在同步对话框中设置了只错误地获取master的内容?请尝试按名称显式指定远程分支。

谢谢您的回复。现在我认为第一个问题与第三个问题有关,因为我还想更新上游的第二个分支。对于第二个问题,我确信我已经提交了所有内容,因为我现在签出到其他一些随机提交/分支,并且所有图标都是绿色的。对于第三个问题,在日志对话框->所有分支->远程->上游,只有master。但是我仔细检查了我从中派生的存储库,它有两个分支。事实上,上游是一个公共图书馆ITSEZ/opencv,它有一个主分支和一个维护最新主版本的2.4分支。不知道为什么