git: how to merge commits from a remote to a different path?

对着背影说爱祢 提交于 2019-12-12 08:53:39

问题


I have a git repository with remote foo.

foo is a web app, is contains some files and dirs directly in its root:

Rakefile
app
...
public
script

My main git repository is a larger system which comprises this web app. I want to pull the commits from foo, but I need the files to reside inside the web dir. So they should become web/app, web/public, etc.

I don't want to use foo as a submodule. I want to merge foo into the main repository and then get rid of it.


回答1:


Here's a community-wiki version of your answer if you'd like to accept it as the answer.


This answers my question:

http://www.kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html




回答2:


This answers my question:

http://www.kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html




回答3:


The up-to-date resources for subtree merging are:

  • Git Book chapter6.7
  • How to use the subtree merge strategy
  • GitHub article "Working with subtree merge"

Cite from How to use the subtree merge strategy:

In this example, let’s say you have the repository at /path/to/B (but it can be an URL as well, if you want). You want to merge the master branch of that repository to the dir-B subdirectory in your current branch.

Here is the command sequence you need:

$ git remote add -f Bproject /path/to/B
$ git merge -s ours --no-commit Bproject/master
$ git read-tree --prefix=dir-B/ -u Bproject/master
$ git commit -m "Merge B project as our subdirectory"

$ git pull -s subtree Bproject master

See also for comments the article "Subtree merging and you".



来源:https://stackoverflow.com/questions/266245/git-how-to-merge-commits-from-a-remote-to-a-different-path

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!