目录

    1. 本地配置

    • 提交用户信息
    git config --global user.name "username"
    git config --global user.email "user@email.com"
    
    • GPG 配置

    参考:GPG 验证提交

    2. 克隆代码

    • 首先 fork 原仓库

    • 克隆 fork 的仓库代码

    git clone https://github.com/yourname/django-xss-cleaner.git
    
    • 添加原仓库
    git remote add upstream https://github.com/shaowenchen/django-xss-cleaner.git
    
    • 查看本地配置的远程源
    git remote -v
    
    origin xxx
    upstream xxx
    

    3. 日常开发

    • 拉取最新代码
    git fetch upstream
    
    • [可选]非 master 分支集成时操作
    git checkout -b IntegratedBranch upstream/IntegratedBranch
    

    非 master 分支集成,下面使用 IntegratedBranch 替换 master 即可。

    • 切换集成分支
    git checkout master
    
    • Rebase 更新到自己的仓库
    git rebase upstream/master
    
    • 新建一个开发分支
    git checkout -b feature_1 master
    
    • 开发

    Coding

    • 提交代码
    git add .
    git commit -s -m "message"
    
    • 提交 PR

    选择将自己的 feature_1 分支合并到原仓库的 master 分支

    • 评论、修改,来回切磋,继续提交
    git add .
    git commit -s -m "message"
    
    • Rebase PR 中的 Commit 记录,仅留一条
    git rebase -i HEAD~2
    

    进入交互模式后,合并之前的两个 Commit 记录,保留第一个 pick,其他改成 f 或 s 。多条 Commit 时,将 2 修改为相应数值。

    • 强制推送
    git push -f feature_1
    

    由于远程已经有相关的 commit 记录,这里需要强制推送。

    • PR 合并之后,删除开发分支

    如果没有合并直接删除远端开发分支,会导致 PR 关闭。

    git checkout master
    git branch -D feature_1
    git push origin :feature_1