我有一个几个月前从其他项目中派生的Github存储库。现在已经几个月了,原始的主存储已更改。我想更新我的仓库以反映这些变化。在Github网络界面中可以吗?还是我只需要删除仓库并重新分叉它?
我有一个几个月前从其他项目中派生的Github存储库。现在已经几个月了,原始的主存储已更改。我想更新我的仓库以反映这些变化。在Github网络界面中可以吗?还是我只需要删除仓库并重新分叉它?
Answers:
您可以尝试撤销拉取请求的发生方式。
发出拉取请求
默认情况下,这将是您的右边的fork(head repo),请求将其提交推送到左侧,并将其更改为原始repo(base repo)。
单击基本存储库和头存储库的下拉列表,然后选择彼此的存储库。
您希望自己的存储库显示在左侧(接受更改),而原始存储库显示在右侧(更改为可推送的存储库)。如下图所示:
发送拉取请求
如果您的fork没有任何更改,则您应该能够自动接受合并。
如果您的代码因某种原因发生冲突或不够干净,则无法通过GitHub Web界面进行更新,您将需要获取代码并解决机器上的所有冲突,然后再推回分叉。
会更容易。
https://github.com/{user}/{forkedRepoName}/compare/master...{originalRepo}:master
如何使用远程上游存储库中的更改更新派生的GitHub存储库
GitHub帮助中的说明:
设置/操作说明:
打开Git Bash(Windows)或Linux / Mac Terminal
如果尚未克隆存储库,则必须切换到开发文件夹的工作目录,然后将其克隆到工作站。
$ git clone https://github.com/YOUR_USERNAME/YOUR_FORK.git
转到工作站上分叉存储库的工作目录。
$ cd /user/development/my_forked_repo/
列出您的fork的当前配置的远程存储库。
$ git remote -v
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
指定将与派生同步的新的远程上游资源库。
$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
验证您为fork指定的新上游存储库。
$ git remote -v
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)
从上游存储库中获取分支及其各自的提交。提交给master的内容将存储在本地分支(上游/ master)中。
$ git fetch upstream
remote: Counting objects: 75, done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 62 (delta 27), reused 44 (delta 9)
Unpacking objects: 100% (62/62), done.
From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY
* [new branch] master -> upstream/master
检查您的fork的本地主分支。
$ git checkout master
Switched to branch 'master'
将更改从上游/主服务器合并到本地主服务器分支。这使fork的master分支与上游存储库同步,而不会丢失本地更改。
$ git merge upstream/master
Updating a422352..5fdff0f
Fast-forward
README | 9 -------
README.md | 7 ++++++
2 files changed, 7 insertions(+), 9 deletions(-)
delete mode 100644 README
create mode 100644 README.md
如果您的本地分支没有任何唯一的提交,则Git将执行“快速转发”:
$ git merge upstream/master
Updating 34e91da..16c56ad
Fast-forward
README.md | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
您现在需要将提交推送到您的fork。
$ git push
如果您尚未通过身份验证,它将提示您输入github用户名/密码。一旦通过身份验证,新提交将被推送到您的fork并在github上可见。