【问题标题】:Git - Move the contents of a file into another directoryGit - 将文件的内容移动到另一个目录
【发布时间】:2021-03-27 10:06:16
【问题描述】:

如何将一个目录或单个文件的内容移动到另一个目录?

我做了以下git mv Jarryd/movementcommands.c src

得到了这个 fatal: not under version control, source=Jarryd/movementcommands.c, destination=src/movementcommands.c

应该如何移动?

喜欢这个git mv Jarryd/movementcommands.c src/movementcommands.c

【问题讨论】:

    标签: git


    【解决方案1】:

    这两种形式都应该可以工作,但是因为你的源文件不受 git 的控制,你不需要git mv,需要一个简单的移动和添加。 (我假设 Jarryd 和 src 都在你的 git 工作树中。)

    mv Jarryd/movementcommands.c src
    git add src/movementcommands.c
    

    【讨论】:

      【解决方案2】:

      您确定Jarryd/movementcommands.c 文件或src 文件夹被git 跟踪吗?

      你可以试试

      mv Jarryd/movementcommands.c src

      git add src/movementcommands.c
      

      【讨论】:

        【解决方案3】:

        确保源目录和目标目录都受 git 版本控制,如错误消息所述。

        此外,如果您试图将某些内容移出 git 子模块,这可能不起作用。我不认为 git 旨在跟踪这一点。 (如果你不知道这一段是什么意思,它就不适用于你。)

        【讨论】:

          【解决方案4】:

          请注意,在使用 Git 2.29(2020 年第四季度)之前,“git mv src dst(man),当 src 是未合并的路径时,错误输出正确但错误消息不正确声称src 未被跟踪。

          含义 fatal: not under version control 并不总是意味着“未跟踪”。

          参见 Chris Torek (chris3torek)commit 9b906af(2020 年 7 月 20 日)。
          (由 Junio C Hamano -- gitster -- 合并于 commit be2dab9,2020 年 7 月 30 日)

          git-mv: 改进冲突文件的错误信息

          签字人:Chris Torek

          'git mv(man)' 一直抱怨重命名冲突文件,因为它无法处理一个文件的多个索引条目。但是,它使用的错误消息与未跟踪文件的错误消息相同:

          fatal: not under version control, src=...  
          

          这显然是错误的。
          区分这两种情况并添加测试以确保我们生成正确的消息。

          如果您在合并/变基期间移动有冲突的文件,则新的错误消息将是:

          fatal: conflicted
          

          哪个好于:

          fatal: not under version control
          

          不过……

          Git 2.31.1(2021 年第一季度)修复了在不区分大小写的系统上的“git mv(man) 中的一个极端情况错误,该错误是在 2.29 时间范围内引入的。

          2.29/2.30/2.31 问题示例:

          c:\git_CAP\repo_MFW2>git mv mfw2/application/phaseCalc_IQ_Xiong.hpp PC_phaseTest/phaseCalc_IQ_Xiong.hpp
          Assertion failed: pos >= 0, file builtin/mv.c, line 295
          

          参见Torsten Bögershausen (tboegi)commit 93c3d29(2021 年 3 月 1 日)。
          (由 Junio C Hamano -- gitster -- 合并于 commit ef486a9,2021 年 3 月 19 日)

          93c3d297b5:git mv foo FOO; git mv foo bar 给出了一个断言

          报告人:Dan Moseley
          签字人:Torsten Bögershausen

          在不区分大小写的文件系统上,以下序列(严格使用core.ignorecase=true)导致断言失败并留下.git/index.lock

          git init(man) echo foo >foo git add(man) foo git mv(man) foo FOO git mv foo bar

          此回归是在提交 9b906af 中引入的(git-mv:改进冲突文件的错误消息,2020-07-20,Git v2.29.0-rc0 -- mergebatch #1 中列出)。

          修正的问题是将“文件在索引中不区分大小写”更改为正确的“文件在索引中存在(区分大小写)”。

          这避免了代码后面的“断言”,并在下一个 else if 中继续为 ce_stage(ce) 设置“ce”指针。

          这修复了git-for-windows/git issue 2920

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-07-20
            • 1970-01-01
            • 2014-07-18
            • 1970-01-01
            • 2015-12-24
            • 1970-01-01
            相关资源
            最近更新 更多