我应该git mv还是只是mv我从另一个目录中挑选/重新存储的文件?

问题描述 投票:0回答:1

我有一些csv文件,我会定期对其进行修改,它们实际上并不包含任何敏感信息,它们只是用作程序中的导入,我会根据要求对其进行修改。

最近,我发现了一种处理更改的更有效方法,但是我在项目外部的临时git存储库上对其进行了测试。

由于此操作成功完成,所以现在我想将git cherry-pick设置为range of changes,所以首先我将临时git repo添加为项目的远程。

# In my project I added a remote of the test repo with 
# a copy of the csv's in the HEAD of my main project.
git remote add tempchanges <path-to-test-repo>

# Created a new branch in my project to test this out in.
git checkout -b new/9_30_2019

# Cherry-picked the changes from the remote test repo, but they ended up in the root of the project.
git cherry-pick <start-commit-in-test-repo>..<head-commit-in-test-repo>

# Started a rebase
git rebase -i <start-commit-in-test-repo>~1

# (`edit`ed each commit in the rebase)

(事后看来,我认为这是一个错误,我应该在现有项目中剪切另一个分支,但是我离题了)

临时存储库只有一个master分支,并且所有工作都在一系列提交中的项目根目录中完成。

[当我将cherry-pick更改到我的项目以及本地分支中时,csv文件都以我项目的根目录结尾,但是它们却属于我项目的src/csv文件中,所以我已经决定从提交范围的开头(减去1个提交)开始进行交互式rebase并进行每次编辑,以使更改显示在我项目的src/csv目录中的存储库中,而不是在根目录中。

但是我的问题是,如果要执行此操作,应该使用git mv移动文件还是仅使用标准bash mv命令,然后使用重新设置重新应用每个更改,并在其中添加相应的提交消息临时项目。

到目前为止,我已经尝试过git mv -f在第一次提交时移动文件,而在运行git rebase --continue之前提交它们时,甚至都没有提到更改。

还有什么我需要做的才能使此过程更加顺利,并且我假设我应该使用mv而不是git mv -f,因为更改似乎是在提交之前以这种方式显示的。

我也想保留提交消息,而不必从旧仓库中的日志中复制它们。

git git-rebase git-remote git-cherry-pick git-mv
1个回答
0
投票

git mv没什么神奇的。 Git不会记住重命名,而是从文件内容中推导出它们。您可以使用git mv或使用mv,然后使用git add进行更改。

git mv some.csv src/some.csv

相当于

mv some.csv src/some.csv
git add some.csv src/some.csv

“添加”已删除的文件有点奇怪。您正在将更改“添加”到登台区域,此更改恰巧是在删除文件。


您正在进行的将文件移动到子目录的更改,可以通过git filter-branch一次完成。

git filter-branch
© www.soinside.com 2019 - 2024. All rights reserved.