下载安装Git后,需要先配置好账户/仓库的SSH公钥。
$ ssh-keygen -t rsa -C "xxxxx@xxxxx.com"
按照提示完成三次回车,即可生成 ssh key。通过查看 ~/.ssh/id_rsa.pub 文件内容,获取到你的 public key
$ cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDgBvwu....
然后copy 公钥,在github上打开设置
找到 SSH and GPG keys 然后点右上角添加
好,到了这一步,你的git已经可以访问仓库
当然你可以配置多个SSH-Key,命令如下
$ ssh-keygen -t rsa -C 'xxxxx@company.com' -f ~/.ssh/github_id_rsa
$ ssh-keygen -t rsa -C 'xxxxx@qq.com' -f ~/.ssh/gitee_id_rsa
然后在~/.ssh 目录下新建一个config文件,添加如下内容(其中Host和HostName填写git服务器的域名,IdentityFile指定私钥的路径)
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa
# gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_id_rsa
然后用下面的命令测试一下
$ ssh -T git@gitee.com
$ ssh -T git@github.com
成功的话会返回下面的信息,以github为例
初始化仓库
创建新文件夹,打开,然后执行
$ git init
以创建新的 git 仓库
当然你也可以检出一个远程的代码仓库
$ git clone username@host:/path/to/repository
或者创建一个本地仓库的克隆版本
$ git clone /path/to/repository
添加和提交
$ git add filename 添加指定文件
$ git add . 提交未跟踪和修改文件,但是不处理删除文件
$ git add all 可以提交未跟踪、修改和删除文件
$ git add file1 file2 file3 一次性提交多个文件,file之间用空格隔开
$ git add dir 添加一个文件夹
添加完文件之后,就需要commit了
$ git commit -m "注释"
这个时候你的改动就算是已经提交到HEAD了,但是,到这个时候你的改动还没有推到远程仓库
所以接下来就需要把提交的代码推到远端仓库
$ git push origin xxxx
执行了此命令,你的代码才会被推到远端仓库
分支
在开发过程当中肯定是需要用到分支的,创建一个新的分支命令
$ git checkout -b xxxx
切回主分支
$ git checkout master
如果想删除刚才新建的分支,执行以下命令
$ git branch -d xxxx
你创建了新分支之后,除非你把新分支推到远端仓库,否则别人是看不到的
$ git push origin xxxx
更新与合并
要更新你的本地仓库到最新改动,执行
$ git pull origin xxxx
这里 pull 其实是执行了 fetch 和 merge 两个动作
要合并其他分支到你的当前分支,执行
$ git merge xxxx
pull 和 merge 的时候Git都会尝试自动合并代码,但是有时候会出现冲突,这个时候就需要你
自己去手动解决冲突,改完之后,你还需要
$ git add filename
当然在合并之前你可以使用一下命令来预览两个分支之间的差异
$ git diff master develop
标签
列出已有标签
$ git tag
v0.1
v1.3
或者找某个版本的标签
$ git tag -l 'v1.4.2.*'
v1.4.2.1
v1.4.2.2
v1.4.2.3
v1.4.2.4
这里是允许使用匹配符的
新建一个标签
$ git tag -a v1.0 -m 'my version 1.0'
这个时候你就新建了 v1.0这个标签,假如你想看这个标签对应的版本信息
$ git show v1.0
然后把标签推到远端仓库
$ git push origin v1.0
LOG
Git也是有历史记录的,如果你想看本地仓库的历史记录
$ git log
你可以添加一些参数来修改他的输出,从而得到自己想要的结果。 只看某一个人的提交记录:
$ git log --author=xxxx
或者你想压缩成每个记录一行
$ git log --pretty=oneline
又或者你想通过 ASCII 艺术的树形结构来展示所有的分支, 并且每个分支都要标示他的名字和标签:
$ git log --graph --oneline --decorate --all
你想看看哪些文件改动了
$ git log --name-status
以上这些,只是git log的一小部分参数,也是比较常用到的,如果你想知道更多的参数,参考
$ git log --help