如果你在 github 上 clone 了別人的項目,在本地做了一些修改後,直接git push肯定會遇到問題。因爲你提交的遠程倉庫是別人的倉庫。
如何把 clone 後修改的代碼提交到自己的 github 上呢?
方法一:
- 修改
.git/config
這個文件,把url
換成自己新建的倉庫地址
方法二:
- 先 fork 別人的代碼,在你的 github 上就出現了同名的項目,這個項目就屬於你自己了,然後把這個項目
git clone
到本地,改改改,然後git push
即可
你 fork 了別人的項目之後,他更新了代碼,你 fork 的項目如何與原項目同步更新?
方法一:(最簡單的方法)
-
遠程倉庫執行
fork
操作,得到自己的url
-
git clone url
到本地 -
配置遠程分支:
git remote add upstream [fork項目的地址]
-
運行
git remote -v
,會出現:origin https://gitee.com/phpzhi/testPro.git (fetch)
origin https://gitee.com/phpzhi/testPro.git (push)
upstream https://gitee.com/opan/testPro.git (fetch)
upstream https://gitee.com/opan/testPro.git (push) -
執行
git fetch upstream
拉取遠程倉庫的代碼 -
合併拉取的代碼
git merge upstream/master
-
上傳
git push
方法二:讓原項目的作者把你加入該項目的成員,即可對該項目進行各種騷操作(廢話。。)
方法三:
- 首先
git clone
原項目到本地 - 在 github 上
fork
該項目,這時有了自己的倉庫地址url
- 執行
git remote add name url
,name 是你的倉庫別名,可以隨便改,但不要跟已有的衝突 - 最後,通過
git fetch origin
來獲取原項目的最新代碼 git merge -m <msg>
大功告成!
(這裏如果產生了衝突,就手動解決,完了之後執行git add .
和git commit -m msg
,最後git push name
方法四:通過創建新的分支,進行合併操作(操作有點多)
fork
原項目到自己的 git 上,擁有了自己url
- 執行
git clone url
- 創建分支,
git branch branchname
- 切換分支,
git checkout branchname
- 隨便修修改改,以後就在這個分支開發了,寫完代碼後,將修改提交到自己的 git 上,第1次推送的時候會有提示
git push --set-upstream origin branchname
,照着打就行 - 當原項目有更新後,我們可以找到,在碼雲項目名稱(
forked from xxx / xxx
)後面那裏有一個強制拉取代碼
按鈕。我們先切換到master
分支,再點它,就會同步原項目的修改,放心,你的分支內容不會受到影響。
(至於 github 的,點擊Pull Request
,New Pull Request
,下拉框裏將原項目->自己的項目
,點擊compare across forks
,按照提示一通操作完成後,點擊綠色的Merge Pull Request
,OK了) - 這時候在本地,切換到
master
分支,執行git pull
,將這些修改同步下來 - 切換到
branchname
分支,執行git merge master -m msg
,將這些修改合併到自己的開發項目中,ok,開心了不? - 大功告成!
擴展:如何把自己對項目的改動,提交到 fork 的那個原項目呢?
在你 fork 的項目頁面上,有一個按鈕叫 Pull Request
,點了它就會把你的修改發送到對方的項目裏,最終由原項目主人決定是否接受你的修改~