Skip to content
大纲

Github 如何优雅的获得上游最新内容?

引自:https://github.com/selfteaching/the-craft-of-selfteaching/issues/67

“重新弄一个当前最新版本到本地” 这是一个常见 github 操作, 但是, 其操作涉及复杂的 git 概念, 所以, 在此简要描述一下最小过程(MVP):

  1. 首先, 新增 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
  1. 同步上游修订, 使用 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 才是正义的.

总结

  1. 声明上游仓库:git remote add upstream https://github.com/xxx/xxx.git
  2. 每次进行修订前先 fetch 上游修订:git fetch upstream
  3. 如果和本地有冲突, 先在本地解决冲突