文章出處

Pull Request

Pull Request 是自己修改源代碼后,請求對方倉庫采納該修改時采取的一種行為。

 

場景1:

用戶A在fork完用戶B的項目時,A修改了代碼并提交了一個Pull Request給B用戶,B用戶Merge了A用戶提交的Pull Request。

 

假設需要fork以下項目:

https://github.com/grey927/TestForkPR

點擊賬戶右上角的fork按鈕,fork項目到自己賬戶下

打開Git Bash

將項目clone到本地:

$ git clone https://github.com/GreyZeng/TestForkPR.git

Cloning into 'TestForkPR'...

remote: Counting objects: 3, done.

remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0

Unpacking objects: 100% (3/3), done.

Checking connectivity... done.

 

 

進入TestForkPR目錄,查看分支狀態:

$ git branch -a

* master

remotes/origin/HEAD -> origin/master

remotes/origin/master

 

 

 

在TestForkPR目錄下增加一個文件,T.java

增加到暫存區

$ git add T.java

 

 

提交修改:

$ git commit -m "this is test"

[master 2b72d0f] this is test

1 file changed, 5 insertions(+)

create mode 100644 T.java

 

 

 

Push到自己賬戶下的遠程倉庫下:

$ git push -u origin master

Counting objects: 3, done.

Delta compression using up to 4 threads.

Compressing objects: 100% (3/3), done.

Writing objects: 100% (3/3), 345 bytes | 0 bytes/s, done.

Total 3 (delta 0), reused 0 (delta 0)

To https://github.com/GreyZeng/TestForkPR.git

daaf13f..2b72d0f master -> master

Branch master set up to track remote branch master from origin.

 

 

 

打開自己賬戶的遠程倉庫,點擊New Pull Request按鈕:

彈出文件差異對比界面

確認無誤時,點擊Create pull request

寫上相關描述并點擊Create pull request:

 

此時,原倉庫會收到一條pull request的信息:

點擊進入這條信息,

點擊Merge pull request,即可接受這個pull request的請求。

 

 

 

場景2:

直接clone原倉庫到本地,不執行fork操作,并同時使用fetch/merge命令使本地倉庫和原倉庫保持代碼一致。

 

舉例:

原倉庫的地址:https://github.com/grey927/TestFetchMerge

 

直接clone至本地:

$ git clone https://github.com/grey927/TestFetchMerge.git

Cloning into 'TestFetchMerge'...

remote: Counting objects: 3, done.

remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0

Unpacking objects: 100% (3/3), done.

Checking connectivity... done.

 

 

給原倉庫設置upstream的名稱,將其作為遠程倉庫。

$ git remote add upstream https://github.com/grey927/TestFetchMerge.git

 

 

我們每次只要從原倉庫獲取最新源碼,并和本地分支進行合并即可:

獲取最新源碼:

$ git fetch upstream

remote: Counting objects: 3, done.

remote: Compressing objects: 100% (2/2), done.

remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0

Unpacking objects: 100% (3/3), done.

From https://github.com/grey927/TestFetchMerge

* [new branch] master -> upstream/master

 

 

 

合并:

$ git merge upstream/master

Updating e2215cc..a215a8a

Fast-forward

newfile.txt | 1 +

1 file changed, 1 insertion(+)

create mode 100644 newfile.txt

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()