我是TortoiseGit / github的菜鸟,这让我发疯了......
基本上我创建了一个本地分支,比如myBranch,做了我想保留的东西,然后有点觉得我搞砸了现有的其他分支。我也对我的起源做了一些不正确的推动,所以那里的一些分支也搞砸了。我现在想要的只是保留我在本地myBranch中所做的工作,并根据上游保持其他所有更新,以便我的本地存储库和源都是“干净”。
首先,我发现根据上游更新原点的唯一方法是首先更新我的本地存储库,然后将其推送到源?
其次,我上游了。但是当我结帐到上游/主服务器或我的本地主服务器,或者尝试合并上游/主服务器和我的本地主服务器时,它总是有这个错误'以下未跟踪的工作树文件将被结帐/合并覆盖'。可能是什么原因?
第三,在github中我可以看到上游存储库有2个分支:master和ASecondBranch,因此origin也有这两个分支要更新。但是在我获取之后,只有上游/主控(可以看到使用'git branch -r'),而我找不到上游/ ASecondBranch。那么如何根据上游更新我的本地和原始ASecondBranch?
提前致谢!
答案 0 :(得分:0)
首先:是的,保持原始数据与上游存储库保持同步的唯一方法是首先从上游获取本地克隆,然后将更改推送到原点。
通常,这最终不是什么大不了的事;如果您正在使用fork来为其他人的项目做贡献,那么您应该将更改保存在您自己的分支中(听起来您已经是这样),并从该分支向上游项目提交拉取请求。如果master
落后于upstream/master
,则无关紧要,因为拉取请求只关心您指定的分支。
如果您已在master
提交了不想保留的提交,则需要reset --hard
到upstream/master
。要在Tortoise,checkout master中执行此操作,使用同步对话框从upstream
获取,打开日志视图,右键单击upstream/master
处的提交,选择“将master重置为此”并选择“hard” 。请注意,下次推动时,您需要选择“强制覆盖”。您可以根据需要重复其他分支。 在您执行此操作之前仔细检查您的日志并确定您可以摆脱您在本地完成的工作!
第二:听起来你的工作副本中有一些你没有上演和提交过的更改。当你使用git时,如果你养成经常提交并保持工作副本干净的习惯,那就容易多了。将更改提交到您所在的分支,存储它们或清除它们。未跟踪的文件应出现在Tortoise的提交对话框中。
第三:这个很奇怪; git fetch
应为您获取的远程中的新分支创建远程跟踪分支。您是否在“同步”对话框中设置了某些内容以仅错误地获取主文件?尝试按名称明确指定远程分支。