将git项目移到文件夹中

时间:2019-02-12 17:29:50

标签: git

我在一个文件夹中有一个git项目,我想将此文件夹添加到我的git projet中,但不希望在同一父文件夹中添加其他文件夹。所以我不能只在父文件夹中启动新的git并推送,因为folder_1也将被添加。

folder_2包含用于应用程序的插件,并且必须将其命名为“ folder_2”。因此,当有人从git下载文件时,我希望他有一个带有文件夹文件的“ folder_2”文件夹。

现在folder_2 content 位于git中:

parent_folder
|_ folder_1
|_ folder_2
   |_ .git
   |_ machin.html => in git
   |_ truc.html => in git
   |_ bidule.html => in git

我想要的是git中的folder_2本身,但是没有folder_1:

parent_folder
|_ .git
|_ folder_1 => NOT in git
|_ folder_2 => in git
   |_ machin.html => in git
   |_ truc.html => in git
   |_ bidule.html => in git

我尝试在parent_folder中初始化新git,并仅在新分支中添加folder_2。但是我现在不能合并:

$ git push -u origin master
To https://gitlab.......git



 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://gitlab........git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

注意:--force不起作用。

3 个答案:

答案 0 :(得分:2)

UPDATE -从最初的问题尚不清楚,OP是否想在现有存储库中移动路径,而不是像以前暗示的那样创建新的存储库< / p>


好吧,实际上,您可以仅在父文件夹中git init-因为只有您暂存(通过git add)和提交的文件会被推送-如果您创建一个新的仓库。由于您正在修改现有的存储库,因此尽管仍然可以使该工作更简单,但使用另一种方法更简单:

首先,清除索引

cd .../parent/folder2
git rm --cached -r .

然后移动.git文件夹

cd ..
mv folder2/.git .

重新填充索引并提交

git add folder2
git commit

然后,您可能希望使用忽略规则来防止意外添加folder1

((如果排除在仓库的更广泛的上下文中“有意义”,或者如果.gitignore的存在,则可以将忽略规则放在工作树根的folder1中)实际上只是该特定机器上的一件事,您可以将排除项放在git/info/exclude

但是,除非在回购中包含parent(或parent的其他子目录)级别上的其他内容,否则要让回购的顶层文件夹包含一个名为folder2的条目;我真的想不出任何理由不仅仅根据问题中提供的信息从folder2中创建回购。

答案 1 :(得分:0)

最后,我在parent_folder中初始化一个新的git,拉出,删除所有内容,将folder_2放在parent_folder中,“添加”,提交并推送。因此本地和远程都具有parent_folder> folder_2,仅此而已。 之后,将还原parent_folder的内容,现在,将其“添加文件夹_2”在推送之前。

也许不是最优雅的解决方案,但可行。

答案 2 :(得分:-1)

  1. 转到parent_folder/folder_2
  2. folder_2中创建parent_folder/folder_2目录
  3. 将所有内容从parent_folder/folder_2移至parent_folder/folder_2/folder_2
  4. parent_folder/folder_1复制到parent_folder/folder_2
  5. 执行git add --all . && git commit -m "Import folder_1"
  6. 执行git push
  7. 将所有内容(不要忘记.git/)从parent_folder/folder_2移到parent_folder。使用git push
  8. 验证结果