我能告诉git pull覆盖而不是合并吗?

我能告诉git pull覆盖而不是合并吗?,git,git-pull,Git,Git Pull,据我所知,git pull someremotemaster试图将远程分支合并到我的分支中 有没有办法用git pull说“完全丢弃我的东西,让我再克隆一个遥控器”呢?我仍然希望保留我自己的存储库和它的历史记录,但我希望在该命令之后拥有someRemote主分支的1:1副本 为了澄清,假设有两个存储库,RM和MY。数字是提交,这假设只有一个分支(主分支) RM1---RM2---RM3---RM4---RM5---RM6。。。 | | +->MY1-

据我所知,
git pull someremotemaster
试图将远程分支合并到我的分支中

有没有办法用git pull说“完全丢弃我的东西,让我再克隆一个遥控器”呢?我仍然希望保留我自己的存储库和它的历史记录,但我希望在该命令之后拥有someRemote主分支的1:1副本

为了澄清,假设有两个存储库,RM和MY。数字是提交,这假设只有一个分支(主分支)

RM1---RM2---RM3---RM4---RM5---RM6。。。 | | +->MY1---MY2---MY3-+->MY4---MY5---MY6。。。 因此,我创建了自己的存储库,作为RM1的克隆。然后我快乐地发展,RM快乐地发展,但我们从不分享我们的工作。在MY3之后,我意识到我的分支没有那么好,但是RM4非常好。所以我想
git将
RM4拉入我的。然而,我不希望我在MY1-3中的更改持续存在,我希望MY4是RM4的1:1副本

然而,我希望保留我的历史记录,理想情况下,我希望在MY3和RM4之间或在MY3和RM2-4之间有一个变更集

它应该仍然保留在我的存储库中

可能吗


(这是针对GitHub项目的,我可能会对一个项目进行分叉,尝试一下,让它单独呆上几周,然后想在不保留更改的情况下更新它。目前,我删除我的分叉并重新分叉,这不是最好的方法。)

听起来像是在进行git签出,这将放弃对路径的本地更改

您可以使用签出恢复更改:

git checkout myfile.h
将从索引还原myfile.h


首先,将主分支重命名为其他分支:

git branch -m master my_old_master
然后,创建一个新的主控形状:

git checkout -b master someRemote

Git分支名称的优点在于它们本身不是实际的位置,它们只是指向位置的指针(其中“位置”是SHA1提交id)。

如果您想保留当前主分支,但注册新版本(镜像远程分支),您可以

  • 注册合并筛选器驱动程序(仅用于此合并:)
  • 执行一次git拉取--no commit
  • 检查是否没有需要删除的额外文件(主机中的文件在远程分支中不存在)
  • 承诺

  • 基本上我必须用核弹炸毁我的分行?有没有办法让git神奇地合并这些更改,让它看起来像一个新版本?我想保留我的分支和它的历史记录,我只想使当前版本成为远程服务器当前版本的1:1副本。或者这仍然有效,新主人与旧主人分享历史吗?@Michael:你的改变不会消失;它们仍然存在于
    my\u old\u master
    分支中。如果您只想要一个分支,那么“远程1:1副本”和“保留我的历史记录”的目标是不兼容的。因为修订版SHA1包含所有历史记录的SHA1,所以一个分支与另一个分支不同,除非两个分支中的所有历史记录都相同。Greg,我不会让你的两步流程正常工作。。。在git签出之后,我看到消息
    fatal:git签出:更新路径与交换分支不兼容。你打算结帐吗git@github.com:myProject/myApp.git'无法解析为提交?
    @SomeoneSomewhere:听起来好像您正试图在
    git checkout
    命令中使用该URL。也许您需要执行以下操作:
    git在github上添加远程my_项目git@github.com:myProject/myApp.git
    然后
    git在github上获取我的项目
    最后
    git checkout-b master my_project\u在github/master上
    。我想checkout只会将我的本地工作副本重置为我报告中的最后一个版本。它与遥控器一起工作吗?是的,
    git checkout
    接受commitish参数,因此可以使用
    git checkout origin/foo bar.baz
    git checkout -b master someRemote