GitHub 创建 Pull Request 将代码提交至别人的仓库

这篇具有很好参考价值的文章主要介绍了GitHub 创建 Pull Request 将代码提交至别人的仓库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

GitHub 创建 Pull Request 将代码提交至别人的仓库

1. Forking the repository

1.1. About forks (关于 forks)

A fork is a new repository that shares code and visibility settings with the original upstream repository.
A fork 是一个新的存储库,它与原 upstream 存储库共享代码和可见性设置。

Forks let you make changes to a project without affecting the original repository, also known as the upstream repository. After you fork a repository, you can fetch updates from the upstream repository to keep your fork up to date, and you can propose changes from your fork to the upstream repository with pull requests. A fork can be owned by either a personal account or an organization.
Forks 可让你在不影响原始存储库 (也称为 upstream 存储库) 的情况下对项目进行更改。Fork 存储库后,可以从 upstream 存储库获取更新以使 fork 保持最新状态,并且可以使用 pull requests 将更改建议从 fork 提交到 upstream 存储库。A fork 可由个人帐户或组织拥有。

github如何提交代码到别人仓库,Git - GitHub - Gerrit,GitHub,创建,Pull Request,将代码提交至别人的仓库

When you view a forked repository on GitHub, the upstream repository is indicated below the name of the fork.
查看 GitHub 上 forked 存储库时,upstream 存储库会显示在 fork 名称下方。

fork [fɔː(r)k]:n. 叉,岔路,耙,路的岔口 v. 分岔,用叉子叉起食物,用叉举起,在路或河道的岔口转弯
upstream [ʌpˈstriːm]:adv. 逆流,向 (或在) 上游 adj. (石油工业等) 上游的,溯流而上的

In open source projects, forks are often used to iterate on ideas or changes before incorporating the changes into the upstream repository. If you fork a public repository to your personal account, make changes, then open a pull request to propose your changes to the upstream repository, you can give anyone with push access to the upstream repository permission to push changes to your pull request branch (including deleting the branch). This speeds up collaboration by allowing repository maintainers to make commits or run tests locally to your pull request branch from a user-owned fork before merging. You cannot give push permissions to a fork owned by an organization.
在开源项目中,forks 常用于迭代想法或更改,然后将其合并到 upstream 存储库。如果你将一个公共存储库 fork 到你的个人帐户,进行更改,然后创建一个 pull request,向 upstream 存储库提出你的更改,便可允许对 upstream 存储库具有推送权限的任何人将更改推送到 pull request branch (including deleting the branch)。

Deleting a fork will not delete the original upstream repository. You can make any changes you want to your fork, and there will be no effect on the upstream. For example, you can add collaborators, rename files, or generate GitHub Pages on the fork without affecting the upstream. After a fork is deleted, you cannot restore the fork.
删除 fork 不会删除原始 upstream 仓库。你可以对 fork 进行任何所需的更改,并且不会对 upstream 产生任何影响。例如,可以在 fork 上添加协作者、重命名文件或生成 GitHub Pages,而不会影响上游。删除 fork 后,无法还原该 fork。

1.2. Forking a repository (复刻仓库)

  1. In the top-right corner of the page, click Fork.

github如何提交代码到别人仓库,Git - GitHub - Gerrit,GitHub,创建,Pull Request,将代码提交至别人的仓库

  1. Create a new fork
  • Under “Owner”, select the dropdown menu and click an owner for the forked repository. 在 Owner 下,选择下拉菜单,然后单击 forked repository 的所有者。
  • By default, forks are named the same as their upstream repositories. Optionally, to further distinguish your fork, in the “Repository name” field, type a name. 默认情况下,forks 的名称与其 upstream repositories 的名称相同。(可选) 若要进一步区分 fork,请在 Repository name 字段中键入名称。
  • Optionally, select Copy the DEFAULT branch only. For many forking scenarios, such as contributing to open-source projects, you only need to copy the default branch. If you do not select this option, all branches will be copied into the new fork. (可选) 选择仅复制默认分支。对于许多 forking scenarios (例如参与开源项目),你只需复制默认分支。如果未选择此选项,所有分支都将复制到新分支中。

github如何提交代码到别人仓库,Git - GitHub - Gerrit,GitHub,创建,Pull Request,将代码提交至别人的仓库

  1. Click Create fork.

ForeverStrongCheng / kmeans
github如何提交代码到别人仓库,Git - GitHub - Gerrit,GitHub,创建,Pull Request,将代码提交至别人的仓库

2. Cloning your forked repository (克隆复刻的仓库)

  1. Above the list of files, click Code.

github如何提交代码到别人仓库,Git - GitHub - Gerrit,GitHub,创建,Pull Request,将代码提交至别人的仓库

  1. Copy the URL for the repository.
  • To clone the repository using HTTPS, click HTTPS.
  • To clone the repository using an SSH key, including a certificate issued by your organization’s SSH certificate authority, click SSH.
  • To clone a repository using GitHub CLI, click GitHub CLI.
  1. Type git clone, and then paste the URL you copied earlier.
$ git clone https://github.com/YOUR_USERNAME/YOUR_FORK.git
yongqiang@yongqiang:~/yongqiang_work$ git clone https://github.com/ForeverStrongCheng/kmeans.git
Cloning into 'kmeans'...
remote: Enumerating objects: 152, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 152 (delta 0), reused 0 (delta 0), pack-reused 151
Receiving objects: 100% (152/152), 36.68 KiB | 417.00 KiB/s, done.
Resolving deltas: 100% (82/82), done.
yongqiang@yongqiang:~/yongqiang_work$
yongqiang@yongqiang:~/yongqiang_work$ cd kmeans/
yongqiang@yongqiang:~/yongqiang_work/kmeans$ git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
yongqiang@yongqiang:~/yongqiang_work/kmeans$
  1. Change directories to the location of the fork you cloned.
  • To go to your home directory, type just cd with no other text.
  • To list the files and folders in your current directory, type ls.
  • To go into one of your listed directories, type cd your_listed_directory.
  • To go up one directory, type cd ...

3 Configuring Git to sync your fork with the upstream repository (配置 Git 以将 fork 与 upstream 存储库同步)

When you fork a project in order to propose changes to the upstream repository, you can configure Git to pull changes from the upstream repository into the local clone of your fork.
当你 fork 一个项目以向 upstream repository 提出更改建议时,你可以配置 Git 以将更改从 upstream repository 拉到你 fork 的本地克隆中。

  1. Open Git Bash.

  2. Type git remote -v and press Enter. You will see the current configured remote repository for your fork.

List the current configured remote repository for your fork.

$ git remote -v
origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
yongqiang@yongqiang:~/yongqiang_work/kmeans$ git remote -v
origin  https://github.com/ForeverStrongCheng/kmeans.git (fetch)
origin  https://github.com/ForeverStrongCheng/kmeans.git (push)
yongqiang@yongqiang:~/yongqiang_work/kmeans$
  1. Type git remote add upstream, and then paste the URL your upstream repository and press Enter.

Specify a new remote upstream repository that will be synced with the fork.

$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
  1. To verify the new upstream repository you have specified for your fork, type git remote -v again. You should see the URL for your fork as origin, and the URL for the upstream repository as upstream.

Verify the new upstream repository you’ve specified for your 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)
yongqiang@yongqiang:~/yongqiang_work/kmeans$ git remote add upstream https://github.com/NVIDIA/kmeans.git
yongqiang@yongqiang:~/yongqiang_work/kmeans$
yongqiang@yongqiang:~/yongqiang_work/kmeans$ git remote -v
origin  https://github.com/ForeverStrongCheng/kmeans.git (fetch)
origin  https://github.com/ForeverStrongCheng/kmeans.git (push)
upstream        https://github.com/NVIDIA/kmeans.git (fetch)
upstream        https://github.com/NVIDIA/kmeans.git (push)
yongqiang@yongqiang:~/yongqiang_work/kmeans$

4. Syncing a fork (同步复刻)

Sync a fork of a repository to keep it up-to-date with the upstream repository.

  1. Open Git Bash.
  2. Change the current working directory to your local project.
  3. Fetch the branches and their respective commits from the upstream repository. Commits to BRANCHNAME will be stored in the local branch upstream/BRANCHNAME.
    upstream 仓库获取分支及其各自的提交。 对 BRANCHNAME 的提交将保存在本地分支 upstream/BRANCHNAME 中。

Fetch the project branches from the upstream repository

$ git fetch upstream
  1. Check out your fork’s local default branch - in this case, we use master.
$ git checkout master
  1. Merge the changes from the upstream default branch - in this case, upstream/master - into your local default branch. This brings your fork’s default branch into sync with the upstream repository, without losing your local changes. If your local branch didn’t have any unique commits, Git will perform a fast-forward.
    upstream 默认分支 (在本例中为 upstream/master) 的更改合并到本地默认分支中。这会使复刻的默认分支与 upstream 仓库同步,而不会丢失本地更改。

Merge the upstream counterpart into your local master

$ git merge upstream/master
or
$ git rebase upstream/master
  1. Update your fork on GitHub with any changes from the upstream master
$ git push origin master
yongqiang@yongqiang:~/yongqiang_work/kmeans$ git fetch upstream
From https://github.com/NVIDIA/kmeans
 * [new branch]      master     -> upstream/master
yongqiang@yongqiang:~/yongqiang_work/kmeans$
yongqiang@yongqiang:~/yongqiang_work/kmeans$ git checkout master
Already on 'master'
Your branch is up to date with 'origin/master'.
yongqiang@yongqiang:~/yongqiang_work/kmeans$
yongqiang@yongqiang:~/yongqiang_work/kmeans$ git push origin master
Username for 'https://github.com': chengyq116@163.com
Password for 'https://chengyq116@163.com@github.com':
Everything up-to-date
yongqiang@yongqiang:~/yongqiang_work/kmeans$

Syncing your fork with the upstream repository

$ git fetch upstream
$ git rebase upstream/master

5. Making and pushing changes (创建和推送更改)

Before making changes to the project, you should create a new branch and check it out. By keeping changes in their own branch, you follow GitHub Flow and ensure that it will be easier to contribute to the same project again in the future.
在对项目进行更改之前,应创建新的分支。通过将更改保留在在自己的分支中,可以遵循 GitHub 流,并确保它将来再次为同一项目做出贡献会更容易。

Creating a branch (创建分支)

$ git branch BRANCH-NAME
$ git checkout BRANCH-NAME
or
$ git checkout -b <feature_branch_name>

When you’re ready to submit your changes, stage and commit your changes. git add . tells Git that you want to include all of your changes in the next commit. git commit takes a snapshot of those changes.
当您准备好提交更改时,请暂存并提交更改。git add . 告诉 Git 你希望在下一次提交中包含所有更改。git commit 会拍摄这些更改的快照。

$ git add .
or
$ git add <file1> <file2>

$ git commit -m "a short description of the change"
or
$ git commit -s

Note:

$ git add -p
$ git add --patch

Interactively choose hunks of patch between the index and the work tree and add them to the index. This gives the user a chance to review the difference before adding modified contents to the index.
交互式地选择 the index and the work tree 之间的补丁块并将它们添加到索引中。这使用户有机会在将修改的内容添加到索引之前查看差异。

This effectively runs add --interactive, but bypasses the initial command menu and directly jumps to the patch subcommand.

You can now push your local changes to your forked repository

$ git push origin <feature_branch_name>
yongqiang@yongqiang:~/yongqiang_work/kmeans$ git branch
* master
yongqiang@yongqiang:~/yongqiang_work/kmeans$
yongqiang@yongqiang:~/yongqiang_work/kmeans$ git checkout -b yongqiang
Switched to a new branch 'yongqiang'
yongqiang@yongqiang:~/yongqiang_work/kmeans$
yongqiang@yongqiang:~/yongqiang_work/kmeans$ git branch
  master
* yongqiang
yongqiang@yongqiang:~/yongqiang_work/kmeans$
yongqiang@yongqiang:~/yongqiang_work/kmeans$ vim README.md
yongqiang@yongqiang:~/yongqiang_work/kmeans$
yongqiang@yongqiang:~/yongqiang_work/kmeans$ git diff
diff --git a/README.md b/README.md
index 517638b..7927c0b 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-kmeans
+k-means
 ======

 A simple kmeans clustering implementation for double precision data,
yongqiang@yongqiang:~/yongqiang_work/kmeans$
yongqiang@yongqiang:~/yongqiang_work/kmeans$ git status
On branch yongqiang
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")
yongqiang@yongqiang:~/yongqiang_work/kmeans$
yongqiang@yongqiang:~/yongqiang_work/kmeans$ git add .
yongqiang@yongqiang:~/yongqiang_work/kmeans$
yongqiang@yongqiang:~/yongqiang_work/kmeans$ git status
On branch yongqiang
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   README.md

yongqiang@yongqiang:~/yongqiang_work/kmeans$
yongqiang@yongqiang:~/yongqiang_work/kmeans$ git commit -m "a short description of the change"
[yongqiang 9cf098e] a short description of the change
 1 file changed, 1 insertion(+), 1 deletion(-)
yongqiang@yongqiang:~/yongqiang_work/kmeans$
yongqiang@yongqiang:~/yongqiang_work/kmeans$ git push origin yongqiang
Username for 'https://github.com': chengyq116@163.com
Password for 'https://chengyq116@163.com@github.com':
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 295 bytes | 98.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
remote:
remote: Create a pull request for 'yongqiang' on GitHub by visiting:
remote:      https://github.com/ForeverStrongCheng/kmeans/pull/new/yongqiang
remote:
To https://github.com/ForeverStrongCheng/kmeans.git
 * [new branch]      yongqiang -> yongqiang
yongqiang@yongqiang:~/yongqiang_work/kmeans$
$ git commit --amend
$ git push origin yongqiang -f
yongqiang@yongqiang:~/yongqiang_work/kmeans$ git commit --amend
[yongqiang 8cd312b] Refine the README.md file
 Date: Sun Apr 16 23:21:08 2023 +0800
 1 file changed, 1 insertion(+), 1 deletion(-)
yongqiang@yongqiang:~/yongqiang_work/kmeans$
yongqiang@yongqiang:~/yongqiang_work/kmeans$ git push origin yongqiang
Username for 'https://github.com': chengyq116
Password for 'https://chengyq116@github.com':
To https://github.com/ForeverStrongCheng/kmeans.git
 ! [rejected]        yongqiang -> yongqiang (non-fast-forward)
error: failed to push some refs to 'https://github.com/ForeverStrongCheng/kmeans.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
yongqiang@yongqiang:~/yongqiang_work/kmeans$

yongqiang@yongqiang:~/yongqiang_work/kmeans$ git push origin yongqiang -f
...
yongqiang@yongqiang:~/yongqiang_work/kmeans$

6. Opening a pull request in GitHub

Now that you’ve created and pushed changes to a feature branch in your forked repository, you can now open a pull request from which you created your fork.

  1. master branch

github如何提交代码到别人仓库,Git - GitHub - Gerrit,GitHub,创建,Pull Request,将代码提交至别人的仓库

  1. yongqiang branch

github如何提交代码到别人仓库,Git - GitHub - Gerrit,GitHub,创建,Pull Request,将代码提交至别人的仓库

  1. Open a pull request

github如何提交代码到别人仓库,Git - GitHub - Gerrit,GitHub,创建,Pull Request,将代码提交至别人的仓库

  1. Create pull request

github如何提交代码到别人仓库,Git - GitHub - Gerrit,GitHub,创建,Pull Request,将代码提交至别人的仓库

  1. Close pull request

github如何提交代码到别人仓库,Git - GitHub - Gerrit,GitHub,创建,Pull Request,将代码提交至别人的仓库

7. Updating a pull request

In the local branch you are working from, you may add additional commits and re-push as documented above. This will automatically add the new commits to the pull request and CI checks will be re-triggered.
在你工作的本地分支中,你可以添加额外的提交并重新推送,如上文所述。这将自动将新提交添加到 pull request 中,并且将重新触发 CI 检查。

You could amend the original commit and force push it back to your remote origin:

$ git add <file1> <file2>
$ git commit --amend
$ git push origin <feature_branch_name> -f

The pull request will be updated accordingly and CI checks will be re-triggered.

8. Cleaning up local and remote feature branches (清理本地和远程功能分支)

git branch -d <feature_branch_name>
git push --delete origin <feature_branch_name>

References

https://yongqiang.blog.csdn.net/

GitHub Contributions
https://hyperledger-fabric.readthedocs.io/zh_CN/latest/github/github.html
Getting started with GitHub documentation
https://docs.github.com/en/get-started

https://codex.so/fork-and-pull-en文章来源地址https://www.toymoban.com/news/detail-672763.html

到了这里,关于GitHub 创建 Pull Request 将代码提交至别人的仓库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Git使用教程,本地与远程(Github)仓库提交代码

    学会如何利用git来管理代码 Git简单来说就是代码版本控制系统,通过他可以进行多人开发同一个项目然后讲每个人的代码块合并完成一个大项目,还能控制代码版本记录等。Git四个区域 工作区:处理工作的区域(即做项目打代码的区域) 暂存区:已完成的工作临时存放区域

    2024年02月03日
    浏览(48)
  • GIT常用操作整理(从本地创建仓库到提交到GitHub全流程)学习笔记

    1. 本体和插件下载 官网: GIT Download下载 安装过程中一路默认即可。 终端输入 查看git安装是否成功。 (可选)然后下载一个 Git 状态显示到 powershell 中的非常好用插件,posh-Git(windows): 用管理员身份打开 powershell ,之后输入 重启 powershell 初始化仓库的文件位置会加一个

    2024年04月28日
    浏览(40)
  • 使用TortoiseGit拉取(clone)、提交代码至托管仓库(GitLab、GitHub、Gitee)

    以GitLab为例,假设我们要拉取GitLab上如下路径的代码: Step 1: 获取代码仓库路径 Step 2: 新建文件夹 在本地新建文件夹用于放置拉取的程序文件等: Step 3: Git clone设置 选择代码仓库路径复制到URL,同时设置拉取文件的保存位置即Directory。此外,根据实际情况选择要拉取的代码

    2024年02月02日
    浏览(56)
  • github创建仓库和拉取代码

    目录 一、git创建仓库 第一步:首先登录github 第二步:进入建立的仓库(或者新建仓库)  第三步:创建成功 第四步:在本地新建一个文件夹,然后在文件夹下打开git bash 第五步:在git bash命令框执行git init命令初始化项目 第六步:将当前文件夹和远程的git项目对应起来  第七

    2024年02月06日
    浏览(37)
  • 【git】github 如何同步别人的仓库

    假设你有两个 Git 仓库 ,并希望同步它们,以便它们含有相同的内容。 你必须要在 Git 中配置一个远程服务器指向上游的仓库地址,这样你在 fork 中的更改才能同步到原始的仓库里。这样也能把原始仓库中的变更同步到 fork 里。 打开终端,进入本地项目的工作目录。 查看你

    2024年02月10日
    浏览(30)
  • 利用github创建仓库并且上传代码,简单易学

    预备工作:注册github账户,安装配置Git bash 1.登录github账户,点击 右上角加号-New repository创建仓库 ,根据提示信息输入 仓库名称(我命名为Repetition-code)以及描述 , 勾选public 以及 Add a Read...,至此仓库创建完成  2.登录gitbash,克隆刚刚新建的仓库,代码如下: (2)找到克隆仓

    2024年02月11日
    浏览(30)
  • GitHub上传自己的代码、仓库创建和仓库的删除(详细过程)

    已经成功安装了Git 已经成功注册了GitHub账号 参考链接: Git上传文件代码到GitHub 如何在GitHub上传自己的项目 如何将本地项目上传到Github (1) 在GitHub的主页下创建仓库的相关设置 (1) 创建一个新的空文件夹(文件夹的创建地方和命名根据自己需要),此文件夹处命名为

    2024年02月07日
    浏览(29)
  • github上clone下来别人仓库的源码,如何推送到自己的仓库

    前提:对方项目开源,未有密钥 原文 如果你clone下来一个别人的仓库,在此基础上完成你的代码,推送到自己的仓库可能遇到如下问题: error: remote origin already exists.表示远程仓库已存在。 因此你要进行以下操作: 1、先输入 git remote rm origin 删除关联的origin的远程库 2、关联

    2024年02月16日
    浏览(31)
  • 【Python程序开发系列】聊一聊github的pull request几种合并方式

          在正常的工作流程中,PR 用于将一个分支的更改合并到另一个分支,而这些更改通常以提交的形式存在。每个提交都有一个唯一的提交 ID,用于标识和跟踪更改的历史。因此一般情况下PR包含源分支的多个commit提交记录(pr_commit_ids),也有可能不包含任何commit。    

    2024年02月20日
    浏览(26)
  • 如何从 GitHub 上克隆一个仓库、进行修改、提交并上传回 GitHub 新手保姆级教程

    如果你的电脑上没有安装Git,你首先需要下载并安装它。你可以在Git官网上找到安装程序。(注:如果官网上下载缓慢 解决方法1 开个加速器 解决方法2 去镜像网站下载) 镜像网站地址 CNPM Binaries Mirror  不知道下哪个版本好可以选这个版本 并根据自己电脑位数选择 对应红框

    2024年01月17日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包