您的位置:首页 > 其它

分布式版本控制 git 概念 及常用命令总结

2013-08-07 19:28 1051 查看
这是 git 所涉及的流程概念图~ 一目了然~~~




git主要分3个区:工作区,暂存区,版本库

工作区:目前工作的文件夹

暂存区:可以把修改的提交到缓存区,保存起来。相当于提交任务的缓存。add .git/index

版本库:服务器的文件 commit .git/objects

git优点~
适合分布式开发,强调个体。

公共服务器压力和数据量都不会太大。

速度快、灵活。

任意两个开发者之间可以很容易的解决冲突。
【安装和初始化】
1 配置全局用户名和电子邮件地址
git config  –global user.name  “owenrui”

git config  –global user.email  ruifengyun@naver.com

2 初始化版本库
创建库 文件夹

mkdir /root/to/repo

cd /root/to/repo

初始化

git init

把所有工作区的文件放到暂存区

git add .

提交到本地的库

git commit –m “initial import”
克隆版本库
git clone https://github.com/gitlabhq/gitlabhq.git

【提交代码】将目录中的修改内容提交到git里



把工作区里面的内容提交

echo "aaaa" >>aa

git add aa

git commit –m “add file aa”
上边命令git commit –m 后面加的标注既可以用双引号,也可以用单引号,标注内容也可以是中文 推送到远程的git库里面~




然后在git服务器里查看我们推送的aa这个文件




暂存已纳入git版本控制下的文件修改
git add aa
提交已纳入git版本控制之下的文件的所有修改 git commit –m "add file aa"
清除工作目录树中的修改 git checkout HEAD aa
取消已暂存但尚未提交的修改的暂存标识 git reset HEAD aa

【历史】显示全部历史记录 git log




显示版本历史以及版本间的内容差异 git log –p




只显示最近一个提交 git log –1




显示最近的20个提交,以及版本间的内容差异 git log –20 –p
显示最近6小时的提交 git log –since=”6 hours”
显示两天之前的提交 git log –before=”2 days”
显示比HEAD(当前检出分支的末梢)早3个提交的那个提交 git log –1 HEAD~3或者 git log –1 HEAD^^^或者 git log –1 HEAD~1^^【高级功能】
git revert:
还原一个版本的修改,必须提供一个具体的Git版本号,例如'git revert bbaf6fb5060b4875b18ff9ff637ce118256d6f20',Git的版本号都是生成的一个哈希值



git checkout:
Git的checkout有两个作用,其一是在不同的branch之间进行切换,例如'git checkout new_branch'就会切换到new_branch的分支上去;另一个功能是还原代码的作用,例如'git checkout app/model/user.rb'就会将user.rb文件从上一个已提交的版本中更新回来,未提交的内容全部会回滚




git reset:
将当前的工作目录完全回滚到指定的版本号,假设如下图,我们有A-G五次提交的版本,其中C的版本号是 bbaf6fb5060b4875b18ff9ff637ce118256d6f20,我们执行了'git reset bbaf6fb5060b4875b18ff9ff637ce118256d6f20'那么结果就只剩下了A-C三个提交的版本




git revert 和 git reset的区别

git revert 是撤销某次操作,此次操作之前的commit都会被保留
git reset 是撤销某次提交,但是此次之后的修改都会被退回到暂存区
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: