使用 git 合并尚未受版本控制的站点

Use git to merge sites that aren't already under version control

我们有一个工作中的网站,我们保留了两个副本 - 一个是实时网站或主副本,另一个是测试/暂存网站,在复制之前进行了重大更改和测试 - 手动时刻 - 到直播网站并发布。

我们刚刚完成了网站结帐大修,这导致创建或修改了大约 40 个文件。

我的问题是:

我们可以创建两个 git 分支,每个站点一个,然后使用 git 生成差异列表并将测试更改合并到实时站点中,即使站点是当前不在版本控制之下吗?

您可以通过为您的网站初始化一个 git 存储库来轻松做到这一点。

cd prod_site
git init
git add -A #You may want to ignore some files like libraries for example, use a .gitignore
git commit -m "Initial prod commit"

现在您的产品站点处于版本控制之下,创建一个分支然后将您的暂存网站复制到它上面。

git checkout -b staging
cp -r /path/to/staging/website .
git commit -am "Staging website"

现在你有两个分支:

  • master 使用您的产品网站
  • staging 使用您的暂存网站

现在您可以使用 git diff

列出两个分支之间的差异
git diff master..staging

是的,你可以做到。

您有多种选择: 但是为什么不使用 beyond compare 呢?


使用分支

# cd to the desired folder
# place the content of the first branch in the folder

# init the folder as git repository
git init

# add all the files in the directory and commit them to stash
git add . -A
git commit 

# create a new branch for the second content
git checkout -b <b2>

# now copy the second content to this folder

# add the content of the second branch to git
git add . -A

# commit the changes
git commit 

正在查看差异

简单的方法是在将第二个分支的内容添加到 git

之前使用 git 状态

在执行此操作之前,请执行上一步:

git状态

# now copy the second content to this folder
git add . -A
git commit 

# display the differences between the branches
git status

或 # 显示当前 HEAD 和等待内容的区别 # 承诺 git 添加 . git 差异

查看更改

您可以通过多种方式查看分支 sin 之间的差异

git log --cc
git log master ^b1
git log ^master b1     
gir format-patch HEAD~1

还有更多...