4

所以,我一直试图让我的暂存分支整天工作,但我错过了一些东西。

这是事件链:

git branch 
develop
*master
staging

做一些改变

git checkout staging
M   app/views/comments/index.html.erb
M   app/views/devise/registrations/new.html.erb
M   app/views/devise/sessions/new.html.erb
M   app/views/layouts/application.html.erb
M   app/views/songs/contact.html.erb
M   app/views/songs/faq.html.erb
M   app/views/songs/index.html.erb
M   app/views/songs/new.html.erb
M   app/views/songs/new_songs.html.erb
Switched to branch 'staging'

git gui (git commit and then git push staging)
git checkout master
git push staging master (deployment)

Everything up-to-date

一切都不是最新的,我只是做了 10 处我希望在我的登台服务器上看到的更改。

我怎样才能得到这个工作?

4

2 回答 2

1

您的工作流程中缺少一个关键步骤:在提交更改之前添加更改。

在使用之前git commit,运行git add -A以将工作目录中的所有文件添加到您的 git 存储库中。或者,您可以使用git add <path-to-file>添加特定文件,或使用git commit -a将所有修改添加到您的 git 存储库。请注意,但这git commit -a不会添加新文件,它只会添加您对预先存在的文件所做的更改。

如果您想查看您所在的位置,请键入git status。红色文件已更改,未暂存(“暂存”更改相当于“添加”它),而绿色文件已添加。如果git status说“工作目录干净”,那么自上次提交以来您没有进行任何更改。

于 2013-08-16T20:15:53.253 回答
0

确保您经常使用git status(或)。git status --short每当它显示更改时,您必须决定是否要保留它们。然后你提交它们或丢弃它们。- 后来git status又开心了。设置一个有意义的提示通常很有帮助。

不要在没有干净的情况下更改分支git status。(这只是因为两个分支几乎相等。)

主要问题似乎是你的推动。git push要求您指定一个遥控器(通常称为origin)。如果您真的想将本地暂存分支的内容推送到远程主服务器,您可以通过 来完成git push origin staging:master,但这肯定会使事情变得更加复杂。

你有两种选择:要么只使用一个主分支,要么使用一个额外的暂存分支。

  1. 只有 master 您从远程 master 中提取更改,远程 master 创建(或更新)您的本地 master。然后你在本地 master 上进行提交,完成后将本地 master 推送回远程 master,远程 master 应该部署它。
  2. 使用单独的暂存分支,您可以在暂存分支上进行更改,将本地暂存分支推送到远程暂存分支,您可以将其部署为某种暂存区域。如果您对结果感到满意,您可以merge将 staging 分支转移到 master 分支,并将生成的 master 现在包含所有 staging 更改。
于 2013-08-18T08:15:53.790 回答