廖雪峰GIT课程笔记

1. git 简介

1. Git是目前最先进的分布式版本控制系统。

2. 创建版本库:cd到目录下 -> git init

3. 把一个文件添加到git仓库需要两部:git add <filename> --> git commit -m <commit message>  git add 分多次添加-->git commit 一次性提交

2. 时光机穿梭

1. git status 查看仓库状态

2. git diff 查看修改    :  读懂diff

2.1 版本回退

1. git log  显示从最近到最远的提交日志。如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数

2. git reset --hard commit_id        HEAD指向当前版本,HEAD^上一个版本,HEAD^^上上个版本,HEAD~100往上100个版本

3. 在回退前可使用git log查看要回退的提交版本号,在重返未来时,可以使用git reflog来确定要回到未来的哪一个版本。

2.2 工作区和暂存区

1. 工作区:就是电脑里能看到的目录  版本库:工作区下有一个隐藏目录.git,这个不算工作区,而是git的版本库。git的版本库里存储了很多东西,其中最重要的就是暂存区(stage),还有git自动为我们创建的第一个分支master,以及指向master的一个指针:HEAD。

2. git add实际上是把文件提交到stage(暂存区),git commit是把暂存区的内容提交到当前分支。

2.3 管理修改

1. 为什么git比其他的版本控制系统更优秀,因为GIT管理的是修改,而非文件。

2. git commit只负责把缓存区里的内容给提交了,没有添加到缓存区内(git add)的内容不会被提交。

3. git diff HEAD -- <filename>可以查看工作区和版本库里最新版本的区别。

2.4 撤销修改

1. git checkout -- filename  撤销工作区的修改,让这个文件回到最近一次git add或git commit时的状态,该命令不会撤销已经add到暂存区(stage)的修改。

一种情况是文件修改后还没有被git add 到暂存区,那么撤销修改后文件就变成和版本库一样的状态。

一种情况是,文件已经被add到暂存区然后又作了修改,那么撤销修改就回到添加到暂存区后的状态。

2. 对于已经git add但没有commit的修改,可以使用git reset  HEAD <filename>来把暂存区的修改撤销掉(unstage)

2.5 删除文件

1. 在文件管理器中删除文件后,文件并没有从版本库中删除掉

如若确实要从版本库中删除该文件,可以先git rm <fileme> 然后git commit

若是误删,可以使用git checkout -- <filename>恢复

3. 远程仓库

1. 注册github账号后,去用户主目录下的.ssh文件夹下寻找公钥文件(id_rsa.pub)和私钥文件(id_rsa),如果没有使用如下命令生成:

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

2. 将你的公钥文件中的内容(id_rsa.pub)拷贝到GitHub里面

登录GitHub-》Account Settings-》SSH keys-》Add SSH Key-》粘贴到对应位置

GitHub通过你的公钥来确定你的身份,只有通过你的私钥加密的文件才能正确通过你的私钥解密。

3.1 添加远程库

1. 将本地的仓库同步到GItHub上的一个远程库

在GitHub上“create a new repo”-》填入相关信息-》git remote add origin github项目名-》git push -u origin master(将本地分支内容推送到远程分支,并将本地分支和远程分支关联起来)-》以后可以使用git push origin master来向远程推送修改

3.2 从远程仓库克隆

1. git clone <远程仓库地址>

2. git支持ssh协议和http协议,也就有两种不同的远程仓库地址。通过ssh支持的原生git协议速度最快,https协议每次推送都要输入口令,但是在某些只开放了http端口的公司内部只能使用http地址。

4. 分支管理

4.1 创建与合并分支

1. 最初,master分支是一条线,Git用master指向最新的提交,用HEAD指向当前分支,即master。当我们创建并切换到一个新的分支dev时,Git创建一个新的指针dev,指向与master相同的提交,再把HEAD指向dev,表示当前分支在dev上。Git创建一个分支很快,因为除了创建一个dev指针,并且改变一下HEAD指针的指向,工作区的文件没有发生任何变化。在后续的修改和提交中dev指针不断向前移动,而master指针不变。合并时,最简单的方式就是直接把master指向dev的当前提交,因此合并也很快,也是只改改指针,而工作区的呢绒不变。

2. 

a. 创建dev分支并切换到dev分支:git checkout -b dev。这一句相当于两句,首先是创建dev分支:git branch dev 然后是切换到dev分支:git checkout dev

b. git branch 命令查看当前分支  git checkout dev/master 完成分支间的切换

c. git merge dev 合并指定分支(即dev)到当前分支

d. git branch -d dev  删除指定分支(即dev)

4.2 解决冲突

1. 

posted @ 2018-06-26 17:06  蓦然闻声  阅读(127)  评论(0编辑  收藏  举报