参照廖雪峰的git教程做了下自己的总结,包括一些常用的命令,用于自己查阅
公钥 私钥
在本地创建公钥,加密一波,生成私钥;把公钥传到远端,也加密一波,生成私钥;比较本地私钥和远程私钥,那肯定是一样的啊,所以就不用每次都输入密码了
SSH
- 创建本地公钥
ssh-keygen -t rsa -C leonsux@163.com
一路enter
- 将公钥添加到远程
复制 id-rsa.pub
到 SSH an GPG keys
- 配置本地用户
查看用户名
git config –global user.name
设置用户名
git config –global user.name leonsux
查看邮箱
git config –global user.email
设置邮箱
git config –global user.email leonsux@163.com
创建版本库(repository)
$ mkdir home
$ cd home
$ pwd
创建一个名为home的文件夹 进入home 显示当前目录
$ git init
初始化版本库,将当前目录变成git可以管理的仓库,会生成一个默认隐藏的.git目录,里面的内容不要动。
创建/添加/提交
在home里新建个文件,readme.md。内容随意。
$ git status
查看仓库的状态,修改文件内容,或者添加/删除文件都能看到
$ git add readme.md
$ git add . //添加全部更改
将文件添加到暂存区(文件名区分大小写),但并未提交(commit)
$ git commit -m"提交时的备注信息"
提交会把暂存区的所有内容提交到仓库
修改/提交日志/版本退回
$ git diff read.md
查看对文件做了哪些修改
$ git log
$ git log --pretty=oneline
查看修改日志,可以看到版本号和对应的版本备注信息,后面的 –pretty=oneline 为一行显示,便于观察
$ git reset --hard HEAD^
$ git reset --hard HEAD^^
$ git reset --hard 1484761464
依次为:退回到上一个版本,退回到上上个版本,退回到版本号为1484761464的版本 那么,我怎么知道版本号呢?
$ git reflog
查看之前所有的提交日志(包括版本号,版本备注信息),这样就可以退回到任何版本了,此外不仅可以退回到以前的版本,因为记录了每次的提交记录,所以也可以返回到最新的版本。就比如:现在是2.0版本,今天我退回到1.9版,第二天我突然觉得2.0版还挺好的,就可以用 git reflog查看2.0版的版本号,再用git reset –hard erf4864返回。
撤销修改
- 修改文件内容,并未添加到暂存区 手动把做的修改改回来,或者用下面的命令
$ git checkout -- readme.md
- 修改文件内容,同时添加到暂存区(git add readme.md)
$ git reset head readme.md //回到第一种情况(未添加到暂存区)
$ git checkout -- readme.md
- 修改文件内容,添加到暂存区,提交到仓库(git commit -m”add error”) 还想啥呢,版本退回吧
删除文件
手动删除
命令删除
$ rm readme.md
用 git status 可以看到文件被删除的信息 这时可以选择撤销此次删除(跟撤销修改的操作一样):
$ git checkout -- readme.md
也可以选择确实要从版本库中删除这个文件:
$ git rm readme.md
$ git commit -"remove readme.md"
这样的话就从版本和本地磁盘上都删除掉了,但你仍然可以通过版本退回找回删除的文件,总之,只要有过提交记录,都能找回来。
分支
查看本地分支
$ git branch
创建新分支
$ git branch newbranch
查看远程分支
$ git branch -a
切换分支
$ git checkout mybranch
删除本地分支/远程分支
$ git branch -d mybranch
$ git push origin --delete mybranch
合并分支
假设现在是在主分支master上,本地还有一个leon分支
$ git merge leon
这样的话就把leon分支合并到了master上,leon内容不变,merge后会自动commit
merge的话可能会让你填写merge内容(在bash中),这就涉及到vim(Linux的东东),这时候面对小黑框你可能输入什么都不好使,因为vim中输入前要输入i
(insert的意思)才行,然后开始写内容(merge相关的内容),那么问题来了,写完我怎么保存退出呢?写完按esc
键,然后输入:wq
(w:write,q:quit)就ok啦
添加到远程仓库
现在GitHub上注册账号,然后创建一个新的仓库 在本地仓库下执行:
$ git romte add origin git@github.com:leonsux/gitstudy.git
将本地仓库内容推送到远程仓库
$ git push -u origin master
其中的-u可以把本地的master分支和远程的master分支关联起来,在以后的推送和拉取时就可以简化,直接使用:
$ git push origin master
修改指令
status,commit这些指令名字太长了,每次输入很麻烦,麻烦的话那就有解决的办法,来自定义这些指令的名字吧
git config --global alias.st status
这样每次查看状态的时候就用git st
即可,其他的指令也是同理
git config --global alias.ci commit
git config --global alias.co checkout
git config --global alias.br branch