0%

Git Memo

这里记录了 Git 的操作方法和建立 Git 服务的方法。

git 常用命令解释

1
git remote add origin git@github.com:username/repo.git

origin 是远程库的名字,origin 是git默认的名称,一般不建议修改。

1
git push -u origin master

向远程的仓库中push本地代码,要push的本地分支为master,-u 是把本地分支和远程分支关联起来,只需要在第一次push的时候使用,后续可以直接 git push origin master

1
2
3
4
5
6
git branch # 查看分支
git branch <name> # 创建新分支
git checkout <name> # 切换分支
git checkout -b <name> # 创建分支并且切换到新分支
git merge <name> # 合并分支到当前分支
git branch -d <name> # 删除分支

把本地的src_branch推送到远程的dst_branch

1
2
git push <remote> src_branch:dst_branch
git push origin local:nnvm

综述

  1. 在使用 git 的时候,使用 ssh 协议的 git 用户来 clone 代码, 这样做的好处是, 可以把 key 加入到授权, 不需要每次都输入密码.
  2. github 使用 key 进行授权的方法见下面对应小节.

建立 Git 服务

参考官方文档

  • 创建 git 用户(经实验证明必须是 git 用户), 并且创建相应的授权文件
1
2
3
4
5
sudo adduser git
su git
cd
mkdir .ssh && chmod 700 .ssh
touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
  • 把需要授权的用户的公钥拷贝到 authorized_keys 中进行授权, 该步骤保证被授权的用户可以 pull 和 push 代码
  • 创建项目
1
2
3
4
5
cd /opt/git
mkdir project.git
cd project.git
$ git init --bare
Initialized empty Git repository in /opt/git/project.git/
  • 客户端操作
    现在可以在另外一台机器上,进行正常的 git 操作了

Github 使用 key 登陆方法

  • 首先要保证 clone 的代码是使用的 ssh 协议的 git clone 下来的. 换句话所, 必须保证使用 ssh 协议进行代码传输的. 如果不是, 修改相应的 .git/config 文件, 例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
# 修改下面这一行为现在的样式
url = git@github.com:shuokay/shuokay.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[user]
email = shuokay@gmail.com
name = Yushu Gao
  • 把公钥加入到 github.com 中去
  • .ssh/config 中指定 github.com 使用的私钥文件, 例如:
1
2
3
4
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_shuokay.at.gmail.com

指定 remote 的地址

Push an exist repository

1
2
3
# git remote add origin https://github.com/shuokay/shuokay.git
git remote add origin ssh://git@github.com/shuokay/shuokay.git
git push -u origin master

在同一台终端使用不同的key

修改配置文件 .ssh/config

1
2
3
4
5
Host hostname
HostName 8.8.8.8
User git
IdentityFile ~/.ssh/id_rsa_shuokay.at.gmail.com
IdentitiesOnly yes

key 的管理

生成 ssh key 方法

1
2
3
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# Creates a new ssh key, using the provided email as a label
Generating public/private rsa key pair.

把 key 加入到 ssh-agent

1
2
3
4
# 确认启动
eval "$(ssh-agent -s)"
# 加入
ssh-add ~/.ssh/id_rsa

常用命令

停止跟踪某个文件

1
git rm --cached FILE

设置代理

命令行设置 http 和 https 代理

1
2
git config http.proxy socks5://127.0.0.1:1086
git config https.proxy socks5://127.0.0.1:1086

配置文件设置 ssh 的代理

1
2
3
4
5
# github
Host github.com
HostName github.com
User git
ProxyCommand nc -X 5 -x 127.0.0.1:1086 %h %p # 设置代理