Git常用命令及配置
Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
Git安装配置
本文主要讲解linux上如何安装配置Git
Centos/RedHat
$ yum install curl-devel expat-devel gettext-devel \
openssl-devel zlib-devel
$ yum -y install git-core
$ git --version
git version x.x.x
-
Git得配置信息得目录:
-
.git/config
-
用户信息配置
-
git config --global user.name "个性名称"
-
git config --global user.email "个人邮箱地址"
-
配置个人的用户名称和电子邮件地址:
-
查看用户信息
基本概念
工作区:本地目录
暂存区:英文叫stage, 或index。一般存放在"git目录"下的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 config --list
Git工作区、暂存区和版本库
-
git init
找到一个空得文件位置,然后使用此命令
-
git clone [url]
从Github网站得仓库中拉取下代码到当前工作区
-
git add <file-name>
共当前得工作区把文件添加到暂存区
-
git diff
比较工作区和暂存区得区别
-
git commit
从暂存区到版本库
-
git reset HEAD
用于取消缓存已缓存的内容
-
git branch
显示当前已有分支
-
git checkout [branchname]
切换分支
-
git merge
合并分支
-
git branch -d [branchname]
删除分支名称
-
git log
查看git历史
-
git tag
写标签
-
git remote add [shortname] {url}
添加远程库
-
ssh-keygen -t rsa -C "github仓库地址"
检测是否已成功连接此仓库
-
git push -u origin master
推送在版本库中得代码到远程仓库得master分支
-
git pull
拉去远程仓库到本地
-
git remote rm [远程仓库别名]
删除远程仓库