title: 远程仓库
显示当前关联仓库
在本地可以使用下方命令查看关联的远程仓库
$ git remote
因为没有添加远程仓库,所以结果此时为空。
添加远程仓库
在 GitHub / Gitee 上创建的仓库路径为。本文使用的是 Gitee ,GiteHub 操作同理。 现在使用 git remote add 命令将它设置成本地仓库的远程仓库。
$ git remote add origin https://gitee.com/[用户名]/git-demo.git
根据上述格式执行命令后,Git会自动将远程仓库的名称设置为 origin 。
推送代码
推送到 master 分支
如果想将当前分支下本地仓库中的内容推送给远程仓库,需要用到git push命令。
$ git push -u origin master
Enumerating objects: 10, done.
Counting objects: 100% (10/10), done.
Delta compression using up to 16 threads
Compressing objects: 100% (7/7), done.
Writing objects: 100% (9/9), 898 bytes | 449.00 KiB/s, done.
Total 9 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/[用户名]/git-demo.git
3732a3e..2cdff87 master -> master
branch 'master' set up to track 'origin/master'.
像这样执行git push命令,当前分支的内容就会被推送给远程仓库 origin 的master分支。-u 参数可以在推送的同时,将origin仓库的 master 分支设置为本地仓库当前分支的 upstream(上游)。添加了这个参数,将来运行 git pull 命令从远程仓库获取内容时,本地仓库的这个分支就可以直接从 origin 的 master 分支获取内容,省去了另外添加参数的麻烦。 执行该操作后,当前本地仓库 master 分支的内容将会被推送到 GitHub 的远程仓库中。
推送到其他分支
除了 master 分支之外,远程仓库也可以创建其他分支。举个例子,我们在本地仓库中创建 dev 分支,并将它以同名形式 push 至远程仓库。
$ git checkout -b dev
Switched to a new branch 'dev'
我们在本地仓库中创建了 dev 分支,现在将它 push 给远程仓库并保持分支名称不变。
$ git push -u origin dev
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
remote: Create a pull request for 'dev' on Gitee by visiting:
remote: https://gitee.com/[用户名]/git-demo/pull/new/[用户名]:dev...[用户名]:master
To https://gitee.com/[用户名]/git-demo.git
* [new branch] dev -> dev
branch 'dev' set up to track 'origin/dev'.
现在就可以在远程仓库中找到新创建的分支 dev 了。
所在本地分支的名称与远程仓库分支名称相同
如果想要从本地仓库的 master 分支推送到远程仓库的 pro 分支,使用上方的命令会报错的,需要使用下方命令
$ git push -u origin master:pro
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
remote: Create a pull request for 'pro' on Gitee by visiting:
remote: https://gitee.com/[用户名]/git-demo/pull/new/[用户名]:pro...[用户名]:master
To https://gitee.com/[用户名]/git-demo.git
* [new branch] master -> pro
branch 'master' set up to track 'origin/pro'.
划重点
- 在推送代码到主分支时出现以下错误
原因在于在创建远程仓库时,默认生成了 README.md 文档,导致了一些文件在本地仓库和远程仓库上不一致。 可以使用
git pull --rebase origin master命令将远程仓库同步到本地,然后就可以正常提交了。 - 如果本地仓库的版本低于远程仓库的版本,默认无法进行推送。
此时有两种解决方法将本地仓库与远程仓库的代码同步。 解决方法一:
$ git fetch
remote: Enumerating objects: 8, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 6 (delta 2), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (6/6), 605 bytes | 31.00 KiB/s, done.
From https://gitee.com/[用户名]/git-demo
2cdff87..4d87bc4 master -> origin/master
git fetch 会将代码从远程仓库下载下来,但不会将代码和当前分支自动合并,也就是说本地仓库的代码并不会发生改变。要想改变本地仓库的内容,需要手动将本地仓库与远程仓库进行合并。
$ git merge origin/master
执行上方代码会将当前分支(master)与远程仓库的 master 分支进行合并,此时再进行查看本地仓库和远程仓库的代码就相同了。
解决方法二:
$ git pull
git pull 会将远程仓库的代码拉取下来并自动合并
删除远程仓库
$ git remote remove origin
执行上方命令行,本地仓库与远程仓库(origin)的关联会断开,此时就无法想远程仓库推送内容。
获取远程仓库
获取 master 分支
$ git clone https://gitee.com/[用户名]/git-demo.git
Cloning into 'git-demo'...
remote: Enumerating objects: 13, done.
remote: Counting objects: 100% (13/13), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 13 (delta 3), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (13/13), done.
Resolving deltas: 100% (3/3), done.
0. 默认情况下,本地上从远程仓库拉取的目录名称与远程仓库项目名称相同,如果想修改目录名称,在执行 clone 命令时加入新的目录名称。
git clone https://gitee.com/[用户名]/git-demo.git demo
2. 执行 git clone 命令后我们会默认处于 master 分支下,同时系统会自动将 origin 设置成该远程仓库的标识符。也就是说,当前本地仓库的 master 分支与远程仓库(origin)的master分支在内容上是完全相同的。
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/dev
remotes/origin/master
获取 master 之外的分支
$ git clone -b dev https://gitee.com/[用户名]/git-demo.git
-b 参数的后面是想获取的远程仓库的分支名称。
title: tag
什么是tag
tag 是 git 版本库的一个标记,指向某个 commit 的指针。 tag主要用于发布版本的管理,一个版本发布之后,我们可以为git打上 v.1.0.1 v.1.0.2 ...这样的标签。 tag 对应某次 commit, 是一个点,是不可移动的。 branch 对应一系列 commit,是很多点连成的一根线,有一个HEAD 指针,是可以依靠 HEAD 指针移动的。 所以,两者的区别决定了使用方式,改动代码用 branch ,不改动只查看用 tag。
tag的简单使用
创建 tag
使用 git tag <tagName>命令创建 tag。
$ git tag v1.0.0
还可以使用 git tag <tagName> <commit id>命令为指定版本号创建 tag。
$ git tag v0.0.5 5eb244a631812dfc61326de9fc99f171543f300f
查看tag列表
使用 git tag 命令可以直接列出所有的标签。
$ git tag
v1.0.0
使用git tag -l xxxx 命令可以根据 xxxx 进行标签的筛选,可以通过通配符进行筛选。
$ git tag -l 'v2.0*'
删除tag
使用git tag -d <tagName>删除本地的tag
$ git tag
l
v1.0.0
v1.1.0
$ git tag -d l
Deleted tag 'l' (was a63a8ba)
$ git tag
v1.0.0
v1.1.0