本文是 Git 系列的第四篇,主要介绍***远程仓库***和***本地仓库***之间的操作;即下图中红色的部分:
一、从远程仓库到本地仓库
- 注意:下面的代码中,中括号
[]
中的内容表示可选参数
1) 将远程仓库的代码拉取到本地
- 这个假设本地是没有代码的,从远程直接拉取代码
git clone <https://xxxx> [filename] # 使用 https
git clone git://xxxxxx [filename] # 使用 ssh
2) 查看远程仓库
- 查看已经配置的远程仓库
# 查看远程仓库
git remote
# 查看远程仓库对应的简写和 URL
git remote -v
# 查看远程仓库的详细信息
git remote show <远程仓库 shortname>
3) 添加 & 删除 & 重命名 远程仓库
- 上面的
git clone xxxx
是将远程仓库拉取到本地,这时候就默认有了一个远程仓库;下面我们说的是自己添加远程仓库,使用场景:自己在本地初始化了一个 Git 仓库,想要推送到远程仓库,可以自己添加
# 格式:git remote add <shortname> <url>
git remote add pb <https://git.shefcompsci.org.uk/com61/team03/project.git>
- 删除操作
it remote remove <远程仓库 shortname>
- 重命名
git remote rename <远程仓库旧名字> <远程仓库新名字>
4)从远程仓库抓取与拉取
- 抓取(fetch)
git fetch <remote>
# 这个命令会从远程仓库拉取所有分支的提交,
# 如果是 clone 到本地的话,默认远程分支的简写是 origin
- 注意这个命令只会将数据下载到你的本地仓库——它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作
- 拉取(pull)
- 当一个分支设置了跟踪远程分支,那么可以使用下面的命令自动抓取该远程分支同时合并到当前分支
git pull
- 下面的图中体现了
git fetch
和git pull
的区别:
- 拉取远程分支并切换到这个分支
# 原始版
git checkout -b 本地分支名 origin/远程分支名
# 简化版
git checkout --track origin/远程分支名
# 简简化版
git checkout -t orgin/远程分支名
5) 添加远程仓库
# 设置当前分支的远程跟踪分支
# "推送并跟踪"格式:git push --set-upstream <远程仓库 shortname> <追踪的远程分支>
git push --set-upstream origin dev
# “跟踪”格式:git branch -u <远程仓库shortname>/<远程分支name>
git branch -u origin/master
# 添加远程仓库:git add remote add <远程仓库 shortname> <远程仓库地址>
git remote add upstream <https://git.shefcompsci.org.uk/com6103-2020-21/team03/project.git>
二、推送到远程仓库
# 向远程仓库 origin 的 master 分支推送提交
git push origin master
注意:只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效。 当你和其他人在同一时间克隆,他们先推送到上游然后你再推送到上游,你的推送就会毫无疑问地被拒绝。 你必须先抓取他们的工作并将其合并进你的工作后才能推送。
三、将现有文件夹推送到空的远程仓库
cd existing_folder
git init
git remote add origin git@gitlab.com:guobaoyan/motion_imitation_upgrade.git
git add .
git commit -m "Initial commit"
git push -u origin master
四、将现有的 Git 本地仓库推送到空的远程仓库
cd existing_repo
git remote rename origin old-origin
git remote add origin git@gitlab.com:guobaoyan/motion_imitation_upgrade.git
git push -u origin --all
git push -u origin --tags