GitHub 大家都知道拟枚,很多公司的開源項(xiàng)目都會放在這個地方薪铜。
看到那些大牛的代碼,你是否也想過恩溅?
- 我能不能學(xué)習(xí)他們
- 我能不能提交一些自己的代碼
- 我的代碼能不能滿足要求
- 我能不能得到他們的認(rèn)可
本篇將分享這段時間自己提交 PR 的一些經(jīng)驗(yàn)隔箍,也是記錄自己踩過的坑。
默許閱讀人群了解 GitHub 脚乡,了解基本 git 命令蜒滩。
這里以 ant-design 為例。
1. 準(zhǔn)備
1.1 Fork 項(xiàng)目
點(diǎn)擊 Fork 后每窖,會自動生成以自己名稱命名的項(xiàng)目帮掉,如圖:
因?yàn)槲疫@個是很早之前的弦悉,所以可以看到我項(xiàng)目的 master 已經(jīng)拉下原項(xiàng)目的 master 152個 commits 了窒典。不用擔(dān)心,后面會教你怎么處理稽莉。
1.2 Clone 到本地
# 在你想存放項(xiàng)目的文件夾下執(zhí)行
git clone https://github.com/xrkffgg/ant-design.git
cd ant-design
1.3 設(shè)置 remote
如果你這是一次性瀑志,并且很快就提交了,可以忽略此步污秆,但不建議劈猪。
- 添加
git remote add ant https://github.com/ant-design/ant-design.git
- 查看
如果操作正確,執(zhí)行 git remote -v
良拼,你將看到
ant https://github.com/ant-design/ant-design.git (fetch)
ant https://github.com/ant-design/ant-design.git (push)
origin https://github.com/xrkffgg/ant-design.git (fetch)
origin https://github.com/xrkffgg/ant-design.git (push)
1.4 安裝依賴
yarn
# or
npm i
1.5 啟動項(xiàng)目
有的項(xiàng)目命令不一定是 start
战得,具體可以去 package.json
中查看。
yarn start
# or
npm run start
2. 開發(fā)
這里就是盡情的來 Coding庸推。
很多項(xiàng)目都有一些開發(fā)規(guī)范常侦,建議開發(fā)前可以去閱讀以下,更規(guī)范的代碼有助于 PR 的通過贬媒。
同時在開發(fā)完成后聋亡,建議運(yùn)行 項(xiàng)目中的 test 來檢查是否滿足要求(避免 PR 中 test 失敗)
2.1 提交
這里列出幾個自己的風(fēng)格际乘。
- 先新建遠(yuǎn)程坡倔,再直接提交
GitHub 新建分支的操作為:在某個分支下,點(diǎn)擊 Branch脖含,輸入你想新建的名稱罪塔,比如 test,之后會自動以你所在分支為基準(zhǔn)新建分支养葵。
本地分支直接使用 test 分支開發(fā)垢袱,這樣避免 master 被污染。
- 本地開發(fā)完成港柜,推送到遠(yuǎn)端其他分支
git add xx
git commit ""
git push origin master:test
這樣會導(dǎo)致自己的本地 master 多了 commit 请契。
add commit 的操作建議使用工具(IDE 集成或插件)來執(zhí)行咳榜,這樣可以檢查一下提交的代碼。
2.2 提交規(guī)范
commit 信息一定要寫的規(guī)范爽锥∥錾海可參考 commit 規(guī)范
3. PR
3.1 新建
當(dāng)你提交到遠(yuǎn)程時将谊,點(diǎn)開你的 項(xiàng)目主頁,會自動顯示出一個 Pull Request 的按鈕。
如果由于網(wǎng)絡(luò)原因沒刷新出來棋弥,可自己直接點(diǎn)擊 分支旁的 New pull request
,或去源項(xiàng)目新建 PR忘巧。
3.2 填寫
每個項(xiàng)目都會對自己的 PR曲横,有一定的要求,請仔細(xì)閱讀規(guī)范填寫踩蔚。
3.3 后續(xù)
當(dāng)你做完這些操作后棚放,就可以等著項(xiàng)目維護(hù)人員來進(jìn)行代碼審核和 PR 操作啦。
如果 PR merge 后馅闽,會給出一個 刪除你項(xiàng)目中分支的操作飘蚯,可直接點(diǎn)擊。
4. 情景
這里列出一些我遇到的情景和解決辦法福也。
4.1 clone 指定分支
git clone - b v1.0 http://xxx.git
4.2 更新 fork 工程
# 1. 添加源分支
git remote add xxx git@github.com:author/repos.git
git remote -v 查看
# 2. fetch 源倉庫代碼的最新版本到本地
git fetch xxx
# 3. 合并兩個版本的代碼
git merge xxx/master
# or
git rebase xxx/master
# 4. 更新到GitHub的fork上
git push origin master
4.3 恢復(fù)遠(yuǎn)端 commit
# 1. 查看 commit 歷史
git reflog
# 2. 恢復(fù)到指定 commit
git reset --soft HEAD~1
# 3. commit 處理
# 4. push 遠(yuǎn)端
git push origin master --force
4.4 PR rebase
# 1. master 更新到最新
# 2. rebase
git rebase master
# 3. push
git push --force
4.5 遠(yuǎn)程新建分支如何開發(fā)
git fetch
git checkout -t origin/xxx
5 后 記
感謝支持局骤。
若不足之處,歡迎大家指出暴凑,共勉峦甩。
如果覺得不錯,記得 點(diǎn)贊现喳,謝謝大家 ????
歡迎關(guān)注凯傲。