## 向一個項目提交補丁
如果你只做了少量的改動, 最簡單的提交方法就是把它們做成補丁(patch)用郵件發出去:
首先, 使用[git format-patch](http://www.kernel.org/pub/software/scm/git/docs/git-format-patch.html); 例如:
~~~
$ git format-patch origin
~~~
這會在當前目錄生成一系統編號的補丁文件, 每一個補丁文件都包含了當前分支和origin/HEAD之間的差異內容。
然后你可以手工把這些文件導入你的Email客戶端. 但是如果你需要一次發送很多補丁, 你可能會更喜歡使用[git send-email](http://www.kernel.org/pub/software/scm/git/docs/git-send-email.html)腳本去自動完成這個工作. 在發送之前, 應當先到項目的郵件列表上咨詢一下項目管理者, 了解他們管理這些補丁的方式。
## 向一個項目中導入補丁
Git也提供了一個名為[git am](http://www.kernel.org/pub/software/scm/git/docs/git-am.html)的工具(am是"apply mailbox"的縮寫)去應用那些通過Email寄來的系列補丁. 你只需要按順序把所有包含補丁的消息存入單個的mailbox文件, 比如說"patches.mbox", 然后運行
~~~
$ git am -3 patches.mbox
~~~
Git會按照順序應用每一個補丁; 如果發生了沖突, git會停下來讓你手工解決沖突從而完成合并. ("-3"選項會讓git執行合并操作; 如果你更喜歡中止并且不改動你的工作樹和索引, 你可以省略"-3"選項.)
在解決沖突和更新索引之后, 你不需要再創建一個新提交, 只需要運行
~~~
$ git am --resolved
~~~
這時git會為你創建一個提交, 然后繼續應用mailbox中余下的補丁.
最后的效果是, git產生了一系列提交, 每個提交是原來mailbox中的一個補丁, 補丁中的作者信息和提交日志也一并被記錄下來。
- 1. 介紹
- 歡迎使用Git
- GIT對象模型
- Git目錄 與 工作目錄
- Git索引
- 2. 第一步
- 安裝Git
- 安裝與初始化
- 3. 基本用法
- 獲得一個Git倉庫
- 正常的工作流程
- 分支與合并@基礎
- 查看歷史 -Git日志
- 比較提交 - Git Diff
- 分布式的工作流程
- Git標簽
- 4. 中級技能
- 忽略某些文件
- rebase
- 交互式rebase
- 交互式添加
- 儲藏
- Git樹名
- 追蹤分支
- 使用Git Grep進行搜索
- Git的撤消操作 - 重置, 簽出 和 撤消
- 維護Git
- 建立一個公共倉庫
- 建立一個私有倉庫
- 5. 高級技能
- 創建新的空分支
- 修改你的歷史
- 高級分支與合并
- 查找問題的利器 - Git Bisect
- 查找問題的利器 - Git Blame
- Git和Email
- 定制Git
- Git Hooks
- 找回丟失的對象
- 子模塊
- 6. Git生態體系
- Git 與之 Windows
- 使用Git進行系統部署
- 與 Subversion 集成
- 從其他代碼管理工具遷移到Git
- 圖形化的Git
- Git倉庫托管
- Git的其它用法
- Git的腳本支持
- Git 與編輯器
- 7. 原理解析
- Git是如何存儲對象的
- 查看Git對象
- Git引用
- Git索引
- 打包文件
- 更底層的Git
- 傳輸協議
- 術語表