如果你在 github 上 clone 了别人的项目,在本地做了一些修改后,直接git push肯定会遇到问题。因为你提交的远程仓库是别人的仓库。
如何把 clone 后修改的代码提交到自己的 github 上呢?
方法一:
- 修改
.git/config
这个文件,把url
换成自己新建的仓库地址
方法二:
- 先 fork 别人的代码,在你的 github 上就出现了同名的项目,这个项目就属于你自己了,然后把这个项目
git clone
到本地,改改改,然后git push
即可
你 fork 了别人的项目之后,他更新了代码,你 fork 的项目如何与原项目同步更新?
方法一:(最简单的方法)
-
远程仓库执行
fork
操作,得到自己的url
-
git clone url
到本地 -
配置远程分支:
git remote add upstream [fork项目的地址]
-
运行
git remote -v
,会出现:origin https://gitee.com/phpzhi/testPro.git (fetch)
origin https://gitee.com/phpzhi/testPro.git (push)
upstream https://gitee.com/opan/testPro.git (fetch)
upstream https://gitee.com/opan/testPro.git (push) -
执行
git fetch upstream
拉取远程仓库的代码 -
合并拉取的代码
git merge upstream/master
-
上传
git push
方法二:让原项目的作者把你加入该项目的成员,即可对该项目进行各种骚操作(废话。。)
方法三:
- 首先
git clone
原项目到本地 - 在 github 上
fork
该项目,这时有了自己的仓库地址url
- 执行
git remote add name url
,name 是你的仓库别名,可以随便改,但不要跟已有的冲突 - 最后,通过
git fetch origin
来获取原项目的最新代码 git merge -m <msg>
大功告成!
(这里如果产生了冲突,就手动解决,完了之后执行git add .
和git commit -m msg
,最后git push name
方法四:通过创建新的分支,进行合并操作(操作有点多)
fork
原项目到自己的 git 上,拥有了自己url
- 执行
git clone url
- 创建分支,
git branch branchname
- 切换分支,
git checkout branchname
- 随便修修改改,以后就在这个分支开发了,写完代码后,将修改提交到自己的 git 上,第1次推送的时候会有提示
git push --set-upstream origin branchname
,照着打就行 - 当原项目有更新后,我们可以找到,在码云项目名称(
forked from xxx / xxx
)后面那里有一个强制拉取代码
按钮。我们先切换到master
分支,再点它,就会同步原项目的修改,放心,你的分支内容不会受到影响。
(至于 github 的,点击Pull Request
,New Pull Request
,下拉框里将原项目->自己的项目
,点击compare across forks
,按照提示一通操作完成后,点击绿色的Merge Pull Request
,OK了) - 这时候在本地,切换到
master
分支,执行git pull
,将这些修改同步下来 - 切换到
branchname
分支,执行git merge master -m msg
,将这些修改合并到自己的开发项目中,ok,开心了不? - 大功告成!
扩展:如何把自己对项目的改动,提交到 fork 的那个原项目呢?
在你 fork 的项目页面上,有一个按钮叫 Pull Request
,点了它就会把你的修改发送到对方的项目里,最终由原项目主人决定是否接受你的修改~