2012-07-29 87 views
13

我想對我的git工作流程提供一些反饋,因爲這是我第一次使用它,儘管閱讀了各種文章和Stack Overflow問題,但我不確定我的過程是否正確。這是我目前的工作流程(請注意,我正在使用Github for Windows應用程序進行所有git交互):單個開發人員的Github工作流程

  1. 決定我要實現的下一個功能。
  2. 爲該功能創建一個具有適當描述性名稱的分支。我通過單擊Github for Windows中的分支按鈕並輸入新名稱來完成此操作。
  3. 編寫一些代碼。
  4. 將這些更改提交給我的新分支。
  5. 再寫一些代碼。
  6. 將這些更改提交給我的新分支。
  7. 我已完成實現該功能,所以我想將我的更改合併回主分支。所以我點擊分支標題下的'管理'按鈕。
  8. 將新分支合併到主分支中。
  9. 刪除新分支。

我很高興直到第7步的過程,在這一點上我有點困惑。我認爲我的困惑在於我試圖使用Github for Windows應用程序而不是使用命令行。這個應用似乎讓事情變得更簡單了,但是在我看到的一些命令/指令和你在應用中採取的操作之間存在一些斷開。

讓我問一些具體的問題:

  1. 是我的工作流程實際上是正確的?如果沒有,它有什麼問題,我該如何改進?
  2. 我應該將我的更改「發佈」到新分支嗎?我的理解是,這相當於在命令行上執行git push。真的嗎?如果是這樣,我想我只是想在我完成實現該功能或者處於體面狀態時這麼做?
  3. 我是否應該在刪除分支時將其合併到主分支中,還是應該一直保留下來?
  4. 我是否需要在完成合並時發佈主分支,還是隱式的?
  5. 我有時無法執行合併,並得到這個錯誤信息:

    無法合併

    未能「測試」合併到「主人」。你可能需要打開一個shell並調試這個repo的狀態。

發生這種情況時之前,我能夠但是切換到主分支和合並新分支到主分支不再起作用。無論我在哪個分支,我都不能合併這兩個分支。兩者都是同步的,我已經發布了來自我的測試分支的所有更改。我應該在shell中輸入什麼來找出爲什麼我不能合併分支?

供參考,這些都是促使我的過程中的主要環節:

  1. Scott Chacon on the workflow at Gitub
  2. Git workflow for a single developer on a local repository
  3. Git workflow for a single user

回答

4

你所描述的像一個普通的分支工作流的聲音那是什麼即使是在同一代碼基礎上的多個開發人員也能很好地工作。它幾乎完全覆蓋了git flow,它是git命令行的擴展,可以自動執行某些步驟。值得一試。

我不喜歡git的UI工具。我大部分時間都在使用命令行。所以我沒有使用GitHub for Windows的經驗。但我敢打賭,你的問題是因爲你的合併不再是快速的。這需要手動合併步驟(afaik)不在工具範圍內。

沒有充分的理由在合併到上游之後保持分支機構。但其中一個是跟蹤哪些提交進入了某個特性。如果您決定保留它們,我會建議發佈這些分支。你不依賴於你本地機器上的代碼。爲了保持分支不會讓你的倉庫更大,但會污染視線。無論如何,大多數時候提交都存在於上游分支中。

你將不得不發佈(推送)master分支,在合併後

要熟悉Git的命令行工具,我建議先從Introduction to Git and GitHub從GitHub的傢伙,並按照他們的鏈接引用更多細節。

希望能幫助

+0

謝謝 - 很高興知道我在正確的軌道上!儘管我仍然對分支感到困惑,但我認爲這正是我的頭痛源頭。當我在Github for Windows中創建一個新的分支時,我應該期望它會在某處創建一個新目錄嗎?因爲如果它不是,那麼我不只是編輯我的主分支中的代碼? – Stu 2012-07-29 16:36:18

+0

Git將所有內容都存儲在.git文件夾中的一堆deltas中。所以當你創建一個新的分支時,就像你正在處理你的主/克隆分支的副本。但它都在同一個文件夾中(提交一些更改並翻轉分支並重新打開文件以查看)。注意你已經簽出了哪一個分支,因爲開始編寫一堆東西可能很容易,忘記了你沒有切換分支,最終承諾掌握主而不是功能分支。這就是藏在裏面的方便用具。 – yellottyellott 2012-07-30 15:22:35

+0

很抱歉,不接受這個作爲我的問題的答案更快,有些我似乎錯過了你的最後一條評論,它回答了我所有的問題。非常感謝! – Stu 2012-08-11 08:55:20