2013-08-16 134 views
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名更改,我想看看我的登臺服務器。

我該如何得到這個工作?

+0

http://chat.stackoverflow.com/rooms/35621/http-stackoverflow-com-questions-18280962-everythings-up-to-date-everything-isn – rmagnum2002

+0

爲什麼你'git的checkout'輸出外觀比如'git status'?你可以在命令行中使用'git gui'的東西來給我們一個確切的想法,你在做什麼?對於推送,你確定你有一個遠程調用'staging',你想推動你的本地主分支? – michas

+0

我很困惑。 「暫存」遠程還是分支?你似乎正在使用它像兩個... – Ajedi32

回答

1

您的工作流程中缺少一個關鍵步驟:在提交之前添加更改。

在使用git commit之前,運行git add -A將工作目錄中的所有文件添加到您的git倉庫中。或者,您可以使用git add <path-to-file>添加特定文件,或使用git commit -a將所有修改添加到您的git repo。請注意,然而,git commit -a不會添加新文件,它只會添加您對已有文件所做的更改。

如果您想查看您所在的位置,請鍵入git status。紅色文件被更改,不凍結(「暫存」更改等同於「添加」),而綠色文件已被添加。如果git status表示「工作目錄乾淨」,那麼自上次提交以來您沒有做任何更改。

0

確保您經常使用git status(或git status --short)。 每當它顯示更改時,您必須決定是否要保留它們。然後你提交或丟棄它們。 - 之後git status又開心了。 設置有意義的prompt通常非常有幫助。

不要在沒有乾淨的情況下更改分支git status。 (它只工作,因爲兩個分支幾乎相等。)

主要問題似乎是你的推動。 git push要求您指定一個遠程(通常稱爲origin)。如果您真的想將本地臨時分支的內容推送到遠程主服務器,您可以通過git push origin staging:master來完成,但這樣做肯定會使事情變得更加複雜。

您有兩種選擇:或者只使用一個主分支或使用其他分段分支。

  1. 只有主人從遠程主人那裏取得你的更改,這個主人創建(或更新)你的本地主人。然後在本地主服務器上完成提交,並在完成後將本地主服務器推回到應部署它的遠程主服務器。
  2. 通過一個單獨的staging分支,您可以在staging分支上執行更改,將您的本地staging分支推送到遠程staging分支,在那裏您可以部署它是某種臨時區域。如果您對merge的分析結果感到滿意,則可以將分支轉移到主分支,並推送包含所有分段更改的結果主站。
相關問題