前言
近期使用github给baidu/brcc提交pr,然后发现提完pr以后我如果再次修改并且baidu/brcc有其他人的更新,我的fork仓库无法同步,所以找了一些最佳实践,在此进行总结。
实现方案
一般情况下,这种情况有两种做法:
- 将fork的仓库在你的github上删除掉,然后重新fork
- 通过git命令将原代码进行同步到你的代码中
实际上在github的操作中都是merge 与 merge的操作,在你只需要和原代码保持一致的情况下,可以采用第二种方案进行同步
实践步骤
通过git命令将原代码同步到我fork的代码仓库中,使用merge的方法来进行操作。下面是具体的操作命令,以brcc仓库为例.
1、进入到我的本地仓库中:
1
cd ~/github-me/brcc/
2、执行命令
git remote -v
查看远程仓库的地址
初始情况下,执行完命令只会存在如下两条记录1
2
3➜ brcc git:(main) git remote -v
origin git@github.com:dislazy/brcc.git (fetch)
origin git@github.com:dislazy/brcc.git (push)3、执行命令
git remote add upstream git@github.com:baidu/brcc.git
给当前仓库添加 上游仓库(upstream)
添加完上游仓库之后再次执行git remote -v
,就可以看到当前的代码仓库出现了四条记录1
2
3
4
5➜ brcc git:(main) git remote -v
origin git@github.com:dislazy/brcc.git (fetch)
origin git@github.com:dislazy/brcc.git (push)
upstream git@github.com:baidu/brcc.git (fetch)
upstream git@github.com:baidu/brcc.git (push)4、执行命令
git status
查看自己存不存在当前分支下已修改未提交的,如果有的话可以提交到你的当前分支去(前提是你的代码不是主分支)1
2
3
4
5➜ brcc git:(main) git status
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean5、执行命令
git fetch upstream
抓取 baidu/brcc 原仓库的更新1
2
3
4
5
6
7
8➜ brcc git:(main) git fetch upstream
remote: Enumerating objects: 136, done.
remote: Counting objects: 100% (110/110), done.
remote: Compressing objects: 100% (45/45), done.
remote: Total 82 (delta 32), reused 63 (delta 14), pack-reused 0
Unpacking objects: 100% (82/82), 7.48 KiB | 134.00 KiB/s, done.
From github.com:baidu/brcc
* [new branch] main -> upstream/main6、如果你的代码不是主分支,那么执行命令
git checkout main
切换到代码主分支1
2
3➜ brcc git:(main) git checkout main
Already on 'main'
Your branch is up to date with 'origin/main'.7、最关键命令
git merge upstream/main
,将原代码的主分支代码merge到你的fork仓库主分支上1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18➜ brcc git:(main) git merge upstream/main
Updating f8099cb..a5d4533
Fast-forward
.codecov.yml | 6 +-
README.md | 178 ++++++++++++++++++++++++++++----------------------------
brcc-cache/src/test/java/com/baidu/brcc/SampleTest.java | 41 -------------
brcc-example/src/test/java/com/baidu/brcc/example/ApplicationTest.java | 31 ----------
brcc-sdk-starter/pom.xml | 2 +-
brcc-sdk/pom.xml | 2 +-
brcc-sdk/src/test/java/com/baidu/brcc/ConfigChangedListenerTest.java | 2 +-
brcc-sdk/src/test/java/com/baidu/brcc/spring/ConfigCenterPropertyPlaceholderConfigurerTest.java | 2 +-
brcc-server/src/test/java/com/baidu/brcc/RccApplicationTest.java | 30 ----------
doc/java-sdk-guide.md | 11 +++-
10 files changed, 106 insertions(+), 199 deletions(-)
delete mode 100644 brcc-cache/src/test/java/com/baidu/brcc/SampleTest.java
delete mode 100644 brcc-example/src/test/java/com/baidu/brcc/example/ApplicationTest.java
delete mode 100644 brcc-server/src/test/java/com/baidu/brcc/RccApplicationTest.java8、经过上面一步,已经将对应的原仓库代码同步到你的fork仓库中了,此时执行
git push
即可完成操作1
2
3
4➜ brcc git:(main) git push
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:dislazy/brcc.git
f8099cb..a5d4533 main -> main经过以上8个步骤,已经成功的将fork仓库的代码和原代码保持一致了,如果需要再次提pr,后期按照此步骤操作即可。