这里假设已经在GitHub
配置了本地设备的SSH keys
。
[yz@bogon open]$ git clone git@github.com:fairyfar/gpdb.git …… [yz@bogon open]$ cd gpdb/ [yz@bogon gpdb]$ git submodule update --init # 没有子模块的话,不需要执行此命令。 ……
在自己的仓库上修改,用git正常操作即可,此处不再赘述。
以下假设我们在个人仓库上已经提交了修改,其中”09c285f46a“是我们的提交。
[yz@bogon gpdb]$ git remote -v origin git@github.com:fairyfar/gpdb.git (fetch) origin git@github.com:fairyfar/gpdb.git (push) [yz@bogon gpdb]$ git log --oneline 09c285f46a (HEAD -> main, origin/main, origin/HEAD) Fixed Resource management DDL report "WARNING: unrecognized node type" when log_statement='ddl'. 0b121366e0 Update README of Create Production Pipeline aadf70193d Switch platform to rocky8 for pr_pipeline ……
从源仓库fork后,在修改过程中,源仓库也在变更,在向源仓库发起Pull Request(PR)
前,需要和源仓库进行合并并解决冲突。
我们在本地执行以下操作:
# 添加远程仓库: [yz@bogon gpdb]$ git remote add gpdb_origin git@github.com:greenplum-db/gpdb.git [yz@bogon gpdb]$ git remote -v gpdb_origin git@github.com:greenplum-db/gpdb.git (fetch) gpdb_origin git@github.com:greenplum-db/gpdb.git (push) origin git@github.com:fairyfar/gpdb.git (fetch) origin git@github.com:fairyfar/gpdb.git (push)
其中git@github.com:greenplum-db/gpdb.git
是GPDB
的官方源仓库地址,gpdb_origin
是我们在本地起的一个名字。这样除了origin
外,我们又添加了gpdb_origin
。
[yz@bogon gpdb]$ git fetch gpdb_origin remote: Enumerating objects: 69940, done. remote: Counting objects: 100% (28202/28202), done. ……
[yz@bogon gpdb]$ git rebase gpdb_origin/main
rebase到源仓库的目标分支(后面我们将要提交到源仓库的具体分支)。这一步可能会产生冲突,有冲突的话需要手工解决。