家有琴童-读书简记 千脑智能-读书简记 笔记的方法-读书简记 心经抉隐-读书简记 刷新:重新发现商业与未来-读书简记 认知觉醒-读书简记 真希望我父母读过这本书-读书简记 模仿欲望-读书简记 蛤蟆先生去看心理医生-读书简记 十分钟冥想-读书简记 当我谈跑步时,我谈些什么-读书简记 乔布斯、禅与投资-读书简记 掌控习惯-读书简记 金钱心理学-读书简记 被讨厌的勇气-读书简记 身心合一的奇迹力量-读书简记 零极限-读书简记 投资最重要的事-读书简记 语言学的邀请-读书简记 更富有、更睿智、更快乐-读书简记 管理的常识-读书简记 卡片笔记写作法-读书简记 纳瓦尔宝典-读书简记 卓有成效的管理者-读书简记 贪婪的多巴胺-读书简记 清醒的活-读书简记 像哲学家一样生活:斯多葛哲学的生活艺术-读书简记 你是你吃出来的-读书简记 你可以跑的更快-读书简记 丹尼尔斯经典跑步训练法-读书简记 非暴力沟通-读书简记 异类-读书简记 稀缺-读书简记 为什么要睡觉-读书简记 事实-读书简记 世界上最快乐的人-读书简记 病毒学概览-读书简记 免疫学概览-读书简记 内观-读书简记 沟通的艺术-读书简记 你的生命有什么可能-读书简记 演化的故事-读书简记 经济学原理:宏观经济学分册-读书简记 经济学原理:微观经济学分册-读书简记 社会心理学-读书简记 追寻记忆的痕迹-读书简记 情绪-读书简记 远见:如何规划职业生涯3阶段-读书简记 存在主义心理治疗-读书简记 P·E·T父母效能训练-读书简记 彼得·林奇的成功投资-读书简记 2015-2020美国居民膳食指南-读书简记 中国居民膳食指南(2016)-读书简记 批判性思维-读书简记 代码大全-读书简记 游戏力-读书简记 成功,动机与目标-读书简记 基因组:人种自传23章-读书简记 YOU身体使用手册-读书简记 登天之梯-读书简记 为什么学生不喜欢上学-读书简记 请停止无效努力-读书简记 麦肯基疗法-读书简记 跟简七学理财-课程简记 指数基金投资指南(2017中信版)-读书简记 指数基金投资指南(2015雪球版)-读书简记 让大脑自由:释放天赋的12条定律-读书简记 养育的选择-读书简记 GPU高性能编程CUDA实战-读书简记 百万富翁快车道-读书简记 原则-读书简记 穷查理宝典-读书简记 C++并发编程实战-读书简记 哲学家们都干了些什么-读书简记 Effective C++-读书简记 通往财富自由之路-读书简记 Linux命令行与Shell脚本编程大全-读书简记 刻意练习-读书简记 写给大家看的设计书-读书简记 习惯的力量-读书简记 好好学习-读书简记 硅谷最受欢迎的情商课-读书简记 富爸爸,穷爸爸-读书简记 如何说孩子才会听,怎么听孩子才会说-读书简记 阻力最小之路-读书简记 ProGit-读书简记 思考:快与慢-读书简记 C语言深度剖析-读书简记 编程珠玑-读书简记 Head First 设计模式-读书简记 反脆弱-读书简记 我的阅读书单 小强升职记-读书简记 观呼吸-读书简记 黑客与画家-读书简记 晨间日记的奇迹-读书简记 如何高效学习-读书简记 即兴的智慧-读书简记 精力管理-读书简记 C++编程思想-读书简记 拖延心理学-读书简记 自控力-读书简记 伟大是熬出来的-读书简记 生命不能承受之轻-读书简记 高效能人士的七个习惯-读书简记 没有任何借口-读书简记 一分钟的你自己-读书简记 人生不设限-读书简记 暗时间-读书简记
家有琴童-读书简记 千脑智能-读书简记 笔记的方法-读书简记 心经抉隐-读书简记 刷新:重新发现商业与未来-读书简记 认知觉醒-读书简记 真希望我父母读过这本书-读书简记 模仿欲望-读书简记 蛤蟆先生去看心理医生-读书简记 十分钟冥想-读书简记 当我谈跑步时,我谈些什么-读书简记 乔布斯、禅与投资-读书简记 掌控习惯-读书简记 金钱心理学-读书简记 被讨厌的勇气-读书简记 身心合一的奇迹力量-读书简记 零极限-读书简记 投资最重要的事-读书简记 语言学的邀请-读书简记 更富有、更睿智、更快乐-读书简记 管理的常识-读书简记 卡片笔记写作法-读书简记 纳瓦尔宝典-读书简记 卓有成效的管理者-读书简记 贪婪的多巴胺-读书简记 清醒的活-读书简记 像哲学家一样生活:斯多葛哲学的生活艺术-读书简记 你是你吃出来的-读书简记 你可以跑的更快-读书简记 丹尼尔斯经典跑步训练法-读书简记 非暴力沟通-读书简记 异类-读书简记 稀缺-读书简记 为什么要睡觉-读书简记 事实-读书简记 世界上最快乐的人-读书简记 病毒学概览-读书简记 免疫学概览-读书简记 内观-读书简记 沟通的艺术-读书简记 你的生命有什么可能-读书简记 演化的故事-读书简记 经济学原理:宏观经济学分册-读书简记 经济学原理:微观经济学分册-读书简记 社会心理学-读书简记 追寻记忆的痕迹-读书简记 情绪-读书简记 远见:如何规划职业生涯3阶段-读书简记 存在主义心理治疗-读书简记 P·E·T父母效能训练-读书简记 彼得·林奇的成功投资-读书简记 2015-2020美国居民膳食指南-读书简记 中国居民膳食指南(2016)-读书简记 批判性思维-读书简记 代码大全-读书简记 游戏力-读书简记 成功,动机与目标-读书简记 基因组:人种自传23章-读书简记 YOU身体使用手册-读书简记 登天之梯-读书简记 为什么学生不喜欢上学-读书简记 请停止无效努力-读书简记 麦肯基疗法-读书简记 跟简七学理财-课程简记 指数基金投资指南(2017中信版)-读书简记 指数基金投资指南(2015雪球版)-读书简记 让大脑自由:释放天赋的12条定律-读书简记 养育的选择-读书简记 GPU高性能编程CUDA实战-读书简记 百万富翁快车道-读书简记 原则-读书简记 穷查理宝典-读书简记 C++并发编程实战-读书简记 哲学家们都干了些什么-读书简记 Effective C++-读书简记 通往财富自由之路-读书简记 Linux命令行与Shell脚本编程大全-读书简记 刻意练习-读书简记 写给大家看的设计书-读书简记 习惯的力量-读书简记 好好学习-读书简记 硅谷最受欢迎的情商课-读书简记 富爸爸,穷爸爸-读书简记 如何说孩子才会听,怎么听孩子才会说-读书简记 阻力最小之路-读书简记 ProGit-读书简记 思考:快与慢-读书简记 C语言深度剖析-读书简记 编程珠玑-读书简记 Head First 设计模式-读书简记 反脆弱-读书简记 小强升职记-读书简记 观呼吸-读书简记 黑客与画家-读书简记 晨间日记的奇迹-读书简记 如何高效学习-读书简记 即兴的智慧-读书简记 精力管理-读书简记 C++编程思想-读书简记 拖延心理学-读书简记 自控力-读书简记 伟大是熬出来的-读书简记 生命不能承受之轻-读书简记 高效能人士的七个习惯-读书简记 没有任何借口-读书简记 一分钟的你自己-读书简记 人生不设限-读书简记 暗时间-读书简记

Git常用命令总结

2014年11月05日

一 关于添加、删除和回退


1 想要git不再跟踪这个文件,但是又不想在硬盘中删除该文件:git rm --cached file。

2 在被git管理的目录中删除文件时,可以选择如下两种方式:

① 删除文件后git commit -am "abc"(相当于git add + git commit -m)。

② git rm + git commit -m "abc"。

3 如果rm(直接删除)了,但想恢复:git checkout -- file。

4 git rm后恢复

① 如果没提交: git reset HEAD。

② 已经commit到分支:git reset --hard <之前的版本,可用git reflog查看>。

5 修改后恢复。

① 当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

② 当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

③ 已经提交了不合适的修改到版本库时,想要撤销本次提交,则进行版本回退(git reset --hard ) HEAD时,表示最新的版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个写成HEAD~100。

6 添加

① git add -u [<path>]:把<path>中所有tracked文件中被修改过或已删除文件的信息添加到索引库。它不会处理untracted的文件。省略<path>表示.,即当前目录。

② git add -A [<path>]:把<path>中所有tracked文件中被修改过或已删除文件和所有untracted的文件信息添加到索引库。省略<path>表示.,即当前目录。

③ git add -i [<path>] :查看<path>中被所有修改过或已删除文件但没有提交的文件。

7 修改commit

如果没有push,可以使用git commit --amend来修改。已经push或者想修改更早的,只能借助git rebase命令了。

8 理解

git checkout 是用分支上的内容来刷新工作区的内容,git reset(不加--hard,,默认模式是--mixed)是用分支上的内容来刷新暂存区的内容,git reset --hard是用分支的内容来刷新工作区和暂存区的内容,git reset --soft只做版本回退,不刷新工作区和暂存区的内容。还有一个容易和git reset混淆的命令:git revert,git revert是进行某次操作的撤销,会保留之前的提交历史,相当于提交一个和相应提交内容相反的提交,HEAD继续前进;而git reset是HEAD向后移动,不会向前。

二 查看历史和修改


1 git log。

2 git log --pretty=oneline。

3 git diff HEAD -- file 查看工作区和版本库里面最新版本的区别。

4 git log --graph --pretty=oneline --abbrev-commit 比较好的查看分支记录。

三 Git配置


1 初始配置

git config --global user.name "Your Name"
git config --global user.email "email@example.com"

2 添加远程仓库和推送

git remote add origin git@github.com:lanbing510/learngit.git

配置后第一次推送

git push -u origin master 

加入-u git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令: git push origin master。

3 克隆 git clone 远程仓库地址。

4 配置忽略文件

① 在git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,git就会自动忽略这些文件,一些配置文件可参见这里

② 或者使用命令git config --global core.excludesfile ~/.gitignore_global添加到git全局配置以减少每层目录的规则重复定义。

5 配置别名

如 git config --global alias.unstage 'reset HEAD' 以后就可以使用 git unstage 把暂存区的修改撤销掉(unstage),重新放回工作区。

显示最后一次修改 git last:git config --global alias.last 'log -1'。

git lg 更好的显示log:

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" 

每个仓库的git配置文件都放在.git/config文件中,也可在这里进行编辑修改。

四 分支


1 创建并切换分支

git checkout -b newbranch

上面命令相当于 git branch newbranch 和 git checkout newbranch。

2 git branch命令查看当前分支。

3 合并某分支到当前分支:git merge name。

4 删除分支:git branch -d name。

5 禁用fast forward : merge时加入-no-ff

合并分支时,如果可能,git会用“fast forward”模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用“fast forward”模式,git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

6 当手头没有完成时,但需要修复之前的bug:

git stash #把现场工作储存起来
git checkout master
git checkout -b fixbug
git add 
git commit -m "fix bug"
git checkout master
git merge --no-off -m "merge bug fix fixbug"  fixbug
git branch -d fixbug
git stash list #列出stash的内容
git stash apply #进行恢复 + git stash drop 删除stash = git stash pop

7 开发一个新的feature,最好新建一个分支。

8 git branch -D 丢掉一个没有被合并过的分支。

9 推送分支

git push origin master 推送主分支。

git push origin dev 推送新分支。

master是主分支,需要时刻与远程同步;dev是开发分支,团队成员需要在上面工作,需要与远程同步;bug分支用于本地修复bug,不需要推送到远程,除非老板需要看;feature是否推送取决于你是否和人合作一起进行开发。

10 git clone

当从另一台电脑clone下来后,只能看到master分支,看不到dev,如果要在dev上开发,必须创建远程origin的dev分支到本地:git checkout -b dev origin/dev

11 取回分支

原因为远程分支比你的本地更新,首先用git fetch + git merge或者git pull合并。

如果git pull 提示 no tracking information,说明本地和远程分支的链接关系没有创建:git branch --set-upstream branch-name /origin/branch-name

五 标签


1 git tag name,例如:git tag v0.1 6224937。

2 git tag 查看标签。

3 git show 查看标签信息 。

4 还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:

git tag -a v0.1 -m "version 0.1 released" 3628164

5 用PGP签名标签:git tag -s -m "blablabla..." 需首先安装gpg。

6 推送一个本地标签:git push origin

7 推送全部未推送过的本地标签:git push origin --tags。

8 删除一个本地标签:git tag -d

9 删除一个远程标签:git push origin :refs/tags/

六 搭建Git服务器


参考廖雪峰的博客

七 常出现的问题


1 ! [rejected] master -> master (non-fast-forward)

解决方法:

① git fetch + git merge后推送(推荐)。

② git pull后推送(次推荐)。

③ git push -f 进行强推。

2 重命名文件(包括改变大小写)

git mv --force myfile MyFile

八 速查手册


常用操作图解

常用命令手册

参考文献


[1] 廖雪峰的Git教程

[2] 阮一峰的网络日志


版权声明:本文为博主原创文章,转载请注明出处 本文总阅读量    次