如何在GIT上将更改从开发分支上传到远程分支?

时间:2013-12-09 11:58:38

标签: php git cakephp github git-push

我正在使用cakephp网站之一,我使用git作为版本控制器。我有两种不同的分支:

1)发展 2)ui

当我尝试使用此命令将我的最新更改从开发推送到ui分支时: git push web ui ,将显示以下消息。

Counting objects: 43, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (28/28), done.
Writing objects: 100% (29/29), 66.67 KiB | 0 bytes/s, done.
Total 29 (delta 15), reused 0 (delta 0)
remote: Already on 'ui'
remote: ----------------------------------------------------------------
remote: Deployed ui to Leo
remote: ----------------------------------------------------------------
To ssh://git@wasteaccountant.com/srv/git/wa.git
   bdc7d80..01e85ea  ui ->ui

但是当我在git服务器上检查 ui 分支时,该特定分支上没有更新。 但我可以看到我在浏览器中检查时所应用的更改。

更新了问题:

以下是我以前运行的命令的步骤:

1)git status

2)git checkout development //开发分支的名称

3)git add

4)git commit

5)git push //仅在开发分支上推送开发更改

6)git checkout ui // ui branch的名称

7)git merge development

8)git push web ui //推动对ui分支的更改

无论我在开发分支上推动什么,我都可以在git存储库上看到所有更改,但是ui分支没有运气。

注意:如果我使用 git push -f 命令,它将正常工作。对我来说很奇怪!

-------------------------------------------- -------------------------------------------------- ----

任何人都可以建议我该怎么做?或者我在命令中犯了错误?

谢谢!

2 个答案:

答案 0 :(得分:2)

  

当我尝试使用此命令将我的最新更改从开发推送到ui branch时:

git push web ui

将分支推送到另一个分支是:

git push web development:ui

第一次推动:

  • 推送提交,
  • 使用在本地ui分支上完成的新提交更新远程ui提交(这意味着0提交,因为您已在development分支上完成提交)

但是,在您的情况下,在将dev合并到ui后,您正在使用dev提交更新ui分支,因此它应该可以正常工作。

但是:如果它仅在git push -f之后有效,则意味着第一次推送应该因为非快进推送而失败。 在dev之后完成的后续推送(在从uipush -f的又一次合并之后)应该可以正常工作。


  

现在它的工作没有任何其他非常难的命令,但只是使用git push。再次感到奇怪!你知道原因吗?

如果你的本地和repo提交共享相同的历史记录(在git push -f之后应该是这种情况),那么然后任何后续推送都会添加到该历史记录中(不需要强制它) 。
所以这将有效:

git push origin ui

实际上,如果您设置了 upstream branch (通过git push -u origin ui,请使用git config branch.ui.remote进行检查),这样就可以了:

git push

(检查您的 push policy

答案 1 :(得分:1)

尝试在您的服务器上执行git reset --hard。当您推送到远程非裸仓库时,分支不会被检查。执行git reset --hard时,它将删除它在工作目录中看到的所有更改,有效地前进到上次提交。您可以将git reset --hard添加到服务器上的post-fetch挂钩。