我在一个文件夹中有一个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不起作用。
答案 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)
parent_folder/folder_2
folder_2
中创建parent_folder/folder_2
目录parent_folder/folder_2
移至parent_folder/folder_2/folder_2
parent_folder/folder_1
复制到parent_folder/folder_2
git add --all . && git commit -m "Import folder_1"
git push
.git/
)从parent_folder/folder_2
移到parent_folder
。使用git push