Git Memo

git 操作的记录

综述

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

建立 Git 服务

参考官方文档

  1. 创建 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
  2. 把需要授权的用户的公钥拷贝到 authorized_keys 中进行授权, 该步骤保证被授权的用户可以 pull 和 push 代码

  3. 创建项目

    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/
  4. 客户端操作
    现在可以在另外一台机器上,进行正常的 git 操作了

Github 使用 key 登陆方法

  1. 首先要保证 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
  2. 把公钥加入到 github.com 中去

  3. .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 host
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. 停止跟踪某个文件
    1
    git rm --cached FILE