git最重要的功能就是将代码提交到远端服务器,和从远端服务器下载数据。

上一篇讲解了如何在本地将文件保存到git,但是真正的工作中,仅保存在本地是不够的,我们还需要将代码定时更新到远端git数据库中。这样,才能保证数据不易丢失,大家一起维护远端git,保证互相代码及时更新。

github是目前最流行的开源git仓库,很多工程师都使用github作为个人代码仓库。这里,以github为例子,演示如何将本地代码和github很好的进行传输。

  • 克隆
  • git clone
    将远程仓库的代码,克隆到本地的目录下,此时本地代码和远程仓库建立了关系,之后可以进行文件的拉取和推送。

    username是你的github用户名,project是你的项目名字,密码是你的github密码。执行完成后,会将project项目克隆到当前目录下。

    root [~] git clone https://username@github.com/username/project ./project
    Initialized empty Git repository in /tmp/project/.git/
    Password:
    remote: Counting objects: 172, done.
    remote: Total 172 (delta 0), reused 0 (delta 0), pack-reused 172
    Receiving objects: 100% (172/172), 36.33 KiB, done.
    Resolving deltas: 100% (68/68), done.
    root [~] ls -l project/
    total 52
    drwxr-xr-x 2 root root 4096 Sep 19 19:20 base
    drwxr-xr-x 2 root root 4096 Sep 19 19:20 config
    -rw-r--r-- 1 root root 2667 Sep 19 19:20 config.py
  • 拉取和提交
  • git push,将本地代码提交到远程git上面。
    在本地做一些文件改动,并提交到本地git,然后推送到github上。

    root [~] git push
    Password:
    Counting objects: 5, done.
    Writing objects: 100% (3/3), 247 bytes, done.
    Total 3 (delta 0), reused 0 (delta 0)
    To https://username@github.com/username/remote_test
       5a3e349..4dbc347  master -> master

    git pull,拉取远端git代码到本地。
    在github上直接修改代码,本地拉取更新。

    root [~] git pull
    Password:
    remote: Counting objects: 3, done.
    remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
    Unpacking objects: 100% (3/3), done.
    From https://github.com/username/remote_test
       4dbc347..c071e59  master     -> origin/master
    Updating 4dbc347..c071e59
    Fast-forward
     newfile |    1 +
     1 files changed, 1 insertions(+), 0 deletions(-)
  • 添加远程git
  • 克隆的例子,是从git上面下载代码到本地。但是,如果我们先有了本地的git仓库,然后希望将这个仓库更新到github上面,就需要用到下面的命令:
    git remote add origin

    #快速创建一个本地git目录
    root [~] mkdir ranshy
    root [~] cd ranshy/
    root [~] git init
    #创建一个文件,提交到本地git
    root [~] echo 'hello world' > newfile
    root [~] git add newfile
    root [~] git commit -m 'add remote test'
    #添加远端git数据库
    root [~] git remote add origin https://username@github.com/username/remote_test
    #提交
    root [~] git push -u origin master
    Password:
    Counting objects: 6, done.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (6/6), 426 bytes, done.
    Total 6 (delta 0), reused 0 (delta 0)
    To https://username@github.com/username/remote_test
     * [new branch]      master -> master
    Branch master set up to track remote branch master from origin.

    这时,我们再看github的remote_test项目,本地修改的代码已经提交上来了。

  • 注意事项
  • 提交远程git时,输入完密码如果报错误:error: The requested URL returned error: 403 Forbidden while accessing ,有可能是我们密码输入错误,也有可能是github上面没有建立该项目,或者该项目无权限写入。

    github的远端路径,不要使用https://github.com/username/project.git,会提交失败,而需要改成https://username@github.com/username/example.git

    修改远端仓库地址有三种办法:
    1. 使用git remote rm办法删除,然后重新创建
    2. git remote set-url []
    3. 直接修改.git/config文件夹,[remote "origin"]