Git版本控制工具(三)

四、Git远程仓库

目录

前言:

Git是分布式版本控制系统。

Git 中每个客户端都是一个完整的版本库。即使"中央服务器"(如 Gitee)宕机,任何一个成员的本地备份均可瞬间重建服务器。

"中央服务器"即远程仓库,我们不用自己创建中央服务器,各路大神已经帮我们构建好了平台,即github 或gitee平台,可以直接在平台上面创建远程仓库,代码就可以托管于此了。

1.新建远程仓库

1)首先注册一个gitee账号

2)在主页点击新建仓库

3)进入创建仓库界面

4)创建完仓库的初始界面

2.克隆远程仓库到本地

1)以HTTPS的方式克隆

克隆远程仓库:

指令 :git clone https_url

注意 :不能 在本地已有.git的目录下,克隆远程仓库。克隆远程仓库到本地后,自动建立了本地master,与远程origin/master的连接。

.git是本地的版本库。

查看远程仓库名:

命令 :git remote [-v]

  • -v:显示远程仓库 URL
    注意 :需进入到clone下来的远程仓库中,才能查看到远程仓库名,默认是origin

    git romete -v发现有fetch 和push 权限,说明本地可以拉取远程仓库的代码和把本地仓库的代码推送至远程。

2)以SSH的方式克隆

因为SSH协议是使用公钥加密和公钥登录的机制,所以我们要想使用SSH方式克隆代码,必须要将本地服务器上的公钥放到gitee上管理,才能clone。

a.在本地服务器上创建SSH Key

在用户主目录(home/用户)下,看看有没有.ssh目录,如果有,再看看这个目录下有没有 id_rsa 和 id_rsa.pub 这两个文件,如果已经有了,可直接跳到下一步。如果没有,需要创建SSH Key:

创建SSH Key :ssh-keygen -t rsa -C "邮箱"

其中填写的邮箱是SSH 公钥的注释(comment)信息,用于标识这把密钥是谁生成的,并不会参与 SSH 身份认证,只是作为备注存在。但是还是推荐大家使用Gitee上绑定的邮箱。

shell 复制代码
ssh-keygen -t rsa -C "Gitee/github邮箱"

输入该指令后,在./ssh目录应该有 id_rsa 和 id_rsa.pub 这两个文件了。

其中后缀是.pub的是公钥,没带.pub是私钥。记得cat 公钥文件查看公钥,并一字不纳的复制下来。

注意:SSH Key是用户级的。

b.配置公钥到Gitee上
c.根据SSH协议将仓库克隆下来

3.本地分支与远程分支连接的建立与销毁

为什么要建立连接?

因为一旦建立了连接,在使用git push向远程推送代码的时候,就不用指明向哪个远程仓库推送了(git push origin dev:dev ),这个连接关系同时被 git push 和 git pull 使用。

如何建立连接?

情况一:本地和远程都还没有分支

上图显示:一开始,远程和本地都没有dev分支,于是在本地创建了一个dev分支,并在该分支上开发了一些代码,最后将它推送到了远程仓库,但是远程没有dev分支,所以要加一个-u选项,表示建立本地 dev 和远程 origin/dev 的关联,由于本地分支与远程分支一样,所以可以简写为dev。

因此,对于此情况,可以在第一次 push 时建立:git push -u origin dev,这条命令做了两件事。

  • 将dev分支推送至远程仓库
  • 建立本地 dev 和远程 origin/dev 的关联关系。
情况二:本地和远程有分支,但没有关联

当本地和远程分支都存在,需手动建立连接 。命令:git branch --set-upstream-to=origin/远程分支名 本地分支名。

  • --set-upstream-to:指定跟踪哪个远程分支
连接断开:
  1. 删除本地分支 :
    删除本地分支,连接即断开了。
  2. 删除远程分支:
shell 复制代码
git push origin --delete 要删除的远程分支
情况三:本地没有分支,但远程有分支

在创建本地分支时,直接关联远程分支。

命令 :git checkout -b 要创建的本地分支名 要关联的远程分支名

4.推送本地提交代码到远程仓库

命令 :git push origin 本地分支名:远程分支名

在本地修改代码,并提交到本地版本库后。比如:我将README.md文件改动一下,并提交到本地版本库。

此时,本地仓库领先于远程仓库,就可以向远程提交代码了 。

推送至远程 :

5.拉取远程仓库代码到本地

命令 :git pull origin 本地分支名:远程分支名

会做两件事:

  • 获取远程分支状态信息:git fetch
  • 合并代码:git merge
    当远程仓库状态领先于 本地仓库(其他开发者向远程仓库push了代码),就能将远程仓库代码拉取到本地,目的就是为了看到最新的代码。

    开发者二 向远程仓库push了代码。

    开发者一 从远程拉取最新的代码到本地:

理解git pull:

git pull=git fetch+git merge

  • git fetch的作用:将远程仓库的分支状态同步到本地的跟踪分支。相当于远程仓库的镜像,不修改本地的代码。
  • git merge:合并两个分支的代码历史。

6.忽略特殊文件(.gitignore)

1)什么是忽略配置文件?

.gitignore 是 Git 提供的一个文件忽略规则配置文件。它里面写的是:哪些文件、目录不需要 Git 跟踪。

2)为什么要用忽略配置文件

  • 禁止一些无用的文件上传,比如运行Python后,生成的__pycache__文件。
  • 保护敏感信息:比如不要上传数据库密码的配置文件
  • 避免提交本地环境文件,因为不同的开发人员本地环境不同。

3)如何使用忽略配置文件

  1. 在本地创建 .gitignore文件
  2. 编写忽略规则
    比如 :
    **表示匹配任意深度目录

    创建出a.so、b.so两个文件,看看git是否没有忽略a.so文件。

注意:

已经被Git跟踪的文件,改 .gitignore 不会自动生效,要从 Git 索引里拿掉。

mysql 复制代码
# 单个文件
git rm --cached 路径/文件名

# 整个目录
git rm -r --cached 路径/目录名

查看文件被忽略原因:

比如当忽略配置文件中写了很多的忽略,但是在上传代码时,有些文件被忽略,我们想知道原因,就可以使用git提供的命令:git check-ignore -v 文件名。

比如:查看b.so文件为什么被忽略 ?

7.标签

操作标签

标签tag,是针对某次的commit打上一个标签,相当于起一个别名。

应用场景 :

在项目发布某个版本的时候,针对最后一次commit起一个v1.0的标签来标识里程碑的意义。

作用 :因为commit id是难以记住的,为某个重要的版本打上一个tag,如果以后想回退,就很容易回退到之前打上标签的版本了,所以打标签,要起一个容易记住,且有意义的名字。

1)对最新的一次打标签

命令 :git tag -a 标签名 -m "对此标签进行描述"

  • 默认为最新一次的提交打上标签
  • -m 为此次的标签进行描述
查看当前仓库所有的标签

命令 :git tag

查看某个标签的详细信息

命令 :git show 标签名

删除标签

命令 :git tag -d 标签名

2)对历史的某次提交打标签

命令 :git tag -a 标签名 -m "对此标签进行描述" commit_id

推送标签

将本地仓库的标签推送至远程仓库

命令 :git push origin 标签名

比如 :

远程仓库中已有标签:

推送本地所有的标签至远程

命令 :git push origin --tags

删除远程仓库的标签

先要在本地删除,再将删除信息推送至远端。

命令 :git push origin --delete 删除的标签名

比如 :现在本地删除v0.1标签,再将删除信息推送至远程仓库。

查看远程仓库删除情况:

8.解决本地仓库与远程仓库冲突

当本地分支代码与远程分支分支代码发生冲突时 ,需要现将远程仓库的代码拉取到本地,然后手动解决冲突,再此推送。

相关推荐
可乐_不渴21 小时前
【Linux】 项目自动化构建工具makefile&& 版本管理Git&&第一个程序
linux·git·自动化·1024程序员节
lzx_0021 天前
Linux 开发工具(六) 版本管理器git的简单使用
git·1024程序员节
jiangliushi61 天前
GPT-6.1 Sol 免费用:git status 里中文文件名变成一串数字乱?条命令改好
git·codex·1024程序员节
import_random2 天前
[git]只有git,没有github, 如何工作
git·github
import_random2 天前
[git]先创建远程仓库or先创建本地项目
git·github
Linux实战笔记2 天前
rebase 变基引发提交哈希重写与指针机制分析
git·rebase·提交哈希·分支模型·代码合并
小稀土1232 天前
私有化研发协同系统并行期:旧 Jira 与新 Git 并存 6 条数据规则
git
Madison-No72 天前
Git版本控制工具(二)
git
Brookty2 天前
Git 与 GitHub|第一阶段:仓库、版本历史与 Git 对象模型(上篇)
git·github