/************************************************************************
* git 笔记
* 改动文件之后,想要备份时,通常都是给文件起一个名字,并记录上日期.
* 等下次查看时,又很难发觉哪里改动了.版本控制器就是为解决这些问题而诞生的.
* 本文主要记录从网上摘录的一些git使用方法.内容源自以下链接.
* 参考文档:
* http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
* http://www.bootcss.com/p/git-guide/
*
* Tony Liu, 2016-5-23, Shenzhen
*****************************************************************************/
1. 安装
sudo apt-get install git
2. 创建git可管理仓库:
创建空目录,进入目录
mkdir dir
cd dir
git init
在dir目录下会生成.git目录
3. touch readme.txt
git add filename 将文件保存到缓存stage
提交的到本地仓库,并添加提交说明
git commit -m "代码提交信息"
4. 查看git 状态
git status
5. 查看文件和库中的区别
git diff readme.txt
6. 查看日志
git log
7. 回退版本
回退到最新提交版本
git reset --hard HEAD
回退到上一个版本
git reset --hard HEAD^
回退到上上一个版本
git reset --hard HEAD^^
回推到之前的第100版本
git reset --hard HEAD~100
git reset --hard <commit id>
8. 查看每一次命令
git reflog
9. 回退到更新的版本
git reflog <commit id>
commit id通过reflog查看
10. 撤销修改
git checkout -- readme.txt
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
11. 删除
git rm readme.txt
git commit -m "remove readme.txt"
12. 将你的仓库连接到某个远程服务器,你可以使用如下命令添加:
git remote add origin <server>
git remote add origin git@server-name:path/repo-name.git
13. 本地库推送到服务器
第一次推送
git push -u origin master
以后
git push origin master
14. 克隆一个库
从服务器上克隆
git clone git@github.com:michaelliao/gitskills.git
本地克隆
git clone /path/to/repository
15. 创建分支
git branch dev
16. 切换到分支
git checkout dev
17. 查看当前分支
git branch
18. 将dev于master分支合并
git merge dev
19. 删除分支
合并完成之后删除
git branch -d dev
20. 查看分支合并图
git log --graph
21. 删除分支后,保留分支信息
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
git merge --no-ff -m "merge with no-ff" dev
22. 保存现场
git stash
查看
git stash list
回复
git stash apply
删除stash内容
git stash drop
恢复并删除stash
git stash pop
23. 删除为未合并分支
git branch -D <name>
24. 查看远程库信息,使用git remote -v;
本地新建的分支如果不推送到远程,对其他人就是不可见的;
从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
23. git tag <tag name>
给某一个提交的版本打上标签
git tag <tag name> <commit id>
查看标签的文字说明
git show <tagname>
删除标签
git tag -d <tag name>
24. 忽略特殊文件
在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。
25. 配置别名
st就表示status:
git config --global alias.st status