0

Git 使用手册

已有 64 阅读此文人 - - 工具 -

生成并绑定SSH秘钥

进入用户主文件夹

$ cd ~

生成邮箱对应的SSH密钥

$ ssh-keygen -t rsa -f ~/.ssh/id_rsa.oschina -C "emailAddress@163.com"

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

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

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

以 oschina 为例:

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

新增并配置config文件

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

$ touch ~/.ssh/config

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

Host *.oschina.net
    IdentityFile ~/.ssh/id_rsa.oschina
    User rqc

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

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

测试效果:

$ ssh -T git@git.oschina.net

若返回

Welcome to Git@OSC, yourname!

则证明添加成功。

如果返回:

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

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

$ sudo chmod 600 config

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

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

设置 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@git.oschina.net:YourName/yourRepo.git  #添加远程仓库
$ git push -u origin master       #把修改内容推送到master分支

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

已有项目添加到托管平台

$ cd existing_git_repo
$ git remote add origin git@git.oschina.net: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@git.oschina.net/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@git.oschina.net/YourName/yourRepo1.git
$ git remote origin set-url --add git@git.oschina.net/YourName/yourRepo2.git

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

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

提交

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

拉取

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

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

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

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

[remote "origin"]
    url = git@git.oschina.net/YourName/yourRepo1.git
    pushurl = git@git.oschina.net/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. 网络搜索
期待你一针见血的评论,Come on!