Git学习笔记


分类:技术启蒙 | 作者:酷~行天下 | 发表于2012/04/27 12条评论 4,081 views
Git /’ɡɪt/, Linus的第二个伟大作品。Git这个词有点儿意思,Linus自嘲说 “I’m an egotistical bastard, and I name all my projects after myself. First Linux, now Git. “ 感叹我生不逢时,错过了版本控制的“史前黑暗”时代,刚刚接触版本控制,Linus就站在前边,笑嘻嘻的说:“版本控制? 什么是版本控制 。。 ”。真希望Linus身退时,这样说过:“I’ll be back.” ——施瓦辛格,《终结者》,1984。 Git这个词本身很喜感,学Git更欢乐,因为书里没啥难懂的知识,看的时候,让人心花怒放,心想,啥时候看书这么快了。。写iMiss时,和东东用Github操作代码,非常方便,感叹遇上了好时代,一上手就有Git用,还不用给地主家交租,连看书都可以直接跳过像《CVS版本库到Git的迁徙》这样的章节。。Git实在是个好东西,它让你笑,它让你叫,它让你跳。 刚开始用时,遇到过些小麻烦,比如,commit内容写错了,merge到了错误的分支,最关键的是,不知道怎么用Git画出优雅的下水道等等。。。后来慢慢知道怎么解决了,于是,留点笔记吧,既是给自己看的,也是给别人参考的。。 如果你能看懂下边这堆命令(纯属瞎折腾),赶紧关掉这个页面,遛马去吧。。—————————————————————————————————————————————touch hello.txtecho “first line in hello.txt” >> hello.txtcat hello.txtgit add hello.txtgit commit -m "add heo.txt"git log –onelinegit commit –amend -m “add hello.txt” //修改最近一次的commit内容git log –graph –oneline //图示查看提交rm hello.txt //从工作区删除hello.txtgit rm hello.txt //从暂存区删除hello.txtgit commit -m "delete hello.txt"git reset –mixed HEAD^ //版本库和暂存区恢复,工作区删除ls //无hello.txtgit ls-files //有hello.txtgit ls-tree HEAD //有hello.txtgit checkout hello.txt //在工作区恢复hello.txtgit refloggit reset –hard HEAD@{1} //取消恢复,又删了————————————————————————————————————————————— 后边提到的,工作区是指(working directory),暂存区是指(staging area,index 在这里),版本库是指(git directory,respository, HEAD在这里),三者的关系如下图。标签是指(tag,也有书里译为“里程碑”) Git基础配置:配置名字和邮箱:git config –global user.name "your name"git config –global user.email “your emailmindlee@me.com%26quot;]”[/url]
设置高亮颜色:git config –global color.ui “auto” (Linux下)git config –global color.ui “always” (Windows下,Windows下Git可以用msysGit)
设置文本编辑器:git config –global core.editor gedit.exe(常用哪个,设置哪个)PS: 有句老话说的好“你可以把马带到水边……但是你不能强迫它使用你最钟爱的代码编辑器。”设置差异分析工具:git config –global merge.tool kdiff3 (合并工具有很多种)
设置别名:(commit → ci)(可以移植习惯,有人会把Git命令别名为CVS中的相应命令)git config –global alias.ci “commit”
GitHub配置名字和API接口:(故事要从这里说起)git config –global github.user username_in_githubgit config –global github.token 972b0f310c66a61a0b59f949 (类似的哈希吗,具体去GitHub看看)
检查上述设置是否成功:git config –global –list查看信息相关:git log:git log –pretty=oneline (可以显示完整哈希码)git log –-oneline (显示哈希吗前7位,上边的简化版)git log –oneline –graph –stat –decorate这几个是我常用的参数,更多查看文档吧: (git help log)–oneline: 单行显示;–graph: 图示显示提交历史;–stat: 显示文件修改历史;–decorate 显示标签(Tag);示例指令:git log –oneline –graph -3
git status -s示例运行结果: MM hello.txt第一列字母M,版本库文件与暂存区文件差异第二列字母M,工作区文件与暂存区文件差异
git refloggit reflog -5 查看最近五次的操作记录,默认是HEADgit reflog show master –5 查看master最近五次的操作记录
其他查看指令:ls 查看本地文件cat hello.txt 查看文件内容git ls-files 查看暂存区文件git ls-tree HEAD 查看版本库(HEAD)文件git ls-remote origin 查看上游文件(远程版本库)gitk –all 图形界面查看提交(图形化界面)du -sh .git 查看版版本库的大小添加和删除:git add -u u → update, 以暂存区中有的文件为准, 更新暂存区文件; 如果是工作区新建的文件,则此文件不能添加到暂存区(already tracked files in the index rather than the working tree)git add . .代表所有文件,以工作区中有的文件为准,更新暂存区中相应文件; 包括工作区刚刚新建的文件。(update all tracked files in the current directory and its subdirectories.)git add -A A → all, 范围覆盖(暂存区 + 工作区)中所有文件,所有文件变化都提交到暂存区(包括新建,修改,删除文件)(files in the working tree in addition to the index.)rm hello.txt 从工作区删除git rm hello.txt 从暂存区删除git rm –cached 同上