开源社区必会知识点— —git提交pr

这篇具有很好参考价值的文章主要介绍了开源社区必会知识点— —git提交pr。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

开源社区必会

1 fork仓库并提交之后给开源社区提交pr

1.1 fork开源仓库

①登录github,找到开源仓库A,然后点击fork
git pr,其他,git,开源,github,提交pr,开源社区

这样,就会在你自己github账号下创建一个同名的仓库B(仓库名可修改)

②然后本地修改,提交到自己的github账号下的那个B仓库

1.2 将本地多个commit合并为1个

一般来说,开源社区提交pr都是需要合并为一个commit的

  1. 比如,我现在有4个commit:
85d5d8fa468b06bb9a62fafde01d80cbb7396682 # 我改的

621ca4121f971d9604e395556763551427d799d9 # 我改的

f744d2e91916ab7831f3a7695d1d1825916db164 # 我改的

5c135e49e683563fa470d7f5c281050ec1d73af9 # 我改的

295ac3b842b4ecb6eff1c9954a281a4606a8bc84 # 别人改的
  1. 我现在想把我提交的commit合并为1个
8403afe13664d6bb7f5a5557716a030e9389a944 # 我改的

295ac3b842b4ecb6eff1c9954a281a4606a8bc84 # 别人改的
  1. 具体操作方法
1.2.1 方法一:合并commitID

先从版本库回退内容到暂存区,再重新提交工作区的内容

  • 思路:使用 git reset --soft 回退版本库和暂存区的版本,同时保留工作区的变动,之后再重新提交工作区的内容就好了。
# 查看前10个commit【找到别人最后一次提交的位置】
git log -10
# 从版本库恢复文件到暂存区,不改动工作区的内容
git reset --soft 295ac3b842b4ecb6eff1c9954a281a4606a8bc84	# 别人改的commitID
# add已经跟踪的文件
git add -u
# 提交
git commit -m "修改信息"
# 强制push以替换远程仓的commitID
git push --force

如果push失败,出现Reject,则需要开启分支强制合入的选项,取消分支保护。

  • Settings -> Repository -> Protected Branches -> Protected branch (找到分支) -> Unprotect
1.2.2 方法二:git rebase
# 查看前10个commit
git log -10
# 将4个commit压缩成一个commit
git rebase -i HEAD~4	
# add已经跟踪的文件
git add -u
# 提交
git commit -m "修改信息"
# 强制push以替换远程仓的commitID
git push --force

注意:git rebase临时创建一个新分支进行,如果弄着出错了,可以 git checkout 原分支名 切换回原分支之后重新 git rebase。

git rebase具体演示:

我想合并前四个 commit 到最后一个。如下所示:

①git log 查看历史提交信息
git pr,其他,git,开源,github,提交pr,开源社区
②git rebase -i HEAD~n

使用 git rebase -i HEAD~5 压缩5个commit为1个,或者git rebase -i 51efaef517abdbf674478de6073c12239d78a56a (第一个commit的id)

vim编辑器,按i编辑,将后4个commit的pick修改为fixup,保留第一个pick。按esc键,输入:wq保存退出。

  • pick:使用commit。

  • reword:使用commit,修改commit信息。

  • squash:使用commit,将commit信息合入上一个commit。

  • fixup:使用commit,丢弃commit信息。
    git pr,其他,git,开源,github,提交pr,开源社区
    操作完之后,发现commit都合并成了一个。
    git pr,其他,git,开源,github,提交pr,开源社区
    ③git push --force 提交
    git pr,其他,git,开源,github,提交pr,开源社区

1.3 提交pr

A:代表开源社区的仓库,B:代表你自己fork下来的仓库

  1. 在自己fork下来的B仓库中,创建一个pull request:
    git pr,其他,git,开源,github,提交pr,开源社区
  2. 填写pr信息
    git pr,其他,git,开源,github,提交pr,开源社区
  3. 填写注释信息
    git pr,其他,git,开源,github,提交pr,开源社区

2 同步自己fork的仓库

  1. 把fork的项目克隆到本地仓库中
  2. Configuring a remote for a fork
  3. Syncing a fork
# 1. git clone 自己fork的仓库(自己的仓库B)
git clone 自己仓库的地址(B)
# 2. 查看仓库的远程状态
git remote -v 
# 3. 添加仓库的上游
git remote add upstream 开源仓库的git地址(A)
# 4. 查看是否配置成功
git remote -v
# 5. 同步开源社区的修改
## 从上游拉取最新代码
git fetch upstream
## 切换到本地主分支
git checkout master
## 将从上游拉取的代码合并到本地
git merge upstream/master
# 6. 同步到自己fork的仓库B
git push origin master

效果图:
git pr,其他,git,开源,github,提交pr,开源社区

3 实战

3.1 通过git命令实现pr

# 将fork出来的仓库clone到本地(自己的仓库)
git clone git@github.com:xxxxx/local.git
# 查看仓库情况
git remote -v 
# 添加自己fork的那个仓库(公司的仓库地址)
git remote add upstream git@github.xxxxx/company.git

# 从upstream/main分支上新建一个upstream-local本地分支,并切换到该分支
git checkout -b upstream-local upstream/main

# 将upsream/main分支上的提交rebase(同步)到本地
git fetch upstream
git rebase upstream/main
 
 # 将本地提交push到远程,然后我们就可以在github的upstream-loca分支上提交pr了
 git push --set-upstream origin

3.2 通过goland提交pr

①将fork后的仓库(自己的仓库)clone到本地

# 自己fork的公司的仓库地址(自己fork下来的仓库地址)
git clone git@github.com:xxxxx/local.git
# 查看仓库情况
git remote -v 

②给本地仓库添加upstream上游

# 添加自己fork的那个仓库(公司的仓库地址)
git remote add upstream git@github.xxxxx/company.git
# 将远程分支fetch到本地
git fetch upsteam

③查看本地git仓库状态

我们可以看到远程分支了 upstream/main 和 origin/main ,upstream 是真正的项目地址(公司仓库地址),origin 是 fork 到我们仓库的分支。

  • checkout到upstream/main(仓库公司的地址),并起名为upstream-main

git pr,其他,git,开源,github,提交pr,开源社区④拉取下最新代码并进行rebase
git pr,其他,git,开源,github,提交pr,开源社区
git pr,其他,git,开源,github,提交pr,开源社区

Merge是将公共分支最新版合并到自己的分支中,形成一个新的 commit 提交。而Rebase则像公共分支又重新拉出来这个分支一样。

  • Merge(合并)是最常见的操作,Rebase(变基) 则用得很少。
    但是项目中有种情况更适合用Rebase:自己开发分支一直在做,有多次commit(提交)。某天想把主线的修改合到自己的分支上,做一次集成,这种情况用Rebase就可以把commit都放在主线修改的头上。

⑤切回到我们本地的main分支,并新建dev开发分支
git pr,其他,git,开源,github,提交pr,开源社区
⑥rebase下远程仓库的代码
git pr,其他,git,开源,github,提交pr,开源社区
⑦然后就可以提交了
git pr,其他,git,开源,github,提交pr,开源社区

我们push后会有一个提示

git pr,其他,git,开源,github,提交pr,开源社区
⑧然后我们就可以提交pr了,从我们的dev分支提交到公司的main分支
git pr,其他,git,开源,github,提交pr,开源社区

参考:
https://blog.csdn.net/Spade_/article/details/108698036
https://blog.csdn.net/u012435142/article/details/89491388
https://www.jianshu.com/p/021bb953ee8d
https://blog.csdn.net/xiaobinqt/article/details/116277126文章来源地址https://www.toymoban.com/news/detail-719941.html

到了这里,关于开源社区必会知识点— —git提交pr的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 怎么制作AI绘画?学会这几个技巧就能制作AI绘画,这些Python高级必会知识点你能答出来几个

    大家知道AI绘画吗?这是最近很火的一种绘画方式,我有时候能在社交平台上看到别人发出来的图画。问了才知道,这是通过人工智能软件制作出来的,只要提供画面的描述,AI就能根据这些词汇进行创作。所以即使是不会绘画的小伙伴也不用担心啦,我们通过这些软件

    2024年04月16日
    浏览(51)
  • 开源PDF工具 Apache PDFBox 认识及使用(知识点+案例)

    博主介绍:✌目前全网粉丝2W+,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。 涵盖技术内容:Java后端、算法、分布式微服务、中间件、前端、运维、ROS等。 博主所有博客文件目录索引:博客目录索引(持续更新) 视频平台:

    2024年02月20日
    浏览(43)
  • 全靠这份Java知识点PDF大全,Java开发者必须收藏的8个开源库

    自我介绍 项目中的监控:那个监控指标常见的有哪些? 微服务涉及到的技术以及需要注意的问题有哪些? 注册中心你了解了哪些? consul 的可靠性你了解吗? consul 的机制你有没有具体深入过?有没有和其他的注册中心对比过? 项目用 Spring 比较多,有没有了解 Spring 的原理

    2024年03月23日
    浏览(46)
  • 【字节面试】Fail-fast知识点相关知识点

    字节面试,问到的一个小知识点,这里做一下总结,其实小编之前有一篇文章,已经对此有过涉及,不过这里知识专项针对于问题,把这个知识点拎出来说一下。 什么是Fail-fast机制? Hashmap是否拥有Fail-fast机制? ConcurrentModificationException异常原因和解决方法是什么? 哪些你常

    2024年01月22日
    浏览(49)
  • [知识点整理]中科院/国科大 自然语言处理nlp 期末考试知识点整理

    本文为2022秋网安学院的自然语言处理课程期末复习知识点整理,水平有限,整理的答案可能有错误或遗漏,欢迎大家指正。 文章的第二部分内容参考了学校学姐的文章,文章写的很好,大家可以关注她: (133条消息) 【一起入门NLP】中科院自然语言处理期末考试*总复习*:考

    2024年02月09日
    浏览(51)
  • SpringMVC相关知识点

    传统开发中的控制层: 接收请求参数 request.getParameter 封装实体 new 实体类调用其set方法 访问业务层 接收访问结果 指派页面 通过request和response对象进行页面跳转 将共有行为进行抽取成DispatcherServlet【SpringMVC内部集成】,通过Spring-MVC.xml配置文件去配置。 Spring: 获取请求参数

    2024年02月16日
    浏览(49)
  • java相关知识点

    1.String和StringBuffer如何互相转化 StringBuffer buffer = new StringBuffer(string); String string = buffer.toString();  2.如何实现两个数组内容的拷贝  3.如何去除字符串首尾空格 str.trim()  4.字符串和字符数组如何相互转换 字符串转字符数组:str.toCharArray(); 字符数组转字符串:strs.valueOf(char[] ch)  

    2023年04月23日
    浏览(46)
  • DAC相关知识点

    1.回放数据64bit的数据来源有两个地方: A——ROM波形数据表(数据来源可由dds产生或者matlab产生,本实际项目选择由dds产生的数据:通过写地址出来相应频率的波形)。 B——预留的接口给客户用来回访他们的I/Q数据 (64bit数据一般是4组16bit的IQ拼接的{i0,q0,i1,q1})。 2.6

    2024年02月12日
    浏览(46)
  • Java知识点:

    1、Java中的(8个)基本数据类型及其包装类:         byte(字节)                  8          -128 - 127                                                                     0         short(短整型)             16         -32768 - 32768               

    2024年02月13日
    浏览(43)
  • Redis相关知识点

    Redis (REmote DIctionary Server) 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库,它支持网络,可基于内存亦可持久化,并提供多种语言的API。Redis具有高效性、原子性、支持多种数据结构、持久化、高并发读写等特点。 特征: 1.数据间没有必然的关联关系 2.内部采用

    2024年01月23日
    浏览(75)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包