Git总结 (未完)

1-0.创建版本库

1   $ mkdir learngit    //创建一个空目录
2   $ git init          //初始化一个Git仓库;
3   $ git add <file>    //可反复使用;
4   $ git commit        //完成提交;

2-0 时光机穿梭

1   $ git status        //时刻掌握仓库当前的状态;
2   $ git diff <file>  //查看版本之间的不同;

2-1 版本回退

 1   $ git log           //显示从最近到最远的提交日志;
 2   $ git log --pretty=oenline
 3   //将版本号和Msg显示在一行;
 4   $ git reflog        //查看命令历史;
 5   $ git reset --hard HEAD^
 6   //当前文件回退到上一个版本;
 7   $ git reset --hard 5134513<版本号>
 8   //回退到指定版本;
 9
10   //Git的版本回退速度很快,因为Git在内部有个指向当前版本的HEAD指针;当执行回退版本时,Git仅仅把HEAD指向设定的版本;

2-2 工作区/暂存区和版本库

1   工作区(Working Directory):电脑里能看到的目录;
2   版本库(Repository):工作区里的隐藏目录.git;
3   //Git的版本库存了很多东西,最重要的称为stage暂存区;
4   //Git为我们自动创建的第一个分支master,以及指向master的一个指针HEAD;
5   //git add命令实际上就是把提交的所有修改放到暂存区,然后执行git commit就可以一次性把暂存区的所有修改提交到版本库;

2-3 管理修改

1   Git追踪并管理的是修改,而非文件;每次修改,如果不add到暂存区,那就不会被commit到版本库中;
2   $ git diff HEAD -- <file>
3   //查看工作区和版本库里面最新的版本的区别;

2-4 撤销修改

1   $ git checkout -- <file>    //工作区;
2   //可以撤销工作区的修改;
3
4   $ git reset HEAD <file>     //暂存区;
5   //可以撤销add到暂存区的修改;
6   //git reset命令既可以回退版本,也可以把暂存区的修改退到工作区;当我们用HEAD时,表示最新的版本;
7
8   //commit到版本库的修改只能用版本回退的方法;  //版本库

2-5 删除文件

1   //commit到版本库的文件,本地删除时,在版本库也要进行remove;
2   $ git rm <file>           //删除文件;
3   $ git commit -m "rm file"
4
5   //工作区误删文件时
6   $ git checkou -- <file>   //从版本库还原到工作区;

3-0 远程仓库

1   $ ssh-keygen -t rsa -C "[email protected]com"
2   //创建公钥;

3-1 添加远程库

1   $ git remote add origin [email protected]:xxx/learngit.git
2
3   //将本地库推送到远程库
4   $ git push -u origin master

3-2 从远程库克隆

1   $ git clone [email protected]/gitskill.git
2   //Git支持多种协议,包括https和ssh,但通过ssh支持的原生git协议速度最快;

4-0 分支管理

1   Git分支无论创建/切换和删除,速度都很快;

4-1 创建和合并分支

 1   //HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支;
 2   //一开始,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点;
 3   //当创建新的分支dev时,Git新建了一个指针dev,指向master相同的提交,再把HEAD指向dev,就表明当前分支在dev上;
 4   //Git创建一个分支,除了增加一个dev指针,改变HEAD的指向,工作区没有任何变换;
 5   //此时工作区的修改和提交都是针对dev分支了;
 6   //当dev上的工作完成时,就可以把dev合并到master上;直接把master指针指向dev的当前提交,就完成合并;
 7
 8   $ git checkout -b dev   //创建并切换分支;
 9
10   $ git add readme.txt
11   $ git commit -m "branch test"   //在dev分支上完成提交;
12   [dev fec145a]
13
14   $ git checkout master       //切换到master分支;
15   $ git merge dev             //指定dev分支合并到当前分支;
16
17   $ git branch -d dev         //删除dev分支

4-2 解决冲突

1    $ git merge feature1
2   //CONFLICT (contetn):Merge conflict in readme.txt
3   //此时需手动解决发生冲突的文件;

4-3 分支管理策略

1   //Git合并分支时会用Fast-forward模式,但这种模式下,删除分之后,会丢掉分支信息;
2   $ git merge --no-ff -m "merge with no-ff" dev
3   //禁用Fast-forward;因为本次合并要创建一个新的commit,所以加上-m参数;
4
5   //master分支应该是非常稳定的,仅用来发布新版本;
6   //dev分支是开发版本,稳定下来之后就merge到master;
7   //guosk分支是自己单独开发的分支;完成任务向dev合并;
时间: 2024-08-01 22:34:09

Git总结 (未完)的相关文章

git个人使用总结 —— idea命令行、撤销commit (未完待续)

近期在使用git,最开始在idea界面操作,后来要求用命令行.刚开始还不是很习惯,感觉很麻烦,用了几天后感觉爽极了! 其实git的命令也不是很多,熟悉一段时间就差不多能顺利使用了.使用过程中遇到了各种各样的问题,有些小问题就在这里集中总结一下. 1.idea命令行.git安装后就自带终端git bash,使用起来很方便.但是用idea开发,开发后还要在相应文件夹下打开git bash很麻烦.其实idea也带有终端terminal,在最下方可以找到,在这里就可以执行命令.但是如果是默认方式安装的g

第二章-第二题(练习使用git的add/commit/push/pull/fetch/clone等基本命令)-By郭青云(未完待续)

题目描述: 每人自己建立一个HelloWorld项目,练习使用git的add/commit/push/pull/fetch/clone等基本命令.比较项目的新旧版本的差别. 使用步骤: 未完待续...... 参考文件:http://blog.csdn.net/u012575819/article/details/50553501

Git学习——Git分支篇(未完)

Git学习--Git分支篇(未完) 前言 完成了Git学习的基础篇,继续学习Git的分支特性,这是Git出众之处. 目录 分支简介 分支创建 分支切换 分支新建与合并 分支新建 分支合并 遇到冲突时的分支合并 分支简介 首先,Git保存数据的方式比较特殊,保存的是文件的快照,而不是文件的变化. 因此,在执行提交( commit )操作时,Git会保存一个提交对象( commit object).该提交对象包含一个指针指向暂存的内容快照,同时包含作者的姓名.邮箱.提交时输入的信息和指向它父对象的指

React v16-alpha 源码简读【未完待续】

一.物料准备 1.克隆react源码, github 地址:https://github.com/facebook/react.git 2.安装gulp 3.在react源码根目录下: $npm install $gulp default (建议使用node 6.0+) gulp将文件处理在根目录下的build文件夹中,打开build查看react的源码,结构清晰,引用路径明了 二.从生成 virtual dom 开始 react 生成一个组件有多种写法: es 5下:var Cp=React.

whatweb.rb 未完待续

#!/usr/bin/env ruby #表示ruby的执行环境 =begin # ruby中用=begin来表示注释的开始 .$$$ $. .$$$ $. $$$$ $$. .$$$ $$$ .$$$$$$. .$$$$$$$$$$. $$$$ $$. .$$$$$$$. .$$$$$$. $ $$ $$$ $ $$ $$$ $ $$$$$$. $$$$$ $$$$$$ $ $$ $$$ $ $$ $$ $ $$$$$$. $ `$ $$$ $ `$ $$$ $ `$ $$$ $$' $ `$

把握linux内核设计思想系列(未完待续......)

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 把握linux内核设计思想(一):系统调用 把握linux内核设计思想(二):硬中断及中断处理 把握linux内核设计思想(三):下半部机制之软中断 把握linux内核设计思想(四):下半部机制之tasklet 把握linux内核设计思想(五):下半部机制之工作队列及几种机制的选择 把握linux内核设计思想(六):内核时钟中断 把握linux内核设计思想(七):内核定时器和

细菌觅食优化算法:理论基础,分析,以及应用(未完)

原作者:Swagatam Das,Arijit Biswas,Sambarta Dasgupta,和Ajith Abraham  [摘 要]细菌觅食优化算法(Bacterial foraging optimization algorithm[BFOA])已经被分布式优化和控制的同行们当作一种全局性的优化算法接受.BFOA是由大肠杆菌的群体觅食行为所启发而总结出来 的.BFOA已经吸引了足够多的研究者的注意,由于它出现在解决真实世界中一些应用领域上优化问题的高效性.E.coli 的群体策略的生物基

Linux设备驱动开发学习(2):Linux设备驱动简介(未完)

(未完待续......)

[译]App Framework 2.1 (1)之 Quickstart (未完待续)

最近有移动App项目,选择了 Hybrid 的框架Cordova  和  App Framework 框架开发. 本来应该从配置循序渐进开始写的,但由于上班时间太忙,这段时间抽不出空来,只能根据心情和兴趣,想到哪写到哪,前面的部分以后慢慢补上. App Framework 前生是是叫 jqMobi 注意大家不要和 jQuery Mobile 混淆了,它们是两个不同的框架,一开始我还真混淆了0.01秒. 这里我先翻译一下Quickstart 部分,一是自己工作上用的上,二是也想顺便练练英文,最关键