• Git 远程仓库


    假设我们做的东西仅仅是在本地供自己用的话,就不须要跟网络打交道。也不须要远程仓库这种东西了。

    可是假设我们是在一个项目组中。或者做的东西想跟别人分享呢。我们就必须学习一下怎么使用远程仓库。

    远程仓库的概念。事实上在网络的某台server上,也有着一个Git仓库,跟我们本地的事实上是一模一样的,对于server的管理员来说,事实上也是一个本地的Git仓库。

    像GitHub,和如今CSDN和OSChina的Code等。都为我们提供了这种空间供我们存放自己的项目。在项目组内部也能够利用GitLab自己搭建一个Gitserver,来作为项目的远程仓库使用。

    我学习Git,就是从Git clone这个命令開始的,才发现去拉取开源项目的代码回来看,是能够如此方便的。

    我在CSDN上面放了一个Android项目。它的Git地址例如以下:

    https://code.csdn.net/foolsheep/todo.git

    那么我能够利用git clone命令将其下载到相应的文件夹中来。

    linmiansheng@linmiansheng-PC /cygdrive/f/test_workspace
    $ ls -al
    总用量 28
    drwx------+ 1 Administrators None   0 六月 19 23:15 .
    drwx------+ 1 SYSTEM         SYSTEM 0 六月 18 16:17 ..

     克隆远程仓库


    如今test_workspace是个空文件夹,以下我们使用git clone命令:

    linmiansheng@linmiansheng-PC /cygdrive/f/test_workspace
    $ git clone https://code.csdn.net/foolsheep/todo.git
    Cloning into 'todo'...
    remote: Counting objects: 183, done.
    remote: Compressing objects: 100% (119/119), done.
    remote: Total 183 (delta 49), reused 179 (delta 49)
    Receiving objects: 100% (183/183), 1.40 MiB | 323 KiB/s, done.
    Resolving deltas: 100% (49/49), done.

    我们能够看到利用git clone命令之后,会从上面的地址将整个todo项目给拷贝到本地了。


    linmiansheng@linmiansheng-PC /cygdrive/f/test_workspace
    $ ls -al
    总用量 32
    drwx------+ 1 Administrators None   0 六月 19 23:16 .
    drwx------+ 1 SYSTEM         SYSTEM 0 六月 18 16:17 ..
    drwxr-xr-x+ 1 linmiansheng   None   0 六月 19 23:16 todo
    
    linmiansheng@linmiansheng-PC /cygdrive/f/test_workspace
    $ cd todo
    
    linmiansheng@linmiansheng-PC /cygdrive/f/test_workspace/todo
    $ ls -al
    总用量 54
    drwxr-xr-x+ 1 linmiansheng   None     0 六月 19 23:16 .
    drwx------+ 1 Administrators None     0 六月 19 23:16 ..
    drwxr-xr-x+ 1 linmiansheng   None     0 六月 19 23:16 .git
    -rw-r--r--  1 linmiansheng   None   333 六月 19 23:16 .gitignore
    drwxr-xr-x+ 1 linmiansheng   None     0 六月 19 23:16 .settings
    -rw-r--r--  1 linmiansheng   None  2041 六月 19 23:16 AndroidManifest.xml
    -rw-r--r--  1 linmiansheng   None 21422 六月 19 23:16 ic_launcher-web.png
    drwxr-xr-x+ 1 linmiansheng   None     0 六月 19 23:16 libs
    -rw-r--r--  1 linmiansheng   None   781 六月 19 23:16 proguard-project.txt
    -rw-r--r--  1 linmiansheng   None   664 六月 19 23:16 project.properties
    -rw-r--r--  1 linmiansheng   None    10 六月 19 23:16 README.md
    drwxr-xr-x+ 1 linmiansheng   None     0 六月 19 23:16 res
    drwxr-xr-x+ 1 linmiansheng   None     0 六月 19 23:16 src

    并且在todo项目里面,我们能够看到生成了.git这种一个Git结构文件夹。
    在之前,我们是利用git init的命令来初始化一个git结构文件夹的,所以能够想像到git clone命令
    应该是先做了git init的操作,然后再去server上抓取了相应的数据的。



    此时,我们能够利用git remote命令来查看一下当前项目配置有哪些远程仓库。

    linmiansheng@linmiansheng-PC /cygdrive/f/test_workspace/todo
    $ git remote
    origin

    能够看到存在一个远程仓库,origin,这是Git为clone下来的远程仓库所使用的默认的名字。
    也能够指定 -v 參数来查看相应的远程地址。

    linmiansheng@linmiansheng-PC /cygdrive/f/test_workspace/todo
    $ git remote -v
    origin  https://code.csdn.net/foolsheep/todo.git (fetch)
    origin  https://code.csdn.net/foolsheep/todo.git (push)

    加入远程仓库

    假设要加入一个新的远程仓库,能够使用 git remote add <项目名> <远程仓库地址>。

    linmiansheng@linmiansheng-PC /cygdrive/f/test_workspace/todo
    $ git remote add volley https://github.com/adamrocker/volley.git
    
    linmiansheng@linmiansheng-PC /cygdrive/f/test_workspace/todo
    $ git remote -v
    origin  https://code.csdn.net/foolsheep/todo.git (fetch)
    origin  https://code.csdn.net/foolsheep/todo.git (push)
    volley  https://github.com/adamrocker/volley.git (fetch)
    volley  https://github.com/adamrocker/volley.git (push)

    能够看到,此时在本地配置中加入多了一个volley的远程仓库。
    只是到这里,也就是在配置中添加了而已。并没有进行实际的操作,到这里,事实上也能够发现
    git clone 命令也为我们实现了 git remote add origin <克隆地址>的操作,对吧。

    这样才会将相应的远程仓库加入到我们的配置中。

    从远程仓库抓取数据(失败)

    接下来,我们能够利用git fetch 命令来从远程仓库中抓取数据,例如以下:

    linmiansheng@linmiansheng-PC /cygdrive/f/test_workspace/todo
    $ git fetch volley
    warning: no common commits
    remote: Reusing existing pack: 1469, done.
    Receiving objects:   2% (30/1469), 324.00 KiB | 7 KiB/s

    。。。这个速度真是有点慢。

    这样,我们就将远程仓库的数据抓取到我们本地了。

    须要记住一点,fetch命令仅仅是将远程仓库的数据抓取到我们本地,它并不会将数据自己主动地整合到我们的分支上。

    这个分支,太慢了,还是把它删了。

    远程仓库本地改名

    在Git中,能够利用git remote rm将远程仓库给删除掉,只是在此之前。我们先学习一下rename,也就是改变远程仓库在本地的项目名称。

    刚才是volley,如今我们能够将其改成volley_slow,例如以下:

    linmiansheng@linmiansheng-PC /cygdrive/f/test_workspace/todo
    $ git remote rename volley volley_slow
    
    linmiansheng@linmiansheng-PC /cygdrive/f/test_workspace/todo
    $ git remote -v
    origin  https://code.csdn.net/foolsheep/todo.git (fetch)
    origin  https://code.csdn.net/foolsheep/todo.git (push)
    volley_slow     https://github.com/adamrocker/volley.git (fetch)
    volley_slow     https://github.com/adamrocker/volley.git (push)

    能够看到,其名字已经变成volley_slow了。

    删除远程仓库在本地的配置

    好了,如今我们能够把它给删掉了。

    linmiansheng@linmiansheng-PC /cygdrive/f/test_workspace/todo
    $ git remote rm volley_slow
    
    linmiansheng@linmiansheng-PC /cygdrive/f/test_workspace/todo
    $ git remote -v
    origin  https://code.csdn.net/foolsheep/todo.git (fetch)
    origin  https://code.csdn.net/foolsheep/todo.git (push)

    从远程仓库抓取数据(成功)

    接下来,我们又一次加入一个远程仓库吧,然后直接抓取数据:

    linmiansheng@linmiansheng-PC /cygdrive/f/test_workspace/todo
    $ git fetch lmswxdev
    Username for 'https://code.csdn.net':
    Password for 'https://sheepjtgjfc@163.com@code.csdn.net':
    warning: no common commits
    remote: Counting objects: 1598, done.
    remote: Compressing objects: 100% (1045/1045), done.
    remote: Total 1598 (delta 551), reused 1384 (delta 431)
    Receiving objects: 100% (1598/1598), 7.95 MiB | 296 KiB/s, done.
    Resolving deltas: 100% (551/551), done.
    From https://code.csdn.net/foolsheep/lmswxdev
     * [new branch]      dev        -> lmswxdev/dev
     * [new branch]      master     -> lmswxdev/master

    有些Git仓库设置了权限,须要输入username跟password,之后,我们就将这个项目的数据给抓取下来了。

    还是相同一句话,要记得。此时仅仅是抓取数据下来。我们并没有将抓来的数据整合到我们的当前分支中。


    在这里,又发现了。git clone 也实现这个操作啊。它把数据都抓取下来了。

    远程分支

    远程仓库的分支叫做远程分支,通过branch命令,我们能够看到当前项目下的各分支:

    linmiansheng@linmiansheng-PC /cygdrive/f/test_workspace/todo
    $ git branch
    * master
    
    linmiansheng@linmiansheng-PC /cygdrive/f/test_workspace/todo
    $ git branch -r
      lmswxdev/dev
      lmswxdev/master
      origin/HEAD -> origin/master
      origin/master

    不加-r參数,显示的是本地的分支。

    指定-r(remote)參数的,显示的则是远程分支。

    能够发现远程分支都是以 <仓库名>/<分支名> 在本地显示出来的。

    抓取下来之后,就能够把远程分支也当做本地分支来看待。所不同的。你没有办法将你的改变推送到远程仓库,假设没有权限的话。

    推送到远程仓库

    假设我们拥有权限的话,我们能够利用push命令,将在本地的提交(commit)给推送到远程仓库上,

    linmiansheng@linmiansheng-PC /cygdrive/f/test_workspace/todo
    $ git push origin master
    Username for 'https://code.csdn.net':
    Password for 'https://code.csdn.net':
    
    fatal: Authentication failed

    假设没有权限,就没有办法了。

    push的语法例如以下:

    git push <远程仓库名> <远程分支名>

    只是其完整的命令应该是

    git push <远程仓库名> <本地分支名>:<远程分支名>

    比方将本地的dev分支推送到远程的master分支。我们就能够使用以下的命令。例如以下:

    git push origin dev:master

    而本地分支名假设置空。同一时候也没有“:”号的话,就等同于:

    git push origin master:master

    删除远程分支

    此假设“:”存在,本地分支号为空的话,例如以下:

    git push origin :master

    这表明要将本地的空分支推送到远程的master分支上,这就会删掉远程的master分支。切记!

    查看仓库信息

    我们还能够利用show命令,来查看本地配置上,远程仓库的信息。例如以下:

    linmiansheng@linmiansheng-PC /cygdrive/f/test_workspace/todo
    $ git remote show origin
    * remote origin
      Fetch URL: https://code.csdn.net/foolsheep/todo.git
      Push  URL: https://code.csdn.net/foolsheep/todo.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的远程管理就到这里,结束。



  • 相关阅读:
    javascript高级编程笔记03(正则表达式)
    javascript高级编程笔记02(基本概念)
    javascript高级编程笔记01(基本概念)
    ExtJS4加载FormPanel数据的几种方式
    Extjs 更新数据集Ext.PagingToolbar的start参数重置的处理
    四川绵阳 晴
    四川绵阳 阴
    四川绵阳 晴
    在IntelliJ IDEA中添加repository模板
    List分组 用于客服对话分组场景
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/6738226.html
Copyright © 2020-2023  润新知