Git学习笔记(一)

 

※说明:以下红字部分皆为个人的理解。如有谬误,欢迎回帖指正。

基础篇                                                                     

  • Git属于分布式版本控制系统( Distributed Version Control System,简称DVCS),即每一个提取代码的主机皆保有各个版本的全部代码,相当于一个镜像仓库。而SVN则属于集中化的版本控制系统(Centralized Version Control Systems,简称 CVCS )。DVCS就像P2P,而CVCS比较像网络模型中的C/S。
  • Git 和其他版本控制系统的主要差别在于,Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异。Git每次做版本更新是,如果文件没改,仅在新镜像上给它做个索引;如果改变,就重新复制一个。而SVN等都使保存文件差异内容,相当于一层一层的补丁。
  • Git对网路的依赖度不高,就像将所有off-line的东西都变成了一个批处理,等到有网络的时候可以一次执行完,而平时是不需要网络支持的。
  • Git在识别不同文件时使用的是SHA-1算法。

配置篇                                                                     

  • 刚开始要配置你的唯一标识,用下列命令:
    git config --global user.name "John Doe"
    git config --global user.email [email protected]
  • 设置默认文本编辑器:
    git config --global core.editor emacs #此处为使用emacs 的情况
  • 设置差异分析工具:
    git config --global merge.tool vimdif #此处为使用vimdif的情况
  • 查阅配置信息:git config –list 查阅某个环境变量:git config [环境变量名]
  • Git帮助:git help <verb> 

应用篇                                                                    

先说明以下Git中的文件变化状态:

image

untracted 未被版本控制
unmodified 未修改
modified 已修改
staged 暂存

  • 将repository复制到当前目录下:git clone [repo地址]
  • 检查文件所处的状态:git status
  • 增加某个文件,即将文件从untracked进入unmodified状态,或者将某个已跟踪的文件放到暂存区,合并时把有冲突的文件标记为已解决状态(多重功能的命令):
    git add [filename]
  • 文件如果在暂存区被修改,则打破暂存状态,进入修改状态。
  • 忽略文件列表:.gitignore
  • 要查看尚未暂存的文件与暂存区的差别,不加参数直接输入 git diff
  • 比较暂存区与上次提交的快照之间的区别,git diff –staged
  • 提交命令:git commit –m "提交的信息" 也可不用参数,则打开文本编辑器编辑提交message
  • 想要跳过前面add的步骤直接提交,则使用参数-a,例如
    git commit -a -m 'added new benchmarks'
  • 移除,即从其它状态进入untracked状态,使用 git rm[filename] ,此命令将同时删除文件。如果仅想使其不被追踪,则使用 git rm –cached [filename]
  • 移动文件: git mv file_from file_to
  • 查看历史记录:git log ,参数 –p 显示每次提交的内容差异,-2则显示最近2次更新,-- stat仅显示简要增改行数。还有很多有用参数,可以help。也可以用图形化工具gitk。
  • 修改最后一次提交操作:git commit –amend
  • 取消暂存文件: git reset HEAD [文件名]
  • 取消对文件的修改: git checkout -- [文件名],z这是所有修改将不被保存,慎用。
  • 查看远程仓库:git remote –v
  • 添加远程仓库:1)先指定一个简单的名字git remote add [shortname] [url]
    2)抓取远程仓库数据:git fetch [remote-name]
    fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支,只有当你确实准备好了,才能手工合并。
  • 推送数据到远程仓库:git push [remote-name] [branch-name]
  • 查看远程仓库信息:git remote show [remote-name]
  • 远程仓库的重命名:git remote rename [oldname] [newname]
  • 远程仓库的删除:git remote rm [remote-name]

你可能感兴趣的:(学习笔记)