2012-04-01 32 views
1

我已經開始嘗試通過在我的空閒時間提供小的錯誤修復來貢獻大量(一千萬左右的C++版本),着名的開源項目。這個項目是用Git來管理的,我完全不知道它。我試圖找到如何最好地使用它的信息,但我似乎可以找到的信息是複雜的宗教爭論,比如是否使用git fetchgit pull。任何人都可以簡單地告訴我,爲了促進以下工作流程,我需要執行哪些命令?Git工作流程可用於對大型協作項目進行小改動?

  1. 結帳完整的來源。
  2. 開始使用某些功能或錯誤修復
  3. 繼續每天檢查完整源代碼並將其與我的更改合併到一起。
  4. 生成補丁與我所有的樹和遠程主存儲庫之間的差異
  5. (必要時)回滾自從我上次提交任何修改
  6. (必要時)回滾我的樹和遠程之間的任何差別主存儲庫
+3

這聽起來像答案可以填補一本書。事實上,它已經有:[Pro Git](http://progit.org) – 2012-04-01 20:36:57

+0

哦,我的天啊!我希望有人能夠提供一個可以幫助我快速起牀並運行的答案。如果這太複雜了,我想我必須辭去自己閱讀這本書...... – 2012-04-01 20:37:55

+2

這是一本很好的書。 – 2012-04-01 20:44:09

回答

1
1$ git clone <repository> <directory> 
2$ <edit as you please>  # suggest 'git checkout -b <new branch>' prior to edit 
3$ git pull origin master 
4$ git push origin master # you probably won't have permission for this, ask repo admins 
5$ git reset --hard 
6$ git checkout -b <new branch> origin/master # not a rollback, just leave your stuff and shift to a new branch. 
+0

謝謝!至於4號,通過「生成補丁」我並不是說要推送到版本庫;我的意思是生成一個補丁文件,我可以發送到郵件列表或bugzilla。 – 2012-04-01 21:07:32

+1

嘗試'git diff'(默認創建一個補丁) – GoZoner 2012-04-01 21:09:55

+0

您將需要執行'git pull'以確保您獲得來自'origin'的最新信息,然後'git diff origin/master'生成相關信息差異」 – GoZoner 2012-04-01 21:18:53

4
  1. 結帳完整源。

    git clone git://url

  2. 開始處理一些功能或錯誤修復

    如果您在多個事物同時工作,最好是 使單獨的分支爲每個功能。這些通常被稱爲主題分支 。

    git checkout -b <branch name> <desired base commit>

  3. 繼續日常檢查出完整的源和合並我的變化,使 遠吧。

    如果您使用主題分支,將會執行一個簡單的git pull。相反,如果 你正在掌握(你跳過步驟(2)),那麼我會 推薦使用git pull --rebase。這樣你的工作將基於最初的主人的技巧 。

  4. 生成與所有我的樹和 遠程主存儲庫之間的差異補丁

    一旦你有信心,你已經寫了一個沒有缺陷的特徵(好 好運!),你可以合併更改(如果您正在使用主題分支) by git merge master,解決任何衝突並提交。然後,你可以用

    git format-patch <base commit for your feature>

  5. (必要時)回滾自從我上次提交

    回滾任何變化產生你的補丁,你可以使用git reset <options>。有幾個 選項,我會鼓勵你看看man git-reset因爲 差異是相當微妙的。如果你想完全擺脫你的工作 (你確定嗎?),--hard選項應該做 詭計。另一方面,如果您想用單獨的提交恢復已提交的更改 ,則git revert <commit>是您的朋友。

  6. (必要時)回滾我的樹和 遠程主存儲庫之間的差異

    不知道你的意思是在這裏,但如果你的意思是用最新的變化,從上游更新本地回購 ,我相信(3)解決這個問題。