首页  >  文章  >  开发工具  >  Git远程仓库(Github)知识点总结

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

WBOY
WBOY转载
2022-05-10 18:23:363075浏览

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

Git远程仓库(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)知识点总结的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:csdn.net。如有侵权,请联系admin@php.cn删除