侧边栏壁纸
  • 累计撰写 45 篇文章
  • 累计创建 15 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录
Git

【Git】Git远程仓库

Administrator
2024-09-15 / 0 评论 / 0 点赞 / 38 阅读 / 17897 字 / 正在检测是否收录...

我这里以为例gitee说明。

1. 添加远程仓库

1.添加公钥

$ ssh-keygen -t ed25519 -C "Gitee SSH Key"
# -t key 类型
# -C 注释

2.创建远程仓库

通常情况下远程仓库名称和本地名称一致,方便区分。

3.关联仓库并提交文件

根据提示,既可以新建本地仓库与远程仓库,也可以使用已有的本地仓库。

$ git remote add origin git@gitee.com:xie_xuchun/study_git.git

origin是给远程仓库起的名称。

$ git push -u origin "master"

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送到远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

$ git push origin master

说明:当你第一次使用Git的clone或者push命令连接Gitee时,会得到一个警告,这是因为Git使用SSH连接,而SSH连接在第一次验证Gitee服务器的Key时,需要你确认Gitee的Key的指纹信息是否真的来自Gitee的服务器,输入yes回车即可。Git会输出一个警告,告诉你已经把Gitee的Key添加到本机的一个信任列表里了。

2. 删除仓库

在删除仓库之前,我们需要先查看当前仓库的信息。

$ git remote -v

然后,根据名字删除,比如删除origin:

$ git remote rm origin

说明:“删除”其实是解除了本地和远程的绑定关系,并不是物理上删除了远程库。

3. 从远程库克隆

上面我们是先有本地库,然后才创建和关联的远程库。现在我们不创建本地库,直接从远程库进行克隆。

1.创建远程库

为了方便查看变化,给他初始化一个readme的文件。

2.克隆到本地

$ git clone git@gitee.com:xie_xuchun/we-are-study.git

说明:Gitee给出的地址不止一个,还可以用https://gitee.com/xie_xuchun/we-are-study.git这样的地址。实际上,Git支持多种协议,默认的git://使用ssh,使用https除了速度慢以外,每次推送都必须输入口令。

4. Bug分支

每个Bug都可以通过创建临时分支来修复。修复后,合并分支,然后即可删除临时分支。

问题?我的dev分支代码还没完成,就创建临时分支,该如何提交?

方法:可以通过stash把当前现场储藏起来,等以后恢复现场后再继续工作。

$ git stash

假定我们现在要在master分支修复代码,这时就可以在master分支上创建临时分支。

$ git checkout master
$ git switch -c issue-101
# 然后进行代码修复
$ git add readme.txt
$ git commit -m "update bug"   # 18dda07

然后切换到master分支进行合并,再删除bug分支。

$ git switch master
$ git merge --no-ff -m "merge bug" issue-101

现在bug修复完成了,我们又可以回到dev分支继续干活了。

$ git switch dev
$ git status

此刻dev分支是干净的,因为我们之前将现场储藏了起来,可以通过

$ git stash list

查看。可以发现有一个隐藏。

现在我们就可以恢复现场了。

$ git stash apply
​
# 或者使用
$ git stash pop
​
# 两个区别就是恢复完成之后是否删除stash内容,使用后者会进行删除。

当然,你如果有多次stash,可以恢复指定的stash。

$ git stash apply stash@{0}

思考:刚才是在新建的临时分支上修改的bug,但是我当前工作的分支并没有这个修改,如果重新写一遍就是重复造轮子了,怎样让这些修改在dev分支上重放?

这时,我们可以查看之前新建分支上提交的commit_id,将他重放到dev上。

在储藏的情况下先做重放,然后回复现场。

$ git cherry-pick 4c805e2

git给dev分支自动做了一次提交。使用了cherry-pick,就不需要在dev分支重复修改bug了。

5. feature分支

实际的工作中,各种新功能是非常多了,但是我们又不希望新的功能将主分支搞乱,这个时候对于新的功能需求,就可以新建一个feature分支,在上面开发,完成后合并,最后删除该feature分支。

$ git switch -c feature
$ git add readme.txt
$ git commit -m "new"

一切顺利的话,就可以切换到dev合并代码了

$ git switch dev

但是这时出了意外,新功能不需要了,那么直接删除feature分支就可以。

$ git branch -D feature

说明:如果我们合并过了,可以使用-d,但是这种没有合并就删除的情况需要使用-D进行强制删除。

6. 标签管理

1. 创建标签

在Git中打标签非常简单,首先,切换到需要打标签的分支上,比如dev分支:

$ git switch dev

然后在当前分支打标签

$ git tag v1.0

默认标签是搭载最新提交的commit上的。如果要对历史某一次提交打标签,需要找到历史的某次提交commit_id,然后打标签。

$ git tag v0.9 db6707e

还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字。

git tag -a v0.1 -m "This is v0.1" f8d7e15

查看标签

$ git tag
​
$ git show v0.9

git tag列出所有的标签。git show v0.9,列出某一个tag的详细信息。

2. 操作标签

本地删除标签

$ git tag -d v0.1

创建的标签只存储在本地,不会自动推送到远程。可以安全删除。

远程推送标签

如果要推送某个标签到远程,使用命令git push origin <tagname>

$ git push origin v0.9

或者,一次性推送全部未推送到远程的本地标签:

$ git push origin --tags

远程删除标签

如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:

$ git tag -d v0.9

然后,从远程删除。格式如下:

$ git push origin :refs/tags/v0.9

0
博主关闭了所有页面的评论