我有一个分支 A 并想列出一个对其进行重大更改的列表。这些更改的最终结果已经存在于目录 B 中,我也想成为新的工作副本。从本质上讲,我只想“将此目录设为我的分支的最新工作副本”。
我目前知道有两种可能性来实现这一目标:
- 将 A 签出到临时目录 C,删除除“.git”之外的所有内容,将目录 B 的内容复制到 C,然后从目录 C 添加/提交/推送。最后,将 C 的全部内容移回 B。
- 克隆存储库而不签出到临时目录 C,将“.git”目录从 C 移动到 B。从 B 中添加/提交/推送。
这两种解决方案的问题,除了非常笨拙之外,还需要目录 B 和 C 的磁盘空间。选项 1 还涉及更多的文件混洗。所以目前我对此的最佳解决方案是选项 2,详细步骤如下。
我想有一个更好的方法可以使用“reset”或“symbolic-ref”来做到这一点。我尝试了各种选择但没有成功。
mkdir /tmp/git_output
cd /tmp/git_output
git init
git remote add origin /path_or_url_to/git/repo.git
git fetch
git checkout name_of_branch
mv .git /path/to/new/src/
cd /path/to/new/src/
git commit -a
git push
rm -rf /tmp/git_output
谢谢你的帮助。