将远程合并到 git 项目的本地子目录

Merge remote into local subdirectory of a git project

我有以下情况:本地、分支和自定义的 git 项目没有维护源的文件夹结构。

~/dwm/dwm/* and ~/dwm/dwmstatus/* 是我的 git 项目的新结构。

我现在想将最新的源修补到我的本地存储库中。我 git remote add http://git.suckless.org/dwm/ 拉了一把。

发生的情况是拉动忽略了子目录(它一开始应该怎么知道)并完全拉入 ~/dwm/*.

问题:如何从源远程合并到 ~/dwm/dwm/* 子文件夹? 我尝试了什么: git checkout HEAD dwm/ 然后执行拉动。这并没有起到作用,因为目录已经是最新的了。

从你的描述中不清楚你采取的行动顺序。但是,如果您的分叉回购(我们称之为 fork)严格领先于您的原始回购(我们称之为 original),则将其设置为本地回购中的新远程并从中拉出应该有复制重组。

工作示例:

## Create original repo ##
git init original
cd original
echo "a" > a.txt
echo "b" > b.txt
git add .
git commit -m "Initial commit"
cd ..

## Clone the original (this is your local copy) ##
git clone original local

## Emulate fork with restructured content ##
cp -r original fork
cd fork
mkdir c d
mv a.txt c
mv b.txt d
git add .
git commit -m "Move stuff around"
cd ..

## Add the fork as a remote and pulling ##
cd local
git remote add fork ../fork
git pull fork master