git:在现有文件上签出分支而不覆盖它们

git:在现有文件上签出分支而不覆盖它们,git,Git,我们正在将存储库从另一个SCM移动到git。这本身不是问题,但我需要向我的用户提供简单的说明,说明check如何迁移他们的存储库克隆(请记住,我的大多数用户都不是程序员,只有非常基本的终端知识) 我希望迁移可以按如下方式进行: 转到包含签出文件的文件夹 运行git init 连接到远程存储库git远程添加源URL 同步数据git fetch 签出文件git checkout master 现在,我的问题是第5步,因为git抱怨“未跟踪的工作树文件将被签出覆盖”。我是否可以强制它签出分支而不覆盖文

我们正在将存储库从另一个SCM移动到git。这本身不是问题,但我需要向我的用户提供简单的说明,说明check如何迁移他们的存储库克隆(请记住,我的大多数用户都不是程序员,只有非常基本的终端知识)

我希望迁移可以按如下方式进行:

  • 转到包含签出文件的文件夹
  • 运行
    git init
  • 连接到远程存储库
    git远程添加源URL
  • 同步数据
    git fetch
  • 签出文件
    git checkout master
  • 现在,我的问题是第5步,因为git抱怨“未跟踪的工作树文件将被签出覆盖”。我是否可以强制它签出分支而不覆盖文件(例如,将文件中的任何差异视为签出后应用的本地更改)?我当前的SCM将正确地检测哪些文件是不同的,哪些文件实际上会被覆盖,并要求用户选择要做什么——我希望git具有类似的功能


    基本上,我想告诉git“你现在正在进行最新的主签出,不要对文件做任何事情”。有没有一种理智的方法来实现它?当然,我可以随时要求我的用户制作另一个克隆并在上面复制他们的旧文件,但如果可能的话,我希望避免这样做

    您可以尝试以下操作,而不是
    git checkout master

    git reset origin/master
    

    然后指导他们如何检查差异。

    代替
    git checkout master
    ,您可以尝试:

    git reset origin/master
    

    然后指导他们如何检查差异。

    您不能/不想这样做,因为未跟踪的文件可能会被Git覆盖,或者它们保持不变,然后它们与新分支/回购不同步。您不能/不想这样做,因为未跟踪的文件可能会被Git覆盖,或者它们保持不变,然后与新分支/回购不同步。不幸的是,这会将所有文件标记为已删除。。。基本上,它停止跟踪文件。不知道为什么。嗯,然后试试简单的
    git重置
    (这是
    --混合
    的快捷方式,而且它也不会修改磁盘上的文件)--唯一要避免的是:
    git重置--hard
    成功了。真不敢相信我没试过:)谢谢!不管怎样,您可能希望让他们运行“添加所有文件”(
    git add-a
    ),不幸的是,这会将所有文件标记为已删除。。。基本上,它停止跟踪文件。不知道为什么。嗯,然后试试简单的
    git重置
    (这是
    --混合
    的快捷方式,而且它也不会修改磁盘上的文件)--唯一要避免的是:
    git重置--hard
    成功了。真不敢相信我没试过:)谢谢!无论如何,您可能希望他们在之后运行“添加所有文件”(
    git add-a