Git笔记
安装
创建版本库
首先,选择一个合适的地方,创建一个空目录:
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
pwd命令用于显示当前目录
第二步,通过git init命令把这个目录变成Git可以管理的仓库:
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。
不一定必须在空目录下创建Git仓库,选择一个已经有东西的目录也是可以的。不过,不建议你使用自己正在开发的公司项目来学习Git,否则造成的一切后果概不负责。
把文件添加到版本库:
第一步,用命令git add告诉Git,把文件添加到仓库:
$ git add readme.txt
第二步,用命令git commit告诉Git,把文件提交到仓库:
$ git commit -m "wrote a readme file"
[master (root-commit) eaadf4e] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt
运行git status命令看看结果
用git diff这个命令查看difference
git log命令查看从最近到最远的提交日志
如果嫌输出信息太多,看得眼花缭乱的,可以试试加上–pretty=oneline参数
在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
使用git reset命令回退到上一个版本:$ git reset --hard HEAD^
命令git reflog用来记录你的每一次命令
工作区(Working Directory)->文件夹
版本库(Repository)->.git
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
用git diff HEAD – readme.txt命令可以查看工作区和版本库里面最新版本的区别
git checkout – file可以丢弃工作区的修改:git checkout – file命令中的–很重要,没有–,就变成了“切换到另一个分支”的命令
用命令git reset HEAD 可以把暂存区的修改撤销掉(unstage),重新放回工作区
确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit
远程库
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容
首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库
在Repository name填入learngit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库
根据GitHub的提示,在本地的learngit仓库下运行命令:$ git remote add origin git@github.com:michaelliao/learngit.git
远程库的名字就是origin,这是Git默认的叫法
下一步,就可以把本地库的所有内容推送到远程库上:$ git push -u origin master
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
从现在起,只要本地作了提交,就可以通过命令:$ git push origin master
当你第一次使用Git的clone或者push命令连接GitHub时,会得到SSH警告
分支
查看分支:git branch
创建分支:git branch
切换分支:git checkout
创建+切换分支:git checkout -b
合并某分支到当前分支:git merge
删除分支:git branch -d
克隆到本地
git clone <远程地址>