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 ...
随机推荐
- 关于使用Css设置Canvas画布大小的问题
问题分析 我们在调整画布大小时,希望画布中的图形保持不变,只是改变画布本身的大小.但是如果使用Css设置画布大小,则会出现问题. 问题描述 如果使用Css设置Canvas画布的大小,则导致画布按比例缩 ...
- C#爬页面总结
错误的思路是这样的:发送一个访问页面的请求过去,得到一个html页面,然后我要的数据全都在这上面.后来发现不是这样的,也猜到可能是页面加载之后还有js代码的ajax的异步加载,那么问题来了?我是不是要 ...
- 喝咖啡写脚本,顺便再加一点点CSS语法糖 2.五分钟学会Less
CoffeeScript + Html5 + Less这个新组合,看上去Less更容易拿下,先尝尝糖吧. Less这么小个东西,竟然要FQ,真是没有天理,简直不可理喻,先不管那么多了,那就看这个吧.h ...
- 网页爬虫--scrapy进阶
本篇将谈一些scrapy的进阶内容,帮助大家能更熟悉这个框架. 1. 站点选取 现在的大网站基本除了pc端都会有移动端,所以需要先确定爬哪个. 比如爬新浪微博,有以下几个选择: www.weibo.c ...
- php检测php.ini是否配制正确
运行命令行 php -d display_startup_errors=1 -d error_reporting=-1 -d display_errors -c "C:\path-to-ph ...
- Web Service 小练习
对于网站与网站之间数据互动,这是我的说法,不是专家说的,不要相信.应该有专业的说法. 从他人的网站通过一个接口获取数据,这一直是我感到神奇的事,怎么实现的,一直萦绕于心,想要弄过究竟,怎么是实现的啊! ...
- C# 使用XML序列化对象(二)
在C# 使用XML序列化对象(一)中描述了使用XML序列化对象的最简单的实现. 现在我们来看看稍微复杂一点的情况: 现有两个类:A和B,B是A的派生类,如下所示: public class A { p ...
- 解决 pathForResource 返回 nil的问题
点击(此处)折叠或打开 NSString* path = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@&quo ...
- HTML5动画实例
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- str和repr的
尽管str(),repr()和``运算在特性和功能方面都非常相似,事实上repr()和``做的是完全一样的事情,它们返回的是一个对象的“官方”字符串表示,也就是说绝大多数情况下可以通过求值运算(使用内 ...