最近刚开始学习在github上建立仓库(repository)和上传项目,需要学习git的一些操作,记录下来以免忘记。
git介绍:
git是个版本控制系统(CVS),可以用于项目的备份、修改、分支、合并和记录文件差异等等的操作
其他的分布式管理系统着重存储文件的原始版本以及衍生版本的差异,而git的不同点在于记录文件整体的快照(snapshot),从而保存文件的指纹和索引。当有新版本提交时,git会比对之前存储的指纹,若无变化,则只存储索引,若有则存储快照。
另外,git的文件存储在本地,这样可以避免服务器崩溃之后所有工作无法正常进行,同时也避免大量请求同时只想服务器时造成服务器负载过大而崩溃或请求处理缓慢。
git下载与安装:
在ubuntu上可以使用
sudo apt-get install git
在fedora 上可以使用
sudo yum install git-core
来安装。
喜欢自己通过源码安装的朋友可以查看官方的安装文档:http://git-scm.com/book/zh/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git。
如果想要git的源码,可以从网站上下载:http://git-scm.com/downloads。或是从git上clone下来:
git clone https://github.com/git/git
。
git 基本操作:
git下的状态有三种:暂存(staged)、已提交(commited)和已修改(modified)。
已修改(modified):文件已被修改,但未保存;
暂存(staged):文件已被放置于下次保存提交的清单中;
已提交(commited):文件已被提交并保存于本地数据库中。
接下来的操作都是围绕以上三种状态执行的。
针对全部用户配置 /eitc/gitconfig,使用参数 --system;针对该用户配置 ~/.gitcongit ,使用参数 --global;针对当前 git 目录配置 .git/config,这个拥有最高优先级。
e.g. 通常针对当前用户配置用户信息:git config --global user.name github上的用户名(myName)
git config --global user.email github上的绑定邮箱(123@gmail.com)
git config --global core.edit 常用编辑器(emacs)
git config --gloabl merge.diff 差异分析工具(vimdiff)
其他命令还有 color.status/interactive/branch/diff 等等。查看配置可以使用
git config --list
查看帮助:
git help <command>
git <command> --help
man git-<command>
e.g
git help config
将工作目录初始化为新仓库,初始化之后用ls -a 可看见列表中有.git文件,说明初始化成功
git init
添加文件进入git 仓库,注:add 命令后面也可以加 文件目录,会默认递归 添加目录中的文件
git add fileName
git commit -m ‘initial project version‘ 或
git commit
git 文件状态循环图
查看当前文件状态
git status
例如如下状态解读:
init
之后可以看见 .git 文件,说明 git 工作目录初始化成功,此时查看 status 发现 a.c 和 b.c 文件都是 untracked
状态,说明这两个文件都没有加入到 git 中
将
a.c 加入git 之后,a.c 状态变为 unstaged 状态,等待commit 而 b.c 仍是 untracked 状态;同样可以将 b.c
加入到 unstaged 队列中。
若此时修改(在commit之前) a.c 文件,在查看 status
发现原来的 unstaged 状态的 a.c 文件并没有更改,而更改的文件状态变为 modified,此时需要将 a.c add进入git 才会覆盖原来的committed状态的 a.c 文件
commit 之后,才真正修改了原来的文件,
忽略某些文件:
在 git 目录中添加 .gitignore 文件,将需要忽略的文件加入 .gitignore 中,则在 commit 之后,.gitignore 中匹配出的文件将不会被 commit。如下示例:
将修改后的仓库放入github
git remote add origin url
git push origin master
上述代码中,origin表示你的远程仓库,改名称为默认值,可以从github上更改,url指的是远程仓库的地址,master往往指的是当前修改之后的仓库。
原文:http://www.cnblogs.com/buptrabbit/p/3645250.html