简介
本文介绍git远程仓库相关命令。包括:clone、push、fetch、pull、update、查看远程仓库信息等。
克隆(clone)
命令
命令 | 作用 |
git clone [options] | 下载一个项目和它的整个代码历史。 示例: git clone git@gitee.com:xxx/Demo.git //新建Demo文件夹,并将文件放进去 git clone -b develop https://gitee.com/shapeless/dubbo-admin.git |
选项
git clone [-b <name>][url] [dir]
选项 | 作用 |
选项(其他选项见git clone --help) | |
url | 项目所在的远程仓库。 |
dir | 指定dir |
-b 分支名 | 指定要克隆的分支。若不指定,则为master |
git clone https://xxx与git clone git@xxxx的区别
项 | https | git |
用户类型 | 任意用户可克隆 | 必须是要克隆的项目的拥有者或管理员,且先添加 SSH key ,否则无法克隆 |
账号密码 | clone:不需要账号与密码。(若提示输入,跳过即可) push:需要验证用户名和密码的 | clone:不需要账户与密码 push:不需要用户名。若配置SSH key的时候设置了密码,则需要输入密码,否则不需要密码。 |
git clone xxx.git和git clone xxx区别
项 | xxx.git | xxx |
工作位置 | bare repositories(服务端) | working tree(本地) |
查找位置 | git clone xxx.git :git 只找 xxx.git。 | git clone xxx :git 先找 xxx ,若没有,找 xxx.git |
--bare选项 | git init --bare 生成bare repositories 只会接收 push,不会进行本地开发。 生成的文件/文件夹是在指定目录的,如下图左侧。 | git init 生成working tree 用于本地开发。 生成的文件/文件夹是在指定目录下的 .git 目录下,如下图右侧。 |
拉取(fetch/pull/update)
远程获取到本地
命令 | 作用 |
git fetch [remote_name] [--all] | 将远程主机的最新内容拉到本地。想要与本地分支合并要手动git merge。 |
git remote update | 下载远程仓库的变动。等价于:git fetch [remote_name] --all |
git pull [remote_name] [branch] | 将远程主机的最新内容拉下来后与本地分支合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。 |
pull和fetch的区别 | git fetch:将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到本机分支中。 |
推送(push)
本地推送到远程
命令 | 作用 |
git push [远程主机名] [本地分支名]:[远程分支名] [其他选项] | 上传本地指定分支到远程仓库。 常用命令:git push origin master |
选项
选项 | 作用 |
--force | 强行推送当前分支到远程仓库,即使有冲突 |
--all | 推送所有分支到远程仓库 |
--tags | 推送tags到远程仓库 |
示例
命令 | 作用 |
git push origin master | 省略远程分支名:将本地分支推送到与之存在"追踪关系"的远程分支(通常两者同名),若该远程分支不存在,则被新建。 |
git push -u origin master | 若当前分支与多个远程主机存在追踪关系,可使用-u选项指定默认主机,后面就可不加任何参数使用git push。 git push -u origin master :此命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。比如:git push代替git push origin master |
git push origin :master | 若省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。 等同于git push origin --delete master |
git push origin | 若当前分支与远程分支之间存在追踪(对应)关系,则本地分支和远程分支都可以省略 |
git push | 若当前分支只有一个追踪(对应)分支,那么主机名都可省略 |
增/改/删 远程仓库
命令 | 作用 |
git remote add [remote_name] [url] | 增加一个新的远程仓库,并命名。即:建立与远程仓库的关联。 例:git remote add origin git@gitee.com:xxx/Demo.git |
git remote set-url [remote_name>][new_url] | 修改远程仓库的url |
git remote remove [remote_name] | 删除与远程仓库的关联 |
查看远程仓库信息
命令 | 作用 |
git remote -v | 查看关联的远程仓库的名称(默认为:origin)。 -v选项可以显示url |
git remote show [remote_name] | 显示某个远程仓库的信息 |
提交到远程不用输入账户密码的方法
对于ssh(推荐使用)
keyfile:对于Windows:C:\Users\xxx\.ssh\id_rsa 对于Linux:~/.ssh/id_rsa
例如:
对于https
1.保存认证
此时查看.gitconfig文件(Windows路径:C:\Users\xxx\.config;Linux路径:~/.config)多了两行:
2.再次pull
例如:
此时.git-credentials(Windows路径:C:\Users\xxx\.git-credentials;Linux路径:~/.git-credentials)中会多一行内容。里面的内容类似:
3.push
此时push不再需要密码(若提示输入,直接跳过即可)