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的格式给出:

$ git branch -d branch-name
但是需要注意的是,如果删除的分支还没有被 merge 到其他分支,删除这样的分支会导致这个分支上所做的改动丢失,因此 git branch -d 命令会失败,提示你这样做会丢失信息。如果你的确想删除这样的分支,不怕信息丢失,那么可以使用 git branch -D 命令,这个命令不会去判断分支的merge状态,例如:
$ git branch -D branch-name

通常建议使用 -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曲线的更多相关文章

  1. [Git] 技术的热门度曲线

    reference :http://www.ruanyifeng.com/blog/2017/03/gartner-hype-cycle.html reference : https://stateo ...

  2. CSS3实现图形曲线阴形和翘边阴影

    首先,来看看完成之后的效果图: 实现原理 ①曲线阴影实现: 多个阴影重叠,就是正常阴影+曲线阴影 正常情况下,有个矩形有正常的阴影,作为主投影,这时候再定义一个有一定弧度圆角的圆角矩形,然后放在正常矩 ...

  3. 关于git的学习

    Git是目前世界上最先进的分布式版本控制系统(没有之一)! 由于现在用的还不多,还没有这种体会,但是前人的经验是值得借鉴的,所以我认真的学习了一些关于git的简单操作,现在在这分享一些心得,或者说是为 ...

  4. git workflow常用命令

    git init git status git add readme.txt git add --all         Adds all new or modified files git comm ...

  5. git/github初级运用自如 (转)

    三 . 设置用户信息 这一步不是很重要,貌似不设置也行,但github官方步骤中有,所以这里也提一下. 在git中设置用户名,邮箱 $ git config --global user.name &q ...

  6. ios-贝塞尔曲线

    git下载地址:git@github.com:lu459700780/UIBezierPath.git 演示: #import "ViewController.h" @interf ...

  7. 简单对比git pull和git pull --rebase的使用

    使用下面的关系区别这两个操作:git pull = git fetch + git mergegit pull --rebase = git fetch + git rebase 现在来看看git m ...

  8. 可视化n次贝塞尔曲线及过程动画演示--大宝剑

    起因 研究css中提供了2次.3次bezier,但是没有对n次bezier实现.对n次的实现有很大兴趣,所以就用js的canvas搞一下,顺便把过程动画模拟了一下. 投入真实生产之中,偏少. n次be ...

  9. 【Git】git pull和git pull --rebase的使用

    git pull = git fetch + git mergegit pull --rebase = git fetch + git rebase 现在来看看git merge和git rebase ...

随机推荐

  1. [CareerCup] 14.4 Templates Java模板

    14.4 Explain the difference between templates in C++ and generics in Java. 在Java中,泛式编程Generic Progra ...

  2. 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 ...

  3. Spring 集成 Hibernate 和 Struts 2

    在Spring中集成Hibernate,实际上就是将Hibernate中用到的数据源DataSource. SessionFactory实例(通常使用Hibernate访问数据库时,应用程序会先创建S ...

  4. IOS开发之——意见反馈UITextView的使用+不能输入字符输入

    @interface DMFeedbackViewController ()<UITextViewDelegate,UIAlertViewDelegate>@property (nonat ...

  5. MVC5 + EF6 + Bootstrap3 (12) 新建数据

    Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-create.html 系列教程:MVC5 + EF6 + ...

  6. Ubuntu 上创建常用磁盘阵列

    RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失 ...

  7. RockWare RockWorks的Ollydbg调试过程及注册机(破解)思路

    最近拿到了RockWorks15的安装包,可惜没有破解,试用也只能用14天.用PEiD工具察看了一下,Delphi编写的程序,竟然没加壳.本想用OllyDBG调试进去爆破一下,不意发现注册码很简单,如 ...

  8. [AHOI2013]立方体(三维bit)

    [Ahoi2013]立方体 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 130  Solved: 55[Submit][Status] Descrip ...

  9. shell中的流程控制

    一.if的使用 判断磁盘使用率,如果超过要求值就直接报警 数据库备份 apache服务器启动检测(nmap工具需要安装) 多重条件判断 二.case的使用 三.for使用 字符串循环,in后面的内容以 ...

  10. 【Aaronyang原创】用linq取出一个集合中重复的数据

    文章已经迁移:http://www.ayjs.net/2013/07/69/ 文章已经迁移:http://www.ayjs.net/2013/07/69/ 文章已经迁移:http://www.ayjs ...