Git11-远程仓库的使用1

2017-01-13  本文已影响0人  我相信你爱过gg

添加远程仓库

你首先需要有一个远程仓库,我是在 码云上创建的项目,你也可以使用比较洋气的GitHub

运行 git remote add <shortname> <url>添加一个新的远程 Git 仓库,同时指定一个你可以轻松引用的简写:

$ git remote add testGit git@git.oschina.net:IyayuProject/TestGit.git

解释:
1.IyayuProject是你的用户名,而TestGit则是你的项目名。
2.添加远程仓库后,testGit是你的远程仓库的名字,它同时也用来引用远程仓库的URL。

注意:
添加远程仓库前,你必须先有一个本地库,在本地库中添加远程操作。
我个人的理解就是将本地仓库和远程仓库进行了关联。

从远程仓库中抓取数据

运行 git fetch [remote-name]命令会访问远程仓库,从中抓取所有你还没有的数据(其实就是将远程服务器的更新取回本地)。 执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。

注意:可以使用git merge命令或者git rebase命令,在本地分支上合并远程分支。

如果只想取回特定分支的更新,可以指定分支名。

$ git fetch <远程主机名> <分支名>

比如,取回origin主机的master分支。

$ git fetch origin master

所取回的更新,在本地主机上要用"远程主机名/分支名"的形式读取。比如origin主机的master,就要用origin/master读取。

$ git log origin/master

如果你使用clone命令克隆了一个仓库,命令会自动将其添加为远程仓库并默认以 “origin” 为简写。 所以,git fetch origin会抓取克隆(或上一次抓取)后新推送的所有工作。

必须注意git fetch 命令会将数据拉取到你的本地仓库 - 它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。

如果你有一个分支设置为跟踪一个远程分支,可以使用git pull命令来自动的抓取然后合并远程分支到当前分支。

默认情况下,git clone命令会自动设置本地master分支跟踪克隆的远程仓库的master分支(或不管是什么名字的默认分支)。 运行git pull通常会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支。

git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。

$ git pull <远程主机名> <远程分支名>:<本地分支名>

比如,取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。

$ git pull origin next:master

如果远程分支是与当前分支合并,则冒号后面的部分可以省略。

$ git pull origin next

上面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先做git fetch,再做git merge

$ git fetch origin$ git merge origin/next

推送到远程仓库

当你想分享你的项目时,必须将其推送到上游。
这个命令很简单:$ git push <远程主机名> <本地分支名>:<远程分支名>。当你想要将master分支推送到origin服务器时(再次说明,克隆时通常会自动帮你设置好那两个名字),那么运行这个命令就可以将你所做的备份到服务器:

$ git push origin master

只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效。 当你和其他人在同一时间克隆,他们先推送到上游然后你再推送到上游,你的推送就会毫无疑问地被拒绝。 你必须先将他们的工作拉取下来并将其合并进你的工作后才能推送。

注意,分支推送顺序的写法是<来源地>:<目的地>,所以git pull是<远程分支>:<本地分支>,而git push是<本地分支>:<远程分支>。

如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。

$ git push origin master

上面命令表示,将本地的master分支推送到origin主机的```master``分支。如果后者不存在,则会被新建。

如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。

$ git push origin :master
# 等同于
$ git push origin --delete master

上面命令表示删除origin主机的master分支。

如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。

$ git push origin

上面命令表示,将当前分支推送到origin主机的对应分支。
如果当前分支只有一个追踪分支,那么主机名都可以省略。

$ git push

如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push

$ git push -u origin master

上面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。

还有一种情况,就是不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要使用--all选项。

$ git push --all origin

上面命令表示,将所有本地分支都推送到origin主机。

如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做git pull合并差异,然后再推送到远程主机。这时,如果你一定要推送,可以使用--force选项。

$ git push --force origin

上面命令使用--force选项,结果导致远程主机上更新的版本被覆盖。除非你很确定要这样做,否则应该尽量避免使用--force选项。

最后,git push不会推送标签(tag),除非使用--tags选项。

$ git push origin --tags
上一篇下一篇

猜你喜欢

热点阅读