Git 使用手册

生成并绑定SSH秘钥

进入用户主文件夹

$ cd ~

生成邮箱对应的SSH密钥

$ ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitee -C "qqqqqq@qq.com"

这时~/.ssh目录下会多出id_rsa.gitee 和id_rsa.gitee.pub两个文件,id_rsa.gitee.pub里保存的就是我们要使用的key
-f ~/.ssh/id_rsa.gitee
指定生成的文件路径和名称,用于区分此密钥使用于哪个代码托管平台,此处以oschina为例
对于本地配置多个ssh key,只需要安装上述方式配置生成key,并修改config文件即可。

复制密钥至官网绑定SSH密钥

$ cat ~/.ssh/id_rsa.gitee.pub

以 gitee为例:

复制密钥至官网绑定SSH密钥

新增并配置config文件

如果config文件不存在,先添加,存在则直接修改

$ touch ~/.ssh/config

在config文件里添加如下内容 (User表示你的用户名)

Host gitee.net
    IdentityFile ~/.ssh/id_rsa.gitee
    User rqc

Host github.com
    IdentityFile ~/.ssh/id_rsa.github
    User rqc

按此语法格式,可继续添加 github.com、gitee.com 当代码托管平台的。能解决本地多个ssh key的问题

测试效果:

$ ssh -T git@gitee.com

若返回

Welcome to Gitee.com, [yourname]!

则证明添加成功。

如果返回:

Bad owner or permissions on /home/YourName/.ssh/config

则是ssh config文件权限的问题。在.ssh目录下,执行下面的语句:

$ sudo chmod 600 config

再次执行$ ssh -T git@gitee.com查看效果,直到添加成功。

创建全新项目并添加到托管平台

设置 Git 全局用户名和邮箱设置:

添加用户名和邮箱:

 git config --global user.name "YourName"   git config --global user.email "emailAddress@qq.com"

不设置提交用户名会显示Unknown

删除用户名和邮箱:

 git config --global --unset user.name   git config --global --unset user.email

创建 git 仓库:

 mkdir MyDir  #新建文件夹   cd MyDir     #进入文件夹
$ git init     #初始化git仓库

对于单个项目设置用户名和邮箱【推荐】

 git config user.name "YourName"   git config user.email "emailAddress@qq.com"

此方式对于不同的代码托管平台可以使用不同的用户名和邮箱。
也可是直接编辑config文件:项目文件夹/.git/config

添加项目说明文件

 echo "# add some introduction" >> README.md    #创建仓库说明文件并添加内容:README.md   git add README.md               #向仓库中添加README.md文件
 git commit -m "first commit"    #提交内容   git remote add origin git@gitee.com:YourName/yourRepo.git  #添加远程仓库
$ git push -u origin master       #把修改内容推送到master分支

登录托管平台,查看效果。

已有项目添加到托管平台

 cd existing_git_repo   git remote add origin git@gitee.com:YourName/yourRepo.git  #添加远程仓库地址
$ git push -u origin master           #推送内容到master分支

登录托管平台,查看效果。

Git 常用命令

查看历史提交记录

$ git log --pretty=oneline
Git 使用手册

查看工作区的状态

$ git status

查看远程连接

$ git remote -v

修改远程连接

$ git remote set-url origin git@gitee.com/YourName/yourRepo.git

Git pull 强制覆盖本地文件

 git fetch --all     git reset --hard origin/master 
$ git pull

Git 高级入门

Git 配置文件

git config 命令,专门用来配置或读取相应工作环境变量。
Git配置文件有三种:

  1. /etc/gitconfig 文件,系统中对所有用户都适用的配置。搭配git config 时用 --system 选项,读取此文件。
  2. ~/.gitconfig 文件,用户目录下的配置文件只适用于该用户。搭配git config 时用 --global 选项,读取此文件。
  3. 项目文件夹.git/config 文件,仅仅对当前项目有效的配置文件。

越往下一级配置则会覆盖上层的所有相同配置。

设置两个 Git 仓库地址

给 origin 设置两个地址:

 git remote origin set-url --add git@gitee.com/YourName/yourRepo1.git   git remote origin set-url --add git@gitee.com/YourName/yourRepo2.git

.git/config配置文件显示如下:

[remote "origin"]
        url = git@gitee.com/YourName/yourRepo1.git url = git@gitee.com/YourName/yourRepo2.git [branch "master"] remote = origin 

提交

$ git push origin master 会同时提交到两个repo

拉取

$ git pull origin master 会同时从两个repo中取得更新。

设置只用来备份的仓库,不会从此仓库更新

 git remote origin set-url --add git@gitee.com/YourName/yourRepo1.git    #会同时pull和push   git remote set-url origin --push --add git@gitee.com:YourName/yourRepo2.git
 #不会pull,只会push

在项目.git/config 里可以看到

[remote "origin"]
    url = git@gitee.com/YourName/yourRepo1.git pushurl = git@gitee.com/YourName/yourRepo2.git ... [branch "master"] remote = origin 

提交
$ git push origin master //会同时提交看两个repo

拉取
$ git pull origin master //只会从 repo1 里取得更新。

参考文章:

  1. Bad owner or permissions on .ssh/config的解决
  2. 网络搜索

Gentoo 安装Git教程

自从看到上篇文章《Archlinux Vs Gentoo》开始,彻底着了Gentoo的道。在一番折腾之后把能换的系统全装了Gentoo,之前的常用软件要一个个的重装。真是生命不止,折腾不休!

本篇主要记录在Gentoo系统上安装git,及基本的配置,主要参考Gentoo wiki Git篇。同时也会介绍怎样设置ssh,让每次的push、pull简单高效。

安装git

安装dev-vcs/git:

root # emerge --ask dev-vcs/git

git基本设置

每个用户必须首先设置用户名及邮箱,例如:

user  git config --global user.name "rqc"   user  git config --global user.email "hi@rqc.im"  

至此,git基本设置已经完成。不过,每次使用git push、git pull等命令时,都需要频繁的输入用户名及密码,如此繁琐完全不符合git的简单高效。建议还是按照以下步骤进行设置,以ssh方式连接git。

ssh方式连接git

  1. 查看本地是否存在ssh密钥:

user $ ls -al ~/.ssh

如果存在删除或直接进行步骤③

  1. 生成ssh密钥:

user $ ssh-keygen -t rsa -C "hi@rqc.im"

  1. 复制 ~/.ssh/id_rsa.pub 文档内容至github或coding账户中。
  2. 测试连通性

user $ ssh -T git@git.coding.net

至此已经完成设置,不过还是要确认远程仓库的地址是否是ssh地址

  1. 查看远程连接地址

user $ git remote -v

如果是https地址,需要通过以下命令更换:

user $ git remote set-url origin git@git.coding.net:rqc/test.git