GIt

Git属于分散型版本管理系统。版本管理就是管理更新的历史记录。


安装Git

Mac和Linux都预装了Git。
Windows使用msysGit:http://msysgit.github.io/
Use git bash only


初始设置

设置姓名和邮箱地址
git config --global user.name "Firstname Lastname"
git config --global user.email "[email protected]"

将color.ui设置为auto可以让命令的输出拥有更高的可读性

git config --global color.ui auto

设置SSH Key

$ssh-keygen -t rsa -C "email"

之后直接回车,不用填写东西。之后会让你输入密码。然后就生成一个目录.ssh ,里面有两个文件:id_rsa(私有密钥) , id_rsa.pub(公开密钥),还有一个fingerprint值
把这个SSH放到github上。用公钥。先在GitHub上注册一个用户,然后进入account-setting ,把id_rsa.pub的内容复制进去就可以了。
测试OK。输入命令:$ssh -T [email protected]


基本操作

  • 定位——cd ~/
  • git Init ——初始化仓库
mkdir git-tutorial
cd git-tutorial

然后会生成.git目录,这个目录里存储着管理当前目录内容所需的仓库数据。
将这个目录的内容称为”附属于该仓库的工作树“。

  • git status——查看仓库状态
git status

建立README.md文件作为管理对象,未第一次提交做前期准备

touch README.md
  • git add——向暂存区中添加文件
    将其加入暂存区(Stage或者Index)中。
git add README.md
  • git commit——保存仓库的历史记录
  • 记述一行提交信息
git commit -m "First commit"

First commit是提交信息

  • 记述详细提交信息
  git commit```
执行后编辑器就会启动,在编辑器中记述提交信息的格式如下: 
第一行:用一行文字简述提交的更改内容
第二行:空行
第三行以后:记述更改的原因和详细内容
  `Esc`+`shift`+`z`+`shift`+`z`即可推出编辑器并保存
  `Esc`+`:`+`help`可查看编辑器帮助
* **git log**——查看提交日志
commit栏旁是指向这个提交的哈希值。
* `git log --pretty=short `——只显示提交信息的第一行
* `git log README.md `——只显示指定目录、文件的日志
* ` git log -p` ——显示文件的改动
* **git diff**——查看更改前后的差别
在刚刚提交的README.md中写:
>\#Git 教程

* `git diff`——查看工作树和暂存区的差别
然后将README.md加入暂存区:git add README.md
* `git diff HEAD`——查看工作树和最新提交的差别
> **养成好习惯**:在执行git commit前先执行git diff HEAD,查看本次提交与上次提交之间有什么差别,等确认完毕后再进行提交,这里的HEAD是指向当前分支中最新一次提交的指针。

确认过两个提交之间的差别后就可以执行commit命令:

git commit -m "Add index"

查看提交日志,确认提交成功。
***
####分支的操作

* **git branch**——显示分支一览表
* **git checkout -b**——创建、切换分支

git checkout -b feature-A等同于
git branch feature-A
git checkout feature-A

在分支A下修改README.md并提交
 * 切换回上一个分支——**git checkout -**
* **git merge**——合并分支

首先切换到master分支
git checkout master
然后
git merge --no-ff feature-A

 * **git log --graph**——以图表形式查看分支
***
####更改提交的操作
* **git reset**——回溯历史版本
 * 回溯到创建分支A前

git reset --hard 目标时间点的哈希值

 * 创建分支B修改README.md并提交
 * 推进至分支A合并后的状态
`git reflog`可查看当前仓库执行过的操作的日志。找到对应哈希值并回到当时的状态。
 * 消除冲突
合并分支B时分支A更改的部分和分支B发生了冲突。
修改README.md文件,然后提交。
 * **git commit --amend**——修改提交信息
编辑器启动,修改提交信息后保存退出。
 * **git rebase -i**——压缩历史
    * 创建分支C修改README.md并提交C,故意留下拼写错误,然后:git commit -am "Add feature-C"完成两步操作
    * 修正并提交:git commit -am "Fix typo",`错字漏字等失误称作typo`
    * ```
      git rebase -i HEAD~2
出现
     pick 哈希值 Add feature-C
     pick 哈希值 Fix typo
将pick改为fixup便可

分支C合并至master分支。


推送至远程仓库

  • git remote add——添加远程仓库

git remote add origin [email protected]:DumplingsLi/git-tutorial.git

Git自动将远程仓库的名称设置为origin(标识符)
* **git push**——推送至远程仓库
 * 推送至master分支

git push -u origin master

 * 推送至master以外的分支

git checkout -b feature-D
git push -u origin feature-D

***
###从远程仓库获取
* **git clone**——获取远程仓库
 * 获取远程仓库

git clone [email protected]:DumplingsLi/git-tutorial.git
查看当前分支的相关信息
git branch -a

 * 获取远程的feature-D分支

git checkout -b feature-D(本地仓库新建分支名称) origin/feature-D(获取来源的分支名称)

修改分支D并推送。
* **git pull**——获取最新的远程仓库分支

git pull origin feature-D

一些资源:
[Pro Git](http://git-scm.com/book/zh/v1)  作者:[Scott Chacon](https://github.com/schacon)
[LearningGitBranching](http://pcottle.github.io/learnGitBranching/)
[tryGit](http://try.github.io/)

[Github pages的一些用法](http://www.cnblogs.com/ztoz/p/5515475.html)

你可能感兴趣的:(GIt)