开源项目贡献流程

开源项目贡献流程

该文写于 PLCT deepin 小队实习期间,总结通过 Git 向开源项目提交贡献的大致流程以及过程中可能遇到的问题及解决办法。主要以向 deepin 社区提交修包pr为例。方便之后修包过程中快速解决同样的问题,也希望能帮助到和笔者一样的小白。

当明确了要修的包以后,github 中找到 deepin 社区( https://github.com/deepin-community )

搜索对应的仓库并 fork

在本地 clone 自己 fork 后的仓库

git clone [repository]
//推荐通过 ssh 进行 clone
//可以省去之后重复验证 github 账号

修改之前,为不把主分支搞乱,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。

git checkout -b feature
//创建并转到 feature 分支

修改之后提交 commit

git add [file]
//将需要的文件添加进暂存区
//修包一般需要提交 changelog 和新打的 patch 和series

git commit -m "[commit message]"
//提交 commit 需要注意符合规范

将修改提交至远程仓库

git push [remote repository]

此时就可以在远端仓库向上游提交 PR

需要在 PR 中符合规范并简明的描述

PR 成功合并后就可以删除 feature 分支

git checkout master
//删除前先转至主分支
git branch -D feature
//强制删除feature分支

在下一次开发前,需先检查上游仓库是否更新

若上游已经更新需要进行同步

git fetch upstream
git rebase upstream/master
//主分支保持同步

同步完成后就可以重复之间的操作,切至新分支进行开发

以下为一些可能遇到的问题:

提交PR,如有多次 commit ,需要通过 rebase 合并为一个 commit ,便于管理。

rebase 合并 commit 流程:

  • 首先查看提交历史:git log

  • 然后执行 git rebase -i <版本号> ,即合并这个 commit 之后的所有 commit (不包括这个)

  • 进入编辑器做如下修改

    pick <需合并的版本号>   '注释**********'
    s  <需合并的版本号>  '注释*********'
    s  <需合并的版本号>  '注释**********'
    
  • git log 看到 commit 已经合并

  • 最后通过 git push -f 强制 push 到远端

pr重开是不合适的行为 有问题可以考虑rebase+push force

撤销已经提交到远端的 commit:

  • 先本地回退到相应的版本
git reset --hard <版本号>
//注意使用 --hard 参数会抛弃当前工作区的修改
  • 覆盖远端的版本信息
git push origin <分支名> --force
//使远端的仓库也回退到相应的版本,需要加上参数--force
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值