Github 如何优雅的获得上游最新内容?
引自:https://github.com/selfteaching/the-craft-of-selfteaching/issues/67
“重新弄一个当前最新版本到本地” 这是一个常见 github 操作, 但是, 其操作涉及复杂的 git 概念, 所以, 在此简要描述一下最小过程(MVP):
- 首先, 新增
remote
(远程上游仓库), 即, 将本书仓库, 追加为fork
仓库的上游仓库
sh
git remote add upstream https://github.com/selfteaching/the-craft-of-selfteaching.git
此时检验本地工作复本仓库的配置就可以看到变化:
sh
$ cat .git/config
...
[branch "master"]
remote = origin
merge = refs/heads/master
[remote "upstream"]
url = https://github.com/selfteaching/the-craft-of-selfteaching.git
fetch = +refs/heads/*:refs/remotes/upstream/*
在底部追加了 upstream
(上游)仓库信息, 可以用 branch
命令来检验
sh
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/upstream/master
- 同步上游修订, 使用
fetch
命令:
sh
$ git fetch upstream
remote: Enumerating objects: 2, done.
remote: Counting objects: 100% (2/2), done.
remote: Total 12 (delta 2), reused 2 (delta 2), pack-reused 10
Unpacking objects: 100% (12/12), done.
From https://github.com/selfteaching/the-craft-of-selfteaching
7b3aeea..4646cc8 master -> upstream/master
然后, 在此基础上进行修订, 以及 Pull-Request 才是正义的.
总结
- 声明上游仓库:
git remote add upstream https://github.com/xxx/xxx.git
- 每次进行修订前先
fetch
上游修订:git fetch upstream
- 如果和本地有冲突, 先在本地解决冲突