git 操作详情

Git 教程

1.Git 是一个开源的分布式版本控制系统

2.Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开源版本控制软件

3.Git 与常用的版本控制工具 CVS,Subversion 而不同,采用了分布式版本库的方式,不需要服务端软件的支持

Git 与 SVN 的区别

1. Git 是分布式的,SVN 不是

2.Git 把内容按元数据方式存储,而 SVN 是按文件,即把所有资源控制系统都是把文件的原信息隐藏在  .svn , .cvs 的文件中

3.git 分支与 svn 的分支不同,在svn 中分支是版本库的另一个目录

4.git 内容完整性要优胜 svn , git 的内容存储使用的是 SHA-1 哈希算法,这确保代码内容的完整性

 

 配置用户信息

$ git config --global user.name "runoob"
$ git config --global user.email [email protected]

如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。

如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。

查看配置信息

git  config --list

查看 git 版本信息

git --version

Git 工作流程

一般工作流程如下:

  • 克隆 Git 资源作为工作目录。
  • 在克隆的资源上添加或修改文件。
  • 如果其他人修改了,你可以更新资源。
  • 在提交前查看修改。
  • 提交修改。
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

 Git 工作区、缓存区、版本库

工作区: 就是电脑里能看到的目录

暂存区:英文名 stage,或者 index. 一般存在 .git 目录下 index 文件中,暂存区有时也称为 索引(index)

版本库: 工作区有一个隐藏的 .git ,是 git 的版本库

图中左侧为工作区,右侧为版本库。在版本库中标记为 "index" 的区域是暂存区(stage, index),标记为 "master" 的是 master 分支所代表的目录树。

图中我们可以看出此时 "HEAD" 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。

图中的 objects 标识的区域为 Git 的对象库,实际位于 ".git/objects" 目录下,里面包含了创建的各种对象及内容。

当对工作区修改(或新增)的文件执行 "git add" 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。

当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。

当执行 "git reset HEAD" 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。

当执行 "git rm --cached <file>" 命令时,会直接从暂存区删除文件,工作区则不做出改变。

当执行 "git checkout ." 或者 "git checkout -- <file>" 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。

当执行 "git checkout HEAD ." 或者 "git checkout HEAD <file>" 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

Git  创建仓库

Git 使用 git init 命令初始化一个仓库,执行该命令后 git 仓库会形成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变。

git init

如果该目录下有几个文件想纳入版本控制,需要先使用 git add 命令告诉 Git 开始对文件进行跟踪 ,然后提交

$ git add *.c
$ git add README
$ git commit -m '初始化项目版本'

Git 从远程仓库拷贝代码到本地

$ git clone git://github.com/schacon/grit.git

执行该命令后,会在当前目录下创建一个名为grit的目录,其中包含一个 .git 的目录,用于保存下载下来的所有版本记录。

如果要自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:

$ git clone git://github.com/schacon/grit.git mygrit

Git 分支管理

猜你喜欢

转载自www.cnblogs.com/baizhuang/p/11606872.html