站长家园(原代码之家)(www.adminjie.com)网站源码,微信源码,游戏源码,商业源码分享平台。
当前位置:网站首页 技术文章 网络编程 正文

Git远程仓库(Github)知识点总结

时间:2022-05-12 [网络编程]作者:fabuyuan 浏览:5 次

本篇文章给大家带来关于Git的相关知识,其中主要介绍了关于远程仓库的相关内容,Git并不像SVN那样有个中心服务器,下面看一下使用了Github作为远程仓库的一些问题,希望对大家有帮助。

推荐学习:《Git学习教程》

Git 远程仓库(Github)

Git 并不像 SVN 那样有个中心服务器。

目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作。 你就需要将数据放到一台其他开发人员能够连接的服务器上。

本例使用了 Github 作为远程仓库,你可以先阅读我们的 Github 简明教程。


远程仓库命令
1、 查看当前的远程库

2、添加远程仓库
运行 git remote add 添加一个新的远程 Git 仓库, 同时指定一个方便使用的简写:

3、$ git fetch
这个命令会访问远程仓库,从中拉取所有你还没有的数据。 执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。

origin下所有分支都被复制

git fetch 命令只会将数据下载到你的本地仓库——它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。
git pull 命令来自动抓取后合并该远程分支到当前分支
默认情况下,git clone 命令会自动设置本地 master 分支跟踪克隆的远程仓库的 master 分支(或其它名字的默认分支)。 运行 git pull 通常会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支。
3、git push 推送到远程仓库

只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效。 当你和其他人在同一时间克隆,他们先推送到上游然后你再推送到上游,你的推送就会毫无疑问地被拒绝。 你必须先抓取他们的工作并将其合并进你的工作后才能推送。
4、查看某个远程仓库
如果想要查看某一个远程仓库的更多信息,可以使用 git remote show 命令。

5、远程仓库的重命名
git remote rename 来修改一个远程仓库的简写名
6、远程仓库的移除
git remote remove 或 git remote rm

7、打标签:可以给仓库历史中的某一个提交打上标签,以示重要。 比较有代表性的是人们会使用这个功能来标记发布结点
1)列出标签

2)git tag -l/list 通配符方式列出标签

3)轻量标签(lightweight):它只是某个特定提交的引用,本质上将提交校验和存储到一个文件中——没有保存任何其他信息

4)附注标签(annotated):存储在 Git 数据库中的一个完整对象, 它们是可以被校验的,其中包含打标签者的名字、电子邮件地址、日期时间, 此外还有一个标签信息

5)后期打标签:针对历史项目打标签

6)共享标签:git push 命令并不会传送标签到远程仓库服务器上,可以运行 git push origin 。

git push origin --tags:将会把所有不在远程仓库服务器上的标签全部传送到那里。
![在这里插入图片描述](https://img-blog.csdnimg.cn/498567ecae294ae9af392a975334650f.png)

7)要删除掉你本地仓库上的标签
git tag -d

注意上述命令并不会从任何远程仓库中移除这个标签,你必须用 git push :refs/tags/ 来更新你的远程仓库:

注意上述命令并不会从任何远程仓库中移除这个标签
必须用第一种变体是 git push :refs/tags/ :

$ git push origin :refs/tags/v1.4-lw
上面这种操作的含义是,将冒号前面的空值推送到远程标签名,从而高效地删除它。
第二种更直观的删除远程标签的方式是:
$ git push origin --delete
8、git分支管理
注:git branch ,列出当前所有分支,分支前的 * 字符:它代表现在检出的那一个分支
1)git branch testing 创建testing分支
2) git checkout testing 切换分支, 查看当前分支,可以 HEAD 指向即为当前所在的分支
【 git checkout -b 创建并切换分支】

3)舆情测试+testing分支分别提交,head指针会向前移动
两分支的基准都是9623a70fe,分别提交后各自的指针改变



运行 git log --oneline --decorate --graph --all ,它会输出你的提交历史、各个分支的指向以及项目的分支分叉情况。

分叉情况:

分支合并 git merge【舆情分支不做修改,hotfix分支产生新提交情况】–三方合并
hotfix基于舆情测试分支拉取,于hotfix产生提交,查看hotfix分支的提交id为85bb*,切换回舆情分支,执行git merge,发现舆情分支的提交id也推进到hotfix分支产生的85bb*

舆情分支及hotfix分支变化图解:

分支合并 git merge【舆情分支/Testing分支都产生新提交情况】
Test基于舆情测试分支拉取,Test分支/舆情分支分别修改产生提交,在舆情分支合并hotfix分支内容后,切换至Test分支, test分支合并舆情分支时,发现Testing分支直接产生新的提交id41b1*,而舆情分支中的对应的对应的d804和85不会id不会合并过来,此刻新id对应两个父级id,分别是testing的Da4和舆情分支的85b
1)git checkbox Testing
2)git merge 舆情分支


4)git branch -v 查看每个分支的最后一次提交

5)git branch --merged/–no-merged 过滤这个列表中已经合并或尚未合并到当前分支的分支

6)git branch -d
包含了还未合并的工作,尝试使用 git branch -d 命令删除它时会失败,除非用-D

9、远程分支
1) git ls-remote 来显式地获得远程引用的完整列表
通过 git remote show 获得远程分支的更多信息

2)origin/master和master区别

master : 它代表本地的某个分支名。
origin master 代表着两个概念,前面的 origin 代表远程名,后面的 master 代表远程分支名
origin/master 本地分支,是从远程拉取后,在本地建立的一份拷贝【是用来和远程分支对应的,一般不可见】
 举几个例子可能会更加清晰地说明问题:
① 执行 git fetch origin master 时,它的意思是从名为 origin 的远程上拉取名为 master 的分支到本地分支
 origin/master 中。既然是拉取代码,当然需要同时指定远程名与分支名,所以分开写。
 ②执行 git merge origin/master 时,它的意思是合并名为 origin/master的分支到当前所在分支。既然是分支的合并,当然就与远程名没有直接的关系,所以没有出现远程名。需要指定的是被合并的分支。
 ③执行 git push origin master 时, 推送本地的 master 分支到远程origin, 
④ 一次性拉取多个分支的代码:git fetch origin master dev1 dev2
 ⑤ 一次性合并多个分支的代码:git merge origin/master 分支1 分支2 分支3


2)如果远程仓库有人提交内容,那么远程仓库就会向前移动,而本地origin/master如果不拉取,将还保持不动,如果希望本地同远程保持一致,可以通过git fetch拉取远程仓库数据,
git fetch
3) git push origin 分支名
推送本地的 舆情测试 分支,将其作为远程仓库的 舆情测试 分支
如果并不想让远程仓库 上的分支叫做 舆情测试 ,可以运行 git push origin 舆情测试 :test0421 来将本地的 舆情测试 分支推送到远程仓库上的 test0421 分支。


4)checkout 的操作
通过 git checkout test0421 会把分支切换到test0421分支上

这个操作会处于‘detached Head’ 状态,在这种状态下不会修改origin/test0421上的数据,可以修改并提交做一些实验性的操作,但是切换回test0421分支后,再次从test0421切换回origin/test0421时,之前的改变不会同步,因为origin/test0421 是用户只读的
5)git push origin --delete 分支名 删除远程仓库分支【本地仓库还有数据】

6)rebase变基:使用 rebase 命令将提交到某一分支上的所有修改都移至另一分支上,就好像“重新播放”一样。

首先找到这两个分支(即当前分支 Test0421、变基操作的目标基底分支 Test0420) 的最近共同祖先 85bb,然后对比当前分支相对于该祖先的历次提交,提取相应的修改并存为临时文件, 然后将当前分支指向目标基底 3467, 最后以此将之前另存为临时文件的修改依序应用


Test0420 使用git merge 合并Test0421内容,结果两个分支完全一致,可以发现提交记录没有出现分拆,而是保持在一条直线上【可以比较前面get merge环节中结果出现分叉】


rebase时一系列提交按照原有次序依次应用,只是当前分支的提交id值改变


merge时多次提交合并成一次,生成新的提交id
总结:无论是通过变基,还是通过三方合并,整合的最终结果所指向的快照始终是一样的,只不过提交历史不同罢了。 变基是将一系列提交按照原有次序依次应用到另一分支上,而合并是把最终结果合在一起。

推荐学习:《Git学习教程》

以上就是Git远程仓库(Github)知识点总结的详细内容,更多请关注站长家园其它相关文章!

本文标签:  Git

转载请注明来源:Git远程仓库(Github)知识点总结

本文永久链接地址:https://www.adminjie.com/post/12241.html

免责声明:
本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

附:
二○○二年一月一日《计算机软件保护条例》第十七条规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬!鉴于此,也希望大家按此说明研究软件!

版权声明:
一、本站致力于为软件爱好者提供国内外软件开发技术和软件共享,着力为用户提供优资资源。
二、本站提供的部分源码下载文件为网络共享资源,请于下载后的24小时内删除。如需体验更多乐趣,还请支持正版。
三、我站提供用户下载的所有内容均转自互联网。如有内容侵犯您的版权或其他利益的,若有侵犯你的权益请:提交版权证明文件到邮箱 2225329873#qq.com(#换为@) 站长会进行审查之后,情况属实的会在三个工作日内为您删除。

  • 站长家园(原代码之家)会员升级
  • 最新文章
    • PHP是如何存储变量的?zval结构体你了解吗?

      PHP是如何存储变量的?zval结构体你了解吗?

      PHP源码中的zval在PHP中定义一个变量是不需要声明类型的,一开始给变量$a赋予一个整型值,后面又可以轻而易举地将其改变为其他类型。那在PHP...

    • oracle怎么转移表的表空间

      oracle怎么转移表的表空间

      oracle中,可利用“altertable”语句转移表的表空间,该语句可修改表的数据,与“movetablespace”配合使用就可移动表的表空间,语法为...

    • 实用Word技巧分享:制作超级酷“错行表格”!

      实用Word技巧分享:制作超级酷“错行表格”!

      在之前的文章《实用Word技巧分享:快速跳转页面、批量统一标题格式》中,我们了解了2个不加班小技巧,省时省力又事儿。今天继续实用Word技巧分享,介绍超级酷的W...

    • 什么是oracle监听

      什么是oracle监听

      oracle监听是个服务器端进程,负责监听客户端发来的请求,能够给客户端电脑和数据库电脑建立数据的链接;oracle监听收到request后派生出server...

    • 实用Excel技巧分享:“条件格式”和“函数公式”配合使用

      实用Excel技巧分享:“条件格式”和“函数公式”配合使用

      在之前的文章《实用Excel技巧分享:“数据有效性”可以这样用!》中,我们学习了3个让数据有效性更高效的小技巧。而今天我们来聊聊带函数公式的条件格式,通过2个实...

    热门文章