remove - git tag用途




Git中作者和提交者之間有什麼區別? (3)

Git Web界面,如GitHub和GitLab

在這樣的系統中,當合併補丁時,作者可能會或可能不會與提交者不同,這取決於回購設置。

由於Git(Hub | Lab)在同一台機器上同時擁有上游和fork存儲庫,因此它可以自動執行您可以在本地執行的任何操作:

  • 創建合併提交。

    不生成author!= committer。

    保持SHA或新提交不變,並創建新提交:

    * Merge commit (committer == author == project maintainer)
    |\
    | * Feature commit (committer == author == contributor)
    |/
    * Old master (random committer and author)
    

    從歷史上看,這是GitHub上第一個可用的方法。

    在本地,這是通過git merge --no-ff

    這會為每個pull請求生成兩個提交,並在git歷史記錄中保留一個fork。

  • master之上變革

    雖然這在原理上並不是強制性的,甚至在git rebase本地默認也沒有,GitHub也會破解設置提交者的提交==無論誰按下合併按鈕。

    這樣做的原因是它給項目維護者帶來了責任。

    git樹現在看起來像:

    * Feature commit (committer == maintainer, author == contributor)
    |
    * Old master (random committer and author)    
    

    這與git apply電子郵件補丁完全相同。

目前在GitHub上:

  • 您可以通過合併按鈕上的下拉列表選擇合併方法
  • 所有者可以在repo設置上啟用或禁用方法

https://help.github.com/articles/about-merge-methods-on-github/


沒有多個作者與該提交相關聯(目前也無法將多個作者分配給單個提交)。 在這種情況下,gliese1337是作者 ,而felixge是提交者 。 最有可能的是,這是因為gliese1337提交了一個拉取請求,該請求被felixhe(存儲庫所有者)接受並提交。 這個工作流程在GitHub上很常見。 這對於項目維護者通過電子郵件收到補丁的情況也很有用,因此補丁的作者本身仍然可以獲得補丁的信用,即使他或她沒有對項目的提交訪問權限。

幾個相關鏈接:

關於作者歸屬的Short Git Wiki部分
Git核心中多個作者功能的功能請求


這不是真正的兩位作者 - 那是作者和提交者。 這兩個領域有不同的含義。 作者是創建內容的人,提交者是提交內容的人。 當你進行正常提交時,你們都是。 (兩者都帶有相關的電子郵件和時間戳。)

但它們可以通過幾種關鍵方式變得不同:

  • git format-patch / git am - 這一對允許你將提交轉換成補丁,通常是通過電子郵件提交,然後讓其他人應用它們。 你仍然是作者; 應用它們的人是提交者。 這絕對是github上發生的事情。

  • git commit --amendgit rebasegit filter-branch - 這些都是歷史重寫的基本變體,從單一提交到分支歷史到整個歷史。 它們可能會修改提交者信息 - 特別是,它們總是重寫提交者時間戳 。 原作者保持原樣(默認操作模式),如果作者也是重寫者,他們的姓名和電子郵件保留,但時間戳自然不同。





github