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
文章列表