git曲线
git 更新牵涉到三个地方的内容: ??
(pull下来的) 正在编辑的目录, 即工作空间;
本地的仓库; (这个动作叫 : commit)
github.com上的服务器即 refs (这个动作叫: push)
----------------------------------------------------------------------
所有对仓库的操作,都要经过git来做...
rm是对本地仓库的文件和目录进-+行操作; commit也是对本地仓库的操作;
push才是对remote的refs服务器进行操作
add是将工作空间所做的修改(文件/目录的增删改)做一个标记, 在下一次commit时一并提交到本地repository.
-----------------------------------------------
原则上vim可以无限制地新开窗口, "这里所说的窗口"不是新的 程序窗口, 而是同一个窗口中的"窗格"
看vim在哪一个窗口, 主要是看它的"状态栏", 状态栏高亮显示的即为当前窗口; ctrl+WW是按顺时针方向轮转的
func! 加上感叹号, 是为了防止 vimrc这个配置文件重新载入时, 报错/出错
关闭其他窗口: ctrl+w o = :only
强制命令! 总是放在最后的: 如对多个文件都放弃保存并且退出: qa!
vim分割窗口, 在纵向方向上可以不同, 而在水平方向上要保持一致, 使用^W +/-, :res n/+n/-n, : vert res n/+n/-n,
所有这些操作都可以用鼠标来实现.
vim的多标签: 在高亮显示的/并且是凸起来的标签, 表示是当前活动的; 灰色(或灰色底子的) /凹陷下去的是inactive tab.自己设计程序界面的话,
也应该是这样的. 首选的是使用buffer, 其次才使用tab, 切换标签的快捷命令: gt, gT.
::: 让vim的工作目录自动切换到当前打开的文件所在的目录: set autochdir
vim中的大小写转换(是针对文章的字符而言的): great(大小写) u, U : gu, gU , ~翻转. 可以对gu gU 进行限定, 一般是在后面进行限定,对于行的操作, 把限定行号放在前面.同时vim命令中当前位置通常省略不写: guu, gUU, g~~, gU$, gu0, 3gUU, gggUG(全部转换为大写)
:vim的命令行实际上就是一个bash-like, 可以看成是一个bash, 完全支持bash的操作: ctrl+p/n, ctrl+h, 支持tab补齐, 支持ctrl+d:
ctrl+d将会把以当前字母开头的所有命令列出来, 如果直接type: ctrl+d, 将会把所有的命令行命令都列出来.(从而可以查看/学习)
:支持简写, 只要该简写没有其他模糊confused, 二义性的命令都可以直接执行,不用像bash那样一定补齐
-----------------------------------------------------
实际上git的操作和yum的操作类似: 他的一些操作和本地的操作如:rm, mv等类似:
git共涉及三个地方: working directory, staging index,
有三种vcs: local vcs, centralization vcs, distribution vcs> 本地化/集中/分布式控制系统
vcs 和cvs的区别?
vcs: version control system
cvs: con'current [k^n'k2r2nt] version system : 并行(同时发生)版本控制.

git的算法本质是每次版本保存一个文件快照snapshotA(a1,b,c) snapshotB(a2,b,c2)...
svn的算法本质是每次版本仅保存文件之间差异,delta1,....
git分支默认的是一个master, 每次提交时会将master指针指向当次commit的snapshot快照
git鼓励分支, 可以在不同的分支上开发下去, 形成几个方向:
git版本控制信息存储的原理: 是让当前分支的指针(用head指针来表示)指向所在的分支, 这个分支是和一个文件快照snapshot相对应的: : 创建一个分支实际上是创建一个文本文件, 里面只有40个字符(是
所指对象的sha-1校验码)...所以创建和删除一个分支的开销成本极小, 而且跳转到某个版本也极为快速...

创建分支: git branch brach2, 查看分支: git branch, 或git status.


git checkout的作用有两个: 一是获取分支的内容, 二是切换分支: git checkout another-branch.
-------------------------------------------------------------------
git commit -am "msg": 中的-a表示 --all: 表示: automatically add changes of all known files and remove files from the index that have been removed from the working tree
-a 会影响所有已经在index中的文件, 但不会影响没有加入到staging index中的文件...
gnu nano: 纳米: 是一个编辑器:
修改错误跟踪系统iss53的错误:
git checkout -b iss53: =git branch iss53 + git checkout iss53: 创建一个分支并切换到那个分支.(参数-b就是那个功能)
分支的合并:
git中的分支使用得非常频繁, 非常普通的, 每次在修改/修补, 进行新的动作之前, 最好都是在新建一个新的分支然后进行开发操作, 而不会
影响原来的版本:
git 合并: : 首先切换到master分支:git checkout master , 然后合并: git merge testing.
git merge合并其实就是指针(分支就是指针)的移动, 将master指针 fast-forward 快进移动到 testing指针上.
合并后,需要把非master分支删除(因为这个和master指针分支是相同的): git branch -d testing.
注意::: 对于没有共同祖先common ancestor的分支合并, git会自动寻找到一个合适的"最近"的共同祖先, 然后三方(祖先方/合并双方)
共同算法,得到一个合并后的分支... (就是要明白git的分支/版本的数据结构)...
--------------------------------------------------------------
以上都是在本地的仓库中进行的操作, 要在本地和远程仓库之间进行操作,需要用 git push (向上提交:从本地到远程), git pull(从远程到本地)
但是如果远程服务器上的文件被另外一个本地机器事先进行了push操作后, 再提交就会有冲突..
(git: gnu interactive tools: gnu交互工具):: 是取代bitkeeper, " stupid content tracker" , 最后由"主开发者"向"公共服务器"push代码...

git help some-command: :git commit...其中git是命令command, commit是子命令: sub-command,
git add 可以跟踪文件夹下的所有文件: git add ./path/to/your/path, git add -A....
git add 是脚本命令, 是git内核命令 update-index内部命令的"别名"
git reset HEAD <filename> 删除index中新增的文件...
git diff:是比较"当前工作目录" && "数据仓库"中的文件的内容的差别.... 用patch的格式给出:
通常建议使用 -d 参数来删除分支,以防无意的信息丢失
----------------------------------------------
查看git版本的世系变化:
git show-branch
git diff ver1 ver2
git whatchanged
git 合并冲突?
为了保存多个人的工作, 需要把每个人自己创建的分支进行合并, 以便保留多人合作开发的成绩和工作.
2-way 两路合并: 合并merge的方法是:
1, 切换到master, 然后,将其他分支中有的文件/而master中没有的文件记录在master中去,
2,, 如果被合并分支和master中都有的文件(文件名相同的两个文件): 将两个文件的内容进行比较,
- 先后的行合并,
- 但是当相同的行, 内容相同时, 取相同内容,
- 但是当相同的行上, 内容不同时, 则会发生"conflict"冲突.
(通常的解决方法是: 要么: 取其中的某一个patch, 抛弃另一个patch, 要么综合两个文件的patch都要都保留)
git commit -m "sss" -i hello???
git 中的refs: 是指git的索引或参考,保存的是 HEAD当前头指针指向的内容??
Git 中,我们称之为“引用”(references 或者 refs,译者注)。你可以在 .git/refs 目录下面找到这些包含 SHA-1 值的文件 (这个是明确肯定的说法了, refs 主要是用指针名称来代替具体的"提交/添加等操作"的标志字符串sha-1字串...
我认为你应该这样来理解分支的概念:它是用来标记特定的代码提交,每一个分支通过SHA1sum值来标识,所以对分支进行的操作是轻量级的--你改变的仅仅是SHA1sum值。
分支确实有些特殊的属性——其中最重要的是,如果你在一个分支进行作业并创建了一个新的提交(commits),该分支的顶端将前进到那个提交(commits)。这正是你所希望的。当用git merge 进行合并(merge)的时候,你只是指定了要合并到当前分支的那个并入分支,以及当前分支的当前进展
git曲线的更多相关文章
- [Git] 技术的热门度曲线
reference :http://www.ruanyifeng.com/blog/2017/03/gartner-hype-cycle.html reference : https://stateo ...
- CSS3实现图形曲线阴形和翘边阴影
首先,来看看完成之后的效果图: 实现原理 ①曲线阴影实现: 多个阴影重叠,就是正常阴影+曲线阴影 正常情况下,有个矩形有正常的阴影,作为主投影,这时候再定义一个有一定弧度圆角的圆角矩形,然后放在正常矩 ...
- 关于git的学习
Git是目前世界上最先进的分布式版本控制系统(没有之一)! 由于现在用的还不多,还没有这种体会,但是前人的经验是值得借鉴的,所以我认真的学习了一些关于git的简单操作,现在在这分享一些心得,或者说是为 ...
- git workflow常用命令
git init git status git add readme.txt git add --all Adds all new or modified files git comm ...
- git/github初级运用自如 (转)
三 . 设置用户信息 这一步不是很重要,貌似不设置也行,但github官方步骤中有,所以这里也提一下. 在git中设置用户名,邮箱 $ git config --global user.name &q ...
- ios-贝塞尔曲线
git下载地址:git@github.com:lu459700780/UIBezierPath.git 演示: #import "ViewController.h" @interf ...
- 简单对比git pull和git pull --rebase的使用
使用下面的关系区别这两个操作:git pull = git fetch + git mergegit pull --rebase = git fetch + git rebase 现在来看看git m ...
- 可视化n次贝塞尔曲线及过程动画演示--大宝剑
起因 研究css中提供了2次.3次bezier,但是没有对n次bezier实现.对n次的实现有很大兴趣,所以就用js的canvas搞一下,顺便把过程动画模拟了一下. 投入真实生产之中,偏少. n次be ...
- 【Git】git pull和git pull --rebase的使用
git pull = git fetch + git mergegit pull --rebase = git fetch + git rebase 现在来看看git merge和git rebase ...
随机推荐
- [CareerCup] 14.4 Templates Java模板
14.4 Explain the difference between templates in C++ and generics in Java. 在Java中,泛式编程Generic Progra ...
- LeetCode:Unique Paths I II
Unique Paths A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagra ...
- Spring 集成 Hibernate 和 Struts 2
在Spring中集成Hibernate,实际上就是将Hibernate中用到的数据源DataSource. SessionFactory实例(通常使用Hibernate访问数据库时,应用程序会先创建S ...
- IOS开发之——意见反馈UITextView的使用+不能输入字符输入
@interface DMFeedbackViewController ()<UITextViewDelegate,UIAlertViewDelegate>@property (nonat ...
- MVC5 + EF6 + Bootstrap3 (12) 新建数据
Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-create.html 系列教程:MVC5 + EF6 + ...
- Ubuntu 上创建常用磁盘阵列
RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失 ...
- RockWare RockWorks的Ollydbg调试过程及注册机(破解)思路
最近拿到了RockWorks15的安装包,可惜没有破解,试用也只能用14天.用PEiD工具察看了一下,Delphi编写的程序,竟然没加壳.本想用OllyDBG调试进去爆破一下,不意发现注册码很简单,如 ...
- [AHOI2013]立方体(三维bit)
[Ahoi2013]立方体 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 130 Solved: 55[Submit][Status] Descrip ...
- shell中的流程控制
一.if的使用 判断磁盘使用率,如果超过要求值就直接报警 数据库备份 apache服务器启动检测(nmap工具需要安装) 多重条件判断 二.case的使用 三.for使用 字符串循环,in后面的内容以 ...
- 【Aaronyang原创】用linq取出一个集合中重复的数据
文章已经迁移:http://www.ayjs.net/2013/07/69/ 文章已经迁移:http://www.ayjs.net/2013/07/69/ 文章已经迁移:http://www.ayjs ...