Git 是一个分布式管理工具,通过指纹字符串来时刻保持数据的完整性,关心的是文件数据整体的变化,并不保存变化前后的差异数据;Git 在本地磁盘保存有关项目的历史更新,所有绝大多数操作只需要访问本地文件资源,并不需要Internet。当然可以使用GitHbub将代码托管,进行远程开发,方便团队比较分散的情况(这正体现Git分布式的优势);开发人员只需将项目clone到本地,进行相应的开发然后push上传到GitHub(GitHub使用的是utf-8编码,所以上传的文件如若不是以utf-8编码,可能出现乱码),供别的开发人员更新即可。简单初学使用参考:http://blog.csdn.net/u011384252/article/details/9351549
任何文件在Git库中都有四种状态:未跟踪状态untracked、跟踪状态tracked(未修改状态unmodified、已修改状态modified、暂存状态staged),参考http://blog.csdn.net/u011384252/article/details/9406503,由于文件的上述四种状态,在使用Git进行项目管理的时候涉及到三个区域:
(1)Git 本地数据目录:每个项目都有一个 git 目录,它是 Git 用来保存元数据和对象数据库的地方。该目录非常重要,每次克隆镜像仓库的时候,实际拷贝的就是这个目录里面的数据。
(2)工作目录(项目工作空间):从项目中取出某个版本的所有文件和目录,用以开始后续工作的叫做工作目录,即就是我们进行项目开发的目录。
(3)暂存区域:所谓的暂存区域只不过是个简单的文件,一般都放在 git 目录中。
Git本地仓库的基本用法:
① git init :初试化当前目录为一个Git本地仓库。
② git add <filename> : 如果一个文件是未被跟踪的,将 一个文件加入到Git版本控制当中,让Git对其进行跟踪;如果一个文件是已修改状态,则将一个文件放到暂存区中。
git add . : "."点表示当前目录下的所有内容
③ git status : 查看当前Git仓库中所有文件的状态,若是为跟踪状态 则用红色显示。
④ git diff:比较工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容。
⑤ git commit:提交暂存区域。
git commit -m <说明信息>
git commit -a 可以跳过暂存区域,直接将已跟踪的文件暂存起来一并提交。
⑥ git rm <filename>:从Git中删除一个文件。
git rm --cached <filenmae>:从暂存区删除一个文件,但是仍保留在工作目录中。也就是将文件变为未跟踪状态。
⑦ git log:查看项目提交历史记录。
git log -p 选项展开显示每次提交的内容差异
git log --stat 仅显示简要的增改行数统计
git log --pretty=<option> ,其中option可以是:oneline(使每条历史信息在一行中显示),short,full,fuller,format(按指定的格式输出)
gitk 可以打开历史记录的可视化查看窗口。
⑧ git commit --amend:修改最后一次提交。该命令是提交当前缓存区快照,并修改最后一次的说明。
⑨ git checkout -- <filename>:撤销对文件的修改,慎用!
⑩ git reset HEAD <filename>:撤销对文件的暂存,让文件回到暂存前的状态。
Git远程仓库的基本用法:
① git clone [url]:将一个远程仓库克隆到本地。
-v :显示对应的克隆地址。
git remote add [remote-name] [url]:添加一个新的远程仓库。
git remote show [remote-name]:查看远程仓库信息。
git remote rm [remote-name]:移除远程仓库。
git remote rename [old-remote-name] [new-remote-name]:重命名远程仓库。
③ git push [remote-name] [branch-name]:推送数据到远程仓库,remote-name指的是远程仓库简称,branch-name指的是分支名称。对于克隆的仓库默认分别为:origin,master
git push -u origin master //将本地的项目提交到远程仓库
Git将远程仓库GitHub取回本地:
① git [url] : 在git下切换到想要存放此项目的目录,运行这条命令就可以将项目克隆到本地磁盘的当前目录
②项目取回本地,远程仓库GitHub上有更新,取得更新
git fetch origin //开始取得更新
git merge origin /master //将更新内容合并到本地分支/master
系统的学习Git可以参考: