3

我正在使用 git(基于 Mark Jaquith 的 Wordpress Local Dev 帖子)在本地主机上工作以实现 wordpress 工作流程。我的文件结构看起来像这样

本地开发

  • .git
  • 索引.php
  • .htaccess
  • wp-config.php
  • local-config.php(忽略)
  • 内容/主题/
  • 内容/插件/
  • 内容/上传/(忽略)
  • 核心/(wordpress核心)

我想要做的是从 github 获取最新的 wordpress 并将其放入 core/ 以便升级过程看起来像

rm -rf wordpress
svn export http:// core.svn.wordpress.org/trunk/ wordpress
git add --all wordpress
git commit -m 'Upgrade WordPress' wordpress
git push origin master

但是我花了很多时间弄清楚如何将 Wordpress 放在自己的目录中,而无需

  • 使用svn
  • 使用 git pull 进入 local.dev 并手动将文件移动到 core/ 中。

我错过了什么?

谢谢

4

2 回答 2

3

解决方案

正如安德鲁建议的那样,答案是使用子树合并。

创建个人 WordPress 存储库

我将其用作远程 wordpress 存储库 - diff wordpress 版本的差异分支

#Create new repo as the wordpress parent
mkdir wprepo && cd wprepo
git init
touch README
git add .
git commit -m 'initial commit'

#Add the github mirror as a remote repo
git remote add wordpress git://github.com/markjaquith/WordPress.git

#Get the tags
git fetch -t wordpress

#Merge with the required tag
git merge --squash --no-commit -s recursive -X theirs tags/3.3.2
git commit -m '3.3.2'

本地开发

回到我的本地机器上,我创建了一个 local.dev/ 并将我的远程开发存储库(使用 git --bare init 在 Web 服务器上创建)克隆到其中。然后我使用子树合并来添加 wordpress 存储库。

#Create new repo as the wordpress parent
mkdir local.dev && cd local.dev

#Clone remote development repo
git clone ssh://gituser@remote_server_domain.com/home/gituser/gitrepo .

#Merge remote wordpress repo into core/
remote add -f core ssh://gituser@remote_server_domain.com/home/gituser/wprepo
git merge -s ours --no-commit core/master
git read-tree --prefix=core/ -u core/master
git commit -m 'merging wprepo into core/'

#Push changes to the remote dev repo
git push origin master

可能有一种更简单的方法可以做到这一点(如果你知道,请告诉我。)但它对我有用。步骤从以下来源拼凑而成。


来源

  1. http://jon.smajda.com/2011/07/17/wordpress-and-git/

  2. http://joemaller.com/990/a-web-focused-git-workflow/

  3. http://jasonkarns.com/blog/merge-two-git-repositories-into-one/

于 2012-05-15T13:00:20.907 回答
0

听起来您想使用子树合并: http: //git-scm.com/book/ch6-7.html

于 2012-05-11T14:49:14.930 回答