首页 > 其他分享 >Git fork常用方法

Git fork常用方法

时间:2022-11-03 12:11:18浏览次数:61  
标签:fork 常用 git 仓库 github Git master upstream

一.使用场景

    在Git上只有一个只能查看的仓库,但是我想放到我的仓库里面开发验证新的功能。这里就用到了 fork这个操作。可以把这个project 复制到自己的仓库里面。

二.名词解释
  fork 是Git上的操作,使用fork功能会在Git上,给你创建一个与该项目一样的同名项目。其实就是复制该项目,包括其中的文件,提交的历史,issue,和其他的一些内容,复制后的仓库存放于你自己的Git账号下

1.与git clone的区别?
有人说,直接把项目拉下来,git clone 不就行了,何必还多此一举,fork一下?请注意,这里操作是跟所处环境不一样的,平常我们在公司开发,可以不用管fork这一步,因为创建这个项目的人,已经把开发权限都给我们了,我们只需要 git clone 下来,然后 push 代码即可。但是,我们如果没有给到我们开发权限,是无法进行push的。而我们又要开发,就需要用到fork这一步

git clone: git命令,将github仓库中的项目克隆到本地电脑中

fork:github网站的操作,将开源项目复制一份到我们github账号下,自己的仓库中

2.fork流程
      

1.fork一下Joe的github的仓库地址,到我们自己的github仓库下
2.git clone到本地电脑中
3.我们做一些代码的修改
4.本地进行commit
5.push到我们自己的仓库中
6.发起Pull request
如果对方接受了我们的pull request,那么我们做的一些修改,就可以合入到他的仓库中了,整个流程就走完了。

三.实操
以ElementUI为例,我们想为ElementUI共享自己的代码,可以试试以下操作

1. fork仓库
1.打开element的代码库,github地址 https://github.com/ElemeFE/element

2.点击右边的Fork 按钮

3.这时会发现我们github自己的账号下,多了一个element的项目,并且有备注:forked from ElemeFE/element

4.接下来,我们fork下来的仓库就在我们自己账号下了,使用方法和自己的仓库一样,git clone到本地

5.关联上游仓库,可以保证后面可以同步上游仓库的代码 相关参考文档

关联上游

git remote add upstream https://github.com/ElemeFE/element.git

验证

$ 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/ElemeFE/element.git(fetch)
> upstream https://github.com/ElemeFE/element.git(push)

2. 分支创建与提交
当我们要新增功能或修复bug时,都需要再自己的仓库新增分支,新增分支时,是以需要修改的远程分支为基础进行新增,也就是,要修改远程的master,本地从fork仓库的master新建分支

ps:新建分支时,必须保证自己本地master分支与远程是一致的,可以使用以下操作进行同步:

1.git fetch upstream
2.git rebase upstream/master
3.git push origin master
这样就保证了从上游仓库中拉取到的最新代码,并且合入到自己仓库

我们创建好分支,并且做一些相应功能的增加和修改之后就到提交步骤了。为了更好的规范提交流程,可以使用以下步骤:

git add .
git commit -m ‘你的备注’ --amend(为了控制我们的提交记录只有一次,也就是只有一个change,因为别人不需要知道,你change的过程,只需要有一次提交就够了,更便于记录的管理)
git push --force-with-lease (强制推送只能用于自己的仓库或自己的分支)
注意:

1.我们在第一次commit时需要签名,使用 git commit -S -m your commit message 其中-s就是保证我们提交时会有你的签名
2.如果发现我们有多次提交,可以使用rebase控制为只有一个change
当我们代码提交之后,这个时候,就可以发起MR或PR了,gitlab是Merge Request,github是Pull Request,然后呢,再把这个MR或PR的链接发给其他同学帮你进行CR(Code Review 代码审查),然后CR通过之后,就可以开始合入代码了。

 

 

------  在我fork之后,我想把代码切换到我自己的仓库。在Git  remote的管理之后

 

再更新就会报如下的错误。

➜  utopia-event-driven git:(master-keboot) gl
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream-to=djj/<branch> master-keboot

 如果远程没有这个分支,可以push 上去。我的显然不是。

 如果我想根据这个分支。执行

git branch --set-upstream-to=djj/<branch> master-keboot  

  utopia-event-driven git:(master-keboot) git branch  --set-upstream-to=djj/master-keboot master-keboot
error: the requested upstream branch 'djj/master-keboot' does not exist
hint: 
hint: If you are planning on basing your work on an upstream
hint: branch that already exists at the remote, you may need to
hint: run "git fetch" to retrieve it.
hint: 
hint: If you are planning to push out a new local branch that
hint: will track its remote counterpart, you may want to use
hint: "git push -u" to set the upstream config as you push.

但是告诉我 

 branch 'djj/master-keboot' does not exist

我以为自己仓库远程的分支没有拉下来,就执行了下git fetch ,之后还是不行。

看到第二个提示,我想起来应该是push 还没个远程自己的仓库关联起来 参考 --set-upstream         -u      -- add upstream reference for each branch that is up to date or pushed   
➜  utopia-event-driven git:(master-keboot) git push --set-upstream djj master-keboot      
Branch 'master-keboot' set up to track remote branch 'master-keboot' from 'djj'.
Everything up-to-date

所以我执行

 git push --set-upstream djj master-keboot     成功。

然后在git pull 一些正常。



-----

 

 

 

参考 https://blog.csdn.net/liuqiao0327/article/details/110671028

  https://www.cnblogs.com/jackfh/p/14182492.html

 

 

 

 

标签:fork,常用,git,仓库,github,Git,master,upstream
From: https://www.cnblogs.com/xd502djj/p/16853970.html

相关文章

  • python selenium 键盘操作 常用
    键盘事件  前面的send_keys()方法用来模拟键盘输入;keys()类提供了键盘上几乎所有按键的方法,组合键也是可以的。常用的键盘操作如下:send_keys(Keys.BACK_SPACE)删除......
  • iomanip库中的常用函数
    setprecision:控制输出浮点数的有效位(与fixed一起用,保留n位小数) doublea;cin>>a;cout<<setprecision(5)<<a<<endl;  输入:12.345678输出:12.345 ......
  • fork函数
    关于linux下fork函数的调用父进程会产生子进程,子进程会获得父进程的数据空间,堆和栈的副本。(注意:不是共享)fork函数调用一次会返回两次主要注意两点处理:1.子进程先退出,内核向......
  • 卧槽!这个价值百万的Github开源项目绝对要火!涵盖OCR、目标检测,NLP,语音合成多方向
    今天为大家推荐一个相当牛逼的AI开源项目,当前Star3.8k,但是大胆预判,这个项目肯定要火,未来Star数应该可以到 10k甚至20k!着急的,可以到GitHub直接去看源码传送门:​​ht......
  • JS常用方法汇总顺序
    顺序a、b、c、d、e、f、g、h、i、j、k、l、m、n、o、p、q、r、s、t、u、v、w、x、y、z一、数组方法 join() join() 方法也可将所有数组元素结合为一个字符串。它的......
  • git_merge产生冲突时丢失合并日志或可视化界面没Resolve按钮的解决方法
    背景:  命令行执行merge将功能分支合并主干分支时,产生了冲突,解决了冲突重新add后,提交时发现提交日志为空,hook被拦截了下来。重试reset或者clean后问题依旧存在。  尝......
  • 常用CSS样式属性
    01、常用样式1.1、background背景设置元素背景的样式background,更好的衬托内容。属性描述值background背景属性简写。支持多组背景设置,逗号,隔开backgrou......
  • 打不开 github 的方法与推荐基于Vue3与Element plus的后台管理系统
    一、打不开github的方法1、打开本机hosts文件(C:\Windows\System32\drivers\etc)2、然后在hosts文件里的末尾放入一下两个IP地址:#GitHubStart140.82.114......
  • Docker 常用命令
    参考地址查看docker网络$dockernetworklsNETWORKIDNAMEDRIVERSCOPE7fca4eb8c647bridgebridge......
  • Typora图床上传配置:PicGo+Gitee 不完全指南
    每次写Markdown都要手动传图,再复制链接到Typora里,这样比较繁琐。设置好图床,搭配PicGo,写作时直接剪贴图片到Typora,就能实现自动上传,这样就方便很多。......