6

如何使用github给大佬递茶 - idealclover

 3 years ago
source link: https://idealclover.top/archives/340/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

如何使用 github 给大佬递茶

2018.07.06 | 零零碎碎 | 4118 浏览 | 0 赞 | 6 条评论


请注意,本文编写于 1235 天前,最后修改于 931 天前,其中某些信息可能已经过时。

最近也是闲到没事干(误),开始给开源项目打小黑工贡献代码,当个 dalao 手底下的端茶党。

但是看来端茶党也不是那么容易做的或许只是傻翠他智商太低跟不上,在打小黑工的时候遇到了各种各样的麻烦,下面大概记录一下,不知道以后有没有人能用得上。

fork, clone 与修改

首先我们要做的就是 fork 别人的项目。这个没什么好说的,在 GitHub 的项目主页上大大的 fork 键,放心点击就是了。这样做的目的是将项目 “复制” 一份到自己的空间中,便于下一步的 clone 与修改。

之后我们会发现在我们自己的仓库中多了一个该项目的副本,将该项目 clone 到本地,最便捷的方法便是使用 GitHub 的桌面应用程序进行操作。进入 File -> Clone repository,找到项目,选择路径便可以进行克隆,这样项目的文件便被复制到了自己本地的电脑里。

之后~尽情地瞎 jb 修改叭~

改动的提交

假设我们现在已经修改好啦,或者是 debug 成功并增加了新的 bug,或者是增加了新的 feature 并增加了一些 bug,看似大功告成但还有很长的一段路要走 —— 提交我们的修改。改动的提交分为以下几个阶段:本地的提交,本地到远程仓库的提交与远程仓库到项目的提交。

本地的提交

首先是本地的提交,对于 git,在本地的文件做了修改时候,我们需要将修改同步到 git 中,所使用的命令一般是这样的:

git add -A // 这里指将全部的修改记录
git commit -m "日志内容" // 这里是将修改进行打包并打上日志

这样,在我们的电脑中 git 就完成了更新。

提交到远程仓库

之后我们要将自己 git 上的更新同步到 GitHub 上,这时我们的命令如下:

git push

但是有可能出现以下错误(比如傻翠就出现了 XD):

fatal: HttpRequestException encountered.

出现的原因是 Github 禁用了 TLS v1.0 and v1.1,必须更新 Windows 的 git 凭证管理器,反正点击这里下载安装就是了。

之后提交就会被上传至远程仓库啦~看 GitHub 中自己 fork 的项目,应该可以看到相应的更改了。

提交到项目

提交到项目的时候我们需要通过 PR (pull request) 进行。找到项目主页中的 Pull Requests,猛击 New Pull Request,之后 GitHub 会自动对比自己 fork 的分支和主分支的不同,之后写好标题和更新的内容,提交吧!

与主分支同步更新

其实这一块才是自己写这篇文章的最重要原因。现在自己进行过一次提交了,可是之后如果想继续同步主分支的更改并在此基础上再次开发的时候该怎么办呢?往常时候自己的做法也就是删掉之前自己 clone 的 repository 重新进行一次 clone,但是 emmm 多少有点感觉上过不去,于是想折腾折腾看看到底该怎么办。

本来自己的想法是可以从他人的主分支上反 merge (pull request) 到自己的分支,但这样做的后果是:自己提交后再 pull request 回去时会有一次额外的 commit 记录,十分影响主分支的情况。

可以看到对于项目来说,如果进行 merge 再开发并 pull request 回去,一些改动(如图中 C3)就被污染了,而这对于开发来讲是不利的。那么如何在不删除重新 fork 的情况下持续开发呢?经过查找之后发现了一种叫做 git rebase 的操作,似乎很适合这样的情况。

可以看到,经过 git rebase 后,代码依旧维持着原有的树结构,自己的提交与修改是建立在原有新增修改基础之上的,可以维持项目的整洁。

那么具体要怎么做呢,就让我们开始吧。首先我们要明白对于这样的项目来说,一般 git 会有两个分支:master 分支是我们 fork 出的分支,也就是我们在修改的分支;upstream 分支是该项目的主分支,也就是我们要提交的分支。现在我们要更新我们的分支,也即将 master 分支 rebase 到 upstream 分支上。

git fetch upstream
git checkout master
git rebase --onto upstream/master
git push --force

之所以加 --force 参数,是由于该 push 本质上修改了 git 的历史 commit,所以需要进行强制修正与提交。好了!现在整洁了,让我们继续开发吧!

最后愿大家在开源的坑里越挖越深路上越走越远!

https://blog.csdn.net/zy20120580223/article/details/79618880
https://git-scm.com/book/en/v2/Git-Branching-Rebasing
https://blog.csdn.net/chenansic/article/details/44122107

本文链接:https://idealclover.top/archives/340/

本作品由 idealclover 采用 知识共享署名 - 非商业性使用 - 相同方式共享 4.0 国际许可协议 进行许可,转载请注明出处。

标签: 文件 , git, 分支 , 提交 , fork, 修改


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK