10

好的,这是场景:

  • 在 github 上托管代码 - 推送到origin
  • 对于部署 - 推送到deploy (bluehost 上的裸仓库,它有一个钩子可以推送到 www 文件夹以供所有人查看站点)

因此,工作流程将是这样的,因为我在两个不同的位置工作:

  • 从 github 拉最新(在不同位置进行的更改并在前一天晚上推送)
  • 在本地工作并提交更改
  • 推送到origin (github)
  • 一切都好之后需要这个东西在线,所以master被推送到deploy (bluehost)

还在我这儿?

这已经工作了一段时间,对我来说太棒了

然后我在游泳池里撒尿

我不小心将文件 ftp'​​d 到 bluehost (sublime sftp 已启用),现在当我尝试将deploy最新和最好的推送到 bluehost 时,我收到所有内容都是最新的错误,如果我进行了一些更改,请执行新的commit然后推送,我得到这样的错误,这样的文件将被合并,提交或存储覆盖......

本地 repo 和 git repo 都在检查中,是 bluehost 搞砸了。

请帮我解决这个问题。 我试过用谷歌搜索这个并在这里阅读其他帖子,但一切似乎都不能解决我的问题。我试过push --force但无济于事。

任何想法都会很棒。或者我应该删除整个 bluehost 文件夹并从一个全新的 git repo 重新开始以再次获取 copacci 吗?

编辑: 从 git 输出

C:\xampp\htdocs\www\testingboard>git status
# On branch master
nothing to commit, working directory clean

C:\xampp\htdocs\www\testingboard>git push deploy master
danferth@danferth.com's password:
Everything up-to-date

对单个文件进行编辑(index.php

C:\xampp\htdocs\www\testingboard>git add -A

C:\xampp\htdocs\www\testingboard>git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   index.php
#

提交对 index.php 的更改

C:\xampp\htdocs\www\testingboard>git commit -m "added mobile variable to index.p
hp"
[master e0be437] added mobile bariable to index.php
1 file changed, 5 insertions(+)

推送到 github(有效)

C:\xampp\htdocs\www\testingboard>git push origin master
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 353 bytes, done.
Total 3 (delta 2), reused 0 (delta 0)
To https://github.com/danferth/breadBoard.git
9e9f3c1..e0be437  master -> master

push to deploy(注意其他被 ftp 的文件也在那里)

C:\xampp\htdocs\www\testingboard>git push deploy master
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 353 bytes, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: From /home4/danferth/git/breadboard
remote:    9e9f3c1..e0be437  master     -> origin/master
remote: error: Your local changes to the following files would be overwritten by
merge:
remote:         .sass-cache/6329d896b0dd00f287815f75641600307d9f0023/css_didI.sc
ssc
remote:         _START/pageTitle.php
remote:         assets/custom_css/css_didI.css
remote:         assets/custom_css/css_didI.scss
remote:         content/p_didI.php
remote:         didI.php
remote:         index.php
remote:         template.php
remote: Please, commit your changes or stash them before you can merge.
remote: Aborting
remote: Updating 0dc9e3d..e0be437
To danferth@danferth.com:~/git/breadboard.git
9e9f3c1..e0be437  master -> master

C:\xampp\htdocs\www\testingboard>
4

1 回答 1

1

在部署服务器上,使用 shell 访问并转到 www 文件夹(git repo checkout)。然后用于git status获取不同步的文件列表。然后使用git checkout -- <paths>从 git repo 中恢复这些文件,使它们恢复同步。然后你应该可以git pull在服务器上,或者只是git push deploy你的本地更改。

由于您使用的是提交后挂钩,因此更改已经存在于部署服务器上的裸仓库中,但尚未出现在签出的 www 位置中。所以git pull那里应该让你的网络服务器保持最新。

于 2013-06-03T23:01:05.203 回答