从两个现有的独立目录创建分支

时间:2015-11-19 15:59:41

标签: git

到目前为止,我们还没有任何版本控制权。我们有2个版本的应用程序,我们假设它们位于/var/www/demo/var/www/production。其中一个目标是合并它们,所以我想从现有文件创建2个分支:demoproduction,我不知道如何做到这一点。

我已经设法创建了一个repo并将所有文件从一个环境推送到远程裸仓库 - 但是如何在不打开和逐个修改文件的情况下自动添加另一个作为分支?

2 个答案:

答案 0 :(得分:1)

最简单的方法是将最后的生产源复制到单独的文件夹并将其初始化为git repo

cp -av productionsources forgit
cd gorgit
git init .
git add .
git commit -m "initial commit production sources"

现在,您可以为演示源创建分支,并在同一存储库中进行检查。在此之前,您应该删除所有源,但保留.git文件夹。将演示源复制到存储库,然后提交

git checkout -b demo
rm *.c ...
cp -av ../demosources/* .
git add .
git commit -m "initial commit demo sources"

答案 1 :(得分:0)

假设您使用/var/www/production中的文件创建了repo,并且想要创建demo分支,最简单的方法是创建分支并复制演示文件。

cd your_new_repo         
git checkout -b demo              # Start a new branch
rm -rf *                          # Wipe out production files (but not .git/)
cp -R /var/www/demo/* .           # Copy in all demo files
git add -A .                      # Add them to Git
git commit -m 'Import demo files' # Commit them

这个提交实际上是旧的productiondemo目录之间的差异,就好像你打开并修改了每个文件一样,但输入的次数要少一些。因为Git跟踪内容,所以rm -rf销毁但在演示文件中没有更改的文件在复制后不会出现在差异中。add -A选项告诉Git两者都添加了尚未看到的所有文件,并从索引中删除任何已消失的文件,这将处理生产中存在但未在演示中存在的文件。

如果您感到惊讶并且需要重新开始,git reset --hard origin/master(或者您将生产文件放入其中的任何分支)将使您恢复到干净状态。