git fork使用方法 —— 回答来自chatgpt

在网上发现了一个比较有意思的项目,想自己修改下本地使用,于是fork到自己git,因为第一次使用fork,想看fork如何配合本地开发使用。

问chatgpt:git如何从把别人的项目copy到自己的git账号下,并监听别人git项目的变更,而本地又可以提交自己的变更。

chatgpt答:可以通过以下步骤实现:

1、在自己的git账号下创建一个新的空项目。

2、在本地使用git clone命令将别人 将自己的项目(此处原文说的是将别人项目clone下来,但根据我的实践,下面push到origin是别人的项目,所以应该是把自己的项目clone下来当做origin才对)clone到本地。

3、进入clone下来的项目目录,使用git remote命令将原始项目的地址添加到本地的remote列表中,例如:

git remote add upstream https://github.com/网上原始项目.git

4、使用git fetch命令从原始项目中获取最新的更新。

git fetch upstream

5、创建一个新的分支,并将原始项目的主分支合并到新分支中。

git checkout -b new_branch upstream/master

6、将新分支推送到自己的git账号下的项目中。

git push origin new_branch

7、现在你就可以在新分支上进行自己的修改和提交了。如果原始项目有更新,可以使用git pull命令将更新合并到本地,并将新的更新推送到自己的git账号下的项目中。

git pull upstream master
git push origin new_branch

这样就可以实现从别人的项目copy到自己的git账号下,并监听别人git项目的变更,同时本地也可以提交自己的变更。




很明显这并没有使用fork。

于是我又问道:为何不用git fork功能呢?

chatgpt回答:使用git fork功能也可以实现将别人的项目copy到自己的git账号下,并监听别人git项目的变更,同时本地也可以提交自己的变更。具体步骤如下:

1、在别人的项目页面上点击"fork"按钮,将别人的项目fork到自己的git账号下。

2、在本地使用git clone命令将自己git账号下的项目clone到本地。

3、进入clone下来的项目目录,使用git remote命令将原始项目的地址添加到本地的remote列表中,例如:

git remote add upstream https://github.com/网上原始项目.git

4、使用git fetch命令从原始项目中获取最新的更新。

git fetch upstream

5、创建一个新的分支,并将原始项目的主分支合并到新分支中。

git checkout -b new_branch upstream/master

6、将新分支推送到自己的git账号下的项目中。

git push origin new_branch

7、现在你就可以在新分支上进行自己的修改和提交了。如果原始项目有更新,可以使用git pull命令将更新合并到本地,并将新的更新推送到自己的git账号下的项目中。

git pull upstream master
git push origin new_branch

使用git fork功能的优势在于,fork的项目会自动与原始项目保持同步,同时也可以方便地向原始项目提交pull request。但是,如果只是想将别人的项目copy到自己的git账号下,并在本地进行修改和提交,使用上述方法(git clone再提交到到自己的git)也是可以的。



综上可见,git fork和“git clone后再提交到自己git”的操作基本一致,唯一不同的用处在于git fork可以申请提交到自己没有权限的项目,然后由作者考虑是否允许合并。

2024.01.09补充:
两种方式的第2步都应该是将自己的项目clone下来。第3步remote add后面必须是upstream,这是关键字,表示绑定上游仓库。
方式一可以跨平台,比如在gitee创建空白项目并clone,然后remote add原始项目(可以来自github),再按步骤执行后面的操作,可以将自己的分支推送到gitee(但是我实践发现这样推送到gitee的分支没有提交时间。。。如下图1,不知道是不是因为创建的主分支是空白的原因)
image

方式二fork的话貌似只能在同一个平台。



posted @ 2023-05-17 19:21  一 定 会 去 旅 行  阅读(437)  评论(0编辑  收藏  举报