progit笔记:GitHub

progit笔记:GitHub

对项目作出贡献

GitHub流程

流程通常如下:

  1. 派生一个项目
  2. 从 master 分支创建一个新分支
  3. 提交一些修改来改进项目
  4. 将这个分支推送到 GitHub 上
  5. 创建一个拉取请求
  6. 讨论,根据实际情况继续修改
  7. 项目的拥有者合并或关闭你的拉取请求
  8. 将更新后的 master 分支同步到你的派生中

创建拉取请求案例

# 1 将派生出的副本克隆到本地
$ git clone https://github.com/tonychacon/blink
# 2 创建出名称有意义的分支
$ git checkout -b slow-blink ②
# 3 修改代码
$ notepad.exe blink.ino
# 4 检查改动
$ git diff --word-diff
# 5 将改动提交到分支中
$ git commit -a -m 'three seconds is better'
# 6 将新分支推送到 GitHub 的副本中
$ git push origin slow-blink
# 7 单击Create pull request按钮(创建拉取请求)

与上游保持同步

  1. 可以把你的分支变基到目标分支中去 (通常是你派生出的版本库中的 master
    分支),
  2. 或者你可以合并目标分支到你的分支中去(通常做法)。
# 当前分支:slow-blink
# 1 将源版本库添加为一个远端,并命名为“upstream”(上游)
$ git remote add upstream https://github.com/schacon/blink
# 2 从远端抓取最新的内容
$ git fetch upstream
# 3 将该仓库的主分支的内容合并到你的分支中
$ git merge upstream/master
# 4 修复产生的冲突
$ notepad.exe blink.ino
# 5 再推送回同一个分支
$ git push origin slow-blink

参考

对拉取请求或议题(Issue)进行相互引用

  • 在提交或描述中输入 #<编号>
  • 想要引用其他人对该版本库的“Fork”中的议题或拉取请求,输入 用户名#<编号>
  • 在不同的版本库中,输入 用户名/版本库名#<编号>

让你的 GitHub 公共仓库保持更新

当原仓库有新的提交时,GitHub 会通知你:

This branch is 5 commits behind progit:master.
(本分支落后 progit:master 5 个提交。)

需要自己更新自己GitHub仓库

$ git checkout master 
$ git pull https://github.com/progit/progit2.git 
$ git push origin master 

每次都要输入从哪个URL抓取有点麻烦。可以稍微设置一下:

# 1 添加源仓库并取一个名字,这里叫它 progit
$ git remote add progit https://github.com/progit/progit2.git 
# 2 将 master 分支设置为从 progit 远端抓取
$ git branch --set-upstream-to=progit/master master 
# 3 将默认推送仓库设置为 origin
$ git config --local remote.pushDefault origin 

设定后,工作流程如下:

# 1 切换到 master
$ git checkout master
# 2 从 progit 抓取更改后合并到 master
$ git pull
# 3 将 master 分支推送到 origin
$ git push

注意:不要直接提交到 master,因为该分支实际上属于上游仓库

维护项目

合并请求引用

实际上 GitHub 在服务器上把合并请求分支视为一种 “假分支”。 默认情况下你克隆时不会得到它们,但它们还是隐式地存在,你可以很容易地访问到它们。

# ls-remote 在显示服务器上有哪些引用 (reference)
$ git ls-remote https://github.com/schacon/blink

如果版本库在 GitHub 上并且有打开的合并请求,你会得到一些以 refs/pull/ 开头的引用。 它们实际上是分支,但因为它们不在 refs/heads/ 中,所以正常情况下你克隆时不会从服务器上得到它们 ——抓取过程正常情
况下会忽略它们。

每个合并请求有两个引用—- /head/merge

  • /head 结尾的引用指向的提交记录与合并请求分支中的最后一个提交记录是同一个
# 可以像直接抓取引用一样抓取那些分支或提交
$ git fetch origin refs/pull/958/head
  • /merge代表的是如果你在网站上按了 “merge” 按钮对应的提交记录。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值