我想將幾個目錄從一個git項目移動到另一個目錄,以保留它們的歷史記錄。問題是,我看到的所有例子似乎都顯示瞭如何將目錄提取到其自己的git項目中,並使用git filter-branch
保存歷史記錄。如果目標存儲庫已經有其他版本化的文件(不與以任何方式移動的文件相沖突),是否可以將這些目錄從一個存儲庫移動到另一個存儲庫,並保留其歷史記錄?將多個目錄從一個git項目移動到另一個,保留它們的歷史
難道有人請告訴我一個如何做到這一點的例子嗎?謝謝!
我想將幾個目錄從一個git項目移動到另一個目錄,以保留它們的歷史記錄。問題是,我看到的所有例子似乎都顯示瞭如何將目錄提取到其自己的git項目中,並使用git filter-branch
保存歷史記錄。如果目標存儲庫已經有其他版本化的文件(不與以任何方式移動的文件相沖突),是否可以將這些目錄從一個存儲庫移動到另一個存儲庫,並保留其歷史記錄?將多個目錄從一個git項目移動到另一個,保留它們的歷史
難道有人請告訴我一個如何做到這一點的例子嗎?謝謝!
回答我的問題與這個小腳本我在bash敲起來(請確保您先閱讀它,並已備份的文件):
#!/bin/bash
gitURL=$1
project=$2
srcProjectBaseDir=$3
destProjectBaseDir=$4
# Remove stale checkouts in order to do a clean clone
rm -rf ${srcProjectBaseDir}
git clone --no-hardlinks $gitURL ${srcProjectBaseDir}
cd ${srcProjectBaseDir}
git remote rm origin
# These make sure your extracted module is called as the directory's name.
# If this is of no interest to you, comment out these three lines and you
# should be alright.
mkdir temp
git add temp
git mv ${project}/ temp/
git commit -m "Refactoring: Isolated files for filter-branch."
git filter-branch --subdirectory-filter temp HEAD
git add .
git commit -m "Refactoring: Filter branched."
if [ ! -d ${destProjectBaseDir} ]; then
mkdir ${destProjectBaseDir}
cd ${destProjectBaseDir}
git init
cd ..
fi
cd ${destProjectBaseDir}
git remote add repositoryAbranch ${srcProjectBaseDir}
git pull repositoryAbranch master
git remote rm repositoryAbranch
這個腳本是基於大多數指令看到here (有幾個補充)。
這不起作用。 'git filter-branch'消除了所有的歷史。 –
請指定您希望合併歷史記錄的外觀如下:按日期排序的提交,一個接一個的項目,...? – krlmlr
@krlmlr:你能告訴我兩個例子嗎?我認爲按日期會很好。 – carlspring
我的評論只是指出了問題規範中的一個小故障。這是否有助於你:http://stackoverflow.com/q/1425892/946850? – krlmlr