git使用的几个小tips分享

写在前面

本文是我在使用git过程中总结出来的几个小经验,能够解决初学者在使用远程仓库,如GitHub、Gitee等,可能遇到的几个常见问题。由于本人也在不断探索中,有新的经验也会继续在这里不定期更新。

问题1:Github上面的项目太大怎么办?

初学者看到好的项目,一般直接git clone下来。但是对于大型项目,通常有很多分支,我们可以轻量的clone项目。

仅clone某个分支

# [branch]是要clone的分支名,[origin]是项目地址
git clone -b [branch] [origin]

仅clone最新一次commit

git clone --depth=1 [origin]
# 当然也可以二者结合
git clone -b [branch] --depth=1 [origin]

问题2:Github下载速度慢怎么办?

由于GitHub服务器在国外,本人经常遇到项目clone一半就断掉的情况。解决这个问题,网上常用的是两个方法[1]

更改host

  1. 打开网站https://www.ipaddress.com/

  2. 分别在上面打开的网站中查找github.com和github.global.ssl.fastly.net的IP地址;

  3. 将上面的两个IP地址存到本地hosts文件中(该文件的地址一般在C:\Windows\System32\drivers\etc\下);

# 示例如下
140.82.113.3    github.com
151.101.185.194    github.global.ssl.fastly.net 
  1. 打开cmd,在cmd命令行输入:ipconfig/flushdns(刷新dns)。

利用Gitee同步

  1. 打开码云https://gitee.com/ 并注册登录;

  2. 创建仓库;

  3. 在新建仓库页选择 “导入已有仓库”;

  4. 复制你需要下载的git链接,如https://github.com/star2dust/parl-notes.git 放到导入已有仓库中;

  5. 点击创建,然后下载。

问题3:git如何同步代码多个远程仓库?

当GitHub的龟速逼着我们使用多个远程仓库时,问题又来了。怎么同步多个远程仓库呢?

如果只在GitHub和Gitee之间同步,还是比较容易的。首先Gitee可以完美搬运GitHub仓库并同步,但反过来就比较麻烦了,毕竟GitHub没这功能。那么我们就需要如下步骤:

  1. 本地clone一下Gitee仓库;
git clone [gitee origin]
  1. 删除origin默认远程库;
git remote rm origin
  1. 再关联GitHub远程库;
git remote add origin [github origin]
  1. 最后push origin就可以了。

对于多个远程库中,需要用不同的名称来标识不同的远程库,而git给远程库起的默认名称是origin。所以我们需要修改、配置名称,以关联不同远程库。有两种方式[2]:

命名方式同步

  1. 先删除已关联的名为origin的远程库;
git remote rm origin
  1. 然后,再关联GitHub的远程库;
git remote add github [github origin]
  1. 接着,再关联码云的远程库。
git remote add gitee [gitee origin]

配置方式同步

修改.git文件夹内的config文件:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    url = git@github.com:user/demo.git
    fetch = +refs/heads/*:refs/remotes/github/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

将上述文件内容[remote "origin"]内容复制,修改origin名称,内容如下:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "github"]
    url = git@github.com:user/demo.git
    fetch = +refs/heads/*:refs/remotes/github/*
[remote "gitee"]
    url = git@gitee.com:user/demo.git
    fetch = +refs/heads/*:refs/remotes/gitee/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

查看远程库

通过以上两种方式的任一种方式配置完成后,我们用git remote -v查看远程库信息:

gitee   git@gitee.com:user/demo.git (fetch)
gitee   git@gitee.com:user/demo.git (push)
github  git@github.com:user/demo.git (fetch)
github  git@github.com:user/demo.git (push)

  1. 解决访问github等网站慢或下载失败的问题。https://www.cnblogs.com/USTC-ZCC/p/11163292.html ↩︎

  2. git同步代码至github和gitee(码云)。https://zhuanlan.zhihu.com/p/71163868 ↩︎