美文网首页Git
git远程操作

git远程操作

作者: Rancune | 来源:发表于2016-09-20 09:59 被阅读0次

git clone

  • 基本命令

    git clone <远程版本库> <本地目录名>
    
  • git clone支持多种协议,除了HTTP(s)以外,还支持SSH、Git、本地文件协议等

    $ git clone http[s]://example.com/path/to/repo.git/
    $ git clone ssh://example.com/path/to/repo.git/
    $ git clone git://example.com/path/to/repo.git/
    $ git clone /opt/git/project.git
    $ git clone file:///opt/git/project.git
    $ git clone ftp[s]://example.com/path/to/repo.git/
    $ git clone rsync://example.com/path/to/repo.git/
    

git remote

  • 为了便于管理,Git要求每个远程主机都必须指定一个主机名。git remote命令就用于管理主机名

    git remote
    origin
    
  • git remote -v | --verbose 列出详细信息,可以查看远程主机的网址

    git remote --verbose
    origin  https://github.com/ytongshang/Notes.git (fetch)
    origin  https://github.com/ytongshang/Notes.git (push)
    
  • 克隆版本库的时候,所使用的远程主机自动被Git命名为origin。如果想用其他的主机名,需要 用git clone命令的-o选项指定

    git clone -o jQuery https://github.com/jquery/jquery.git
    git remote
    jQuery
    
  • git remote show命令加上主机名,可以查看该主机的详细信息

    git remote show origin
    remote origin
    Fetch URL: https://git.coding.net/Rancune/learnGit.git
    Push  URL: https://git.coding.net/Rancune/learnGit.git
    HEAD branch: master
    Remote branch:
    master tracked
    Local branch configured for 'git pull':
    master merges with remote master
    Local ref configured for 'git push':
    master pushes to master (up to date)
    
  • git remote add命令用于添加远程主机

    git remote add origin https://git.coding.net/Rancune/learnGit.git
    
  • git remote rm命令用于删除远程主机。

    git remote rm origin
    
  • git remote rename命令用于远程主机的改名。

    git remote rename origin hapi
    

git fetch

  • 一旦远程主机的版本库有了更新(Git术语叫做commit),需要将这些更新取回本地,这时就要 用到git fetch命令,下面命令将某个远程主机的更新,全部取回本地

    git fetch <远程主机名>
    
  • 默认情况下,git fetch取回所有分支(branch)的更新。如果只想取回特定分支的更新,可以指 定分支名

    git fetch <远程主机名> <分支名>
    git fetch origin master
    
  • 所取回的更新,在本地主机上要用"远程主机名/分支名"的形式读取,此时本地的分支与远程主机的分支 是没有合并的,两者还是独立的,比如origin主机的master,就要用origin/master读取。 git branch命令的-r选项,可以用来查看远程分支,-a选项查看所有分支

    git branch -r
    origin/master
    git branch -a
    master
    remotes/origin/master
    
  • 本地主机的当前分支是master,远程分支是origin/master。取回远程主机的更新以后,可以在 它的基础上,可以用checkout命令切换到另外的一个分支

    git checkout master 切换本地的主分支
    git checkout origin/master 切换到origin的主分支
    
  • 也可以使用git merge命令或者git rebase命令,在本地分支上合并远程分支

    git merge origin/master
    # 或者
    git rebase origin/master
    

git pull

  • git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并, 实际上是git fetch与git merge两个命令的合并

    git pull <远程主机名> <远程分支名>:<本地分支名>
    
  • 取回origin主机的next分支,与本地的master分支合并,需要写成下面这样

    git pull origin next:master
    
  • 如果远程分支是与当前分支合并,则冒号后面的部分可以省略

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

    git fetch origin
    或git fetch origin next
    git merge origin/next
    
  • Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候, 所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动 "追踪"origin/master分支,上面命令指定master分支追踪origin/next分支

    git branch --set-upstream master origin/next
    
  • 如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名,下面命令表示,本地的当前 分支自动与对应的origin主机"追踪分支"(remote-tracking branch)进行合并

    git pull origin
    
  • 如果当前分支只有一个追踪分支,连远程主机名都可以省略。当前分支自动与唯一一个追踪分支进行合并

    git pull
    
  • 如果合并需要采用rebase模式,可以使用–rebase选项

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

git push

  • 把本地库的所有内容推送到远程库上,分支推送顺序的写法是<来源地>:<目的地>,所以 git pull是<远程分支>:<本地分支>,而git push是<本地分支>:<远程分支>。

    git push <远程主机名> <本地分支名>:<远程分支名>
    
  • 将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建

    git push origin master
    
  • 如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程 分支。下面命令表示删除origin主机的master分支

    git push origin :master
    git push origin --delete master
    
  • 如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略,下面命令表示, 将当前分支推送到origin主机的对应分支

    git push origin
    
  • 如果当前分支只有一个追踪分支,那么主机名都可以省略

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

    git push -u origin master
    
  • 就是不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要使用–all选项

    git push --all origin
    
  • 如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做git pull合并差异, 然后再推送到远程主机。这时,如果你一定要推送,可以使用–force选项,下面命令使用–force选项, 结果导致在远程主机产生一个"非直进式"的合并(non-fast-forward merge)。除非你很确定要这样做, 否则应该尽量避免使用–force选项

    git push --force origin
    
  • git push不会推送标签(tag),除非使用–tags选项。

    git push origin -tags
    

git 标签

  • 创建标签,首先切换到对应的分支,默认会为当前的分支 HEAD 打上标签

    git checkout dev
    git tag "v0.1"
    
  • 默认标签是打在最新提交的commit上的,还可以为历史提交打上标签

git log --pretty=oneline --abbrev-commit
6a5819e merged bug fix 101
cc17032 fix bug 101
7825a50 merge with no-ff
6224937 add merge
59bc1cb conflict fixed
400b400 & simple
75a857c AND simple
fec145a branch test
d17efd8 remove test.txt

git tag v0.9 6224937
  • 标签不是按时间顺序列出,而是按字母排序的。可以用git show

    <tagname>查看标签信息</tagname>

    git show v0.9
    
  • 还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字

    git tag -a v0.1 -m "version 0.1 released" 3628164
    
  • 可以通过-s用私钥签名一个标签,签名采用PGP签名,因此,必须首先安装gpg(GnuPG),如 果没有找到gpg,或者没有gpg密钥对,就会报错

    git tag -s v0.2 -m "signed version 0.2 released" fec145a
    
  • 如果标签打错了,也可以删除,因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错 的标签可以在本地安全删除

    git tag -d v0.1
    
  • 如果要推送某个标签到远程,使用命令git push <远程主机名>

    <tagname>
    </tagname>

    git push origin v1.0
    
  • 一次性推送全部尚未推送到远程的本地标签

    git push origin --tags
    
  • 如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除,然后,从远程删除。 删除命令也是push,第一种方式相当于push一个空的tag到原来的v0.9的tag,这里origin 与:之前有一个 空格,下面则是一种删除方法,与git 删除远程分支的原理差不多。

    git tag -d v0.9
    git push origin :refs/tags/v0.9
    或
    git push origin --delete tag <tagname>
    或
    git push origin : <tagname>
    

相关文章

  • Git远程操作详解

    Git远程操作详解 Git远程操作详解

  • git常用操作命令

    git常用操作命令 1 git工作原理图 2 git远程操作 2.1 git clone 远程操作的第一步,通常是...

  • Git的操作流程

    Git的基本操作: 只要操作git 最前⾯面 都需要写git 克隆隆远程代码仓库:git clone+远程代码仓库...

  • Gite Bash 用法2018-07-16

    Git的基本操作: 只要操作git 最前面 都需要写git 克隆隆远程代码仓库:git clone 远程代码仓库的...

  • Git 系列文章

    GIT 初识 Git的基础操作 Git的远程操作 Git的分支管理 Git标签操作 Git团队协作 Git 多账户...

  • Git 教程(一)--Git简介及操作流程

    前言 Git 教程(一)--Git简介及操作流程Git 教程(二)--Git文件操作Git 教程(三)--远程仓库...

  • Git 教程(五)--远程分支

    前言 Git 教程(一)--Git简介及操作流程Git 教程(二)--Git文件操作Git 教程(三)--远程仓库...

  • Git 教程(四)--分支原理

    前言 Git 教程(一)--Git简介及操作流程Git 教程(二)--Git文件操作Git 教程(三)--远程仓库...

  • Git 教程(三)--远程仓库

    前言 Git 教程(一)--Git简介及操作流程Git 教程(二)--Git文件操作Git 教程(三)--远程仓库...

  • Git 教程(二)--Git文件操作

    前言 Git 教程(一)--Git简介及操作流程Git 教程(二)--Git文件操作Git 教程(三)--远程仓库...

网友评论

    本文标题:git远程操作

    本文链接:https://www.haomeiwen.com/subject/mutoettx.html