Git附加项

设置和取消Shadowsocks代理

1
2
3
4
5
6
7
8
//设置代理
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'


//取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy

用Git当SVN客户端

  • 下载代码

    1
    git svn clone svn://svn地址/项目名 -s

    Git 必须一次一个地检出一个版本同时单独地提交它。对于有成百上千个提交的项目,这真的可能会花费几小时甚至几天来完成。

    -T trunk -b branches -t tags 部分告诉 Git Subversion 仓库遵循基本的分支与标签。可以能用 -s 来替代整个这部分,这表示标准布局并且指代所有那些选项。

  • 若本地已有更改,此时想更新服务器上的代码到本地,可以使用git stash

  • 然后再从svn服务器同步下载

    1
    git svn rebase
  • 如果rebase之前是用stash的话,再使用git stash apply (或 git stash pop 恢复并删除暂存)

  • 若之前clone下来的svn项目,后来新增了一些分支和tag,此时用git branch -a查看时,这些新增的分支是没有被同步下来的,需要用git svn fetch --all

Git别名

1
2
3
4
$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status

当要输入 git commit 时,只需要输入 git ci

为了解决取消暂存文件的易用性问题,可以向 Git 中添加你自己的取消暂存别名:

1
$ git config --global alias.unstage 'reset HEAD --'

这会使下面的两个命令等价:

1
2
$ git unstage fileA
$ git reset HEAD -- fileA

Git暂时忽略文件修改

当你修改一个巨大的文件的时候,每次保存一次Git都要计算文件的变化并且更新工作区,当磁盘速度慢的时候延迟卡顿非常大,这个时候就可以先对文件进行git update-index --assume-unchanged <PATH> 操作,这样Git就暂时不会计算你对文件所做的修改。当你的工作已经完成可以进行提交的时候,重置标识为git update-index --no-assume-unchanged <PATH>,此时Git只需要进行一次的更新。相较于每次保存都计算一次更新而言,这显然是可以接受的。

Git首次提交

1
2
3
4
5
$ git init
$ git add README.md
$ git commit -m "first commit"
$ git remote add origin git@github.com:用户名/项目名.git
$ git push -u origin master