关于Git和Git的常用命令
一.Git(分布式管理版本控制系统)
Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。 [1] Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 是用于 Linux内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持(wingeddevil注:这得分是用什么样的服务端,使用http协议或者git协议等不太一样。并且在push和pull的时候和服务器端还是有交互的。),使源代码的发布和交流极其方便。 Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪(merge tracing)能力。
特点:
分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。
功能:
1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。
2、在自己的机器上根据不同的开发目的,创建分支,修改代码。
3、在单机上自己创建的分支上提交代码。
4、在单机上合并分支。
5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
6、生成补丁(patch),把补丁发送给主开发者。
7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。
二.Git的常用命令
1.配置信息
git --version(查看git版本信息)
git config --global user.name/user.email(获取当前用户名/邮箱)
2.登录Git
git config --global user.name "自己的用户名"
git config --global user.email "自己的邮箱"
3.Git工作区仓库的建立
进入指定文件夹,使用git init 命令创建
4.文件的提交
先了解下git的3大区域
1、工作区(working directry)
2、暂缓区(stage index)
3、Git仓库(
提交命令:
git add . (添加所有工作区文件到暂存区)
git add filename(添加工作区指定文件至暂存区)
git commit -m "描述语句(解释文件/文件的具体更改)" (添加暂存区所有文件到Git仓库)
git commit -am "描述语句(解释文件/文件的具体更改)" (添加工作区修改的文件到Git仓库)
5.文件的 回退版本,撤销,删除操作等
1.回退版本:
格式1: git reset --hard HEAD^
解释:
HEAD表示当前最新版本
HEAD^表示当前最新版本的, 上一个版本
HEAD^^表示当前最新版本的, 前两个版本, 依次类推
HEAD~1 表示当前最新版本的, 上一个版本
HEAD~2 表示当前最新版本的, 前两个版本, 依次类推
格式2: git reset --hard 版本号
注意: 版本号很长, 指定的大于等于7未即可
2.撤销修改
撤销工作区:(本质将暂存区的文件覆盖工作区文件)
格式: git checkout 文件名
撤销暂存区:
格式: git reset HEAD 文件名 #将暂存区的代码撤销到工作区
git checkout 文件名 #撤销工作区代码
注意:
只能撤销工作区, 暂存区的代码, 不能撤销仓库区的代码
撤销仓库区的代码就相当于回退版本操作
3 .删除文件:
格式1: rm filename #直接删除磁盘文件,linux指令
格式1:git rm filename #删除暂存区文件
如果误删,撤销:
格式1: rm 文件名 #误删,未提交
git checkout filename--文件名 #撤销
格式2: git rm 文件名 #误删
恢复: git reset --hard HEAD^ #撤销
6.文件的状态,以及版本状态与对比查询
1.文件状态查询命令:
git status(查看文件状态状态)
文件状态分为四中:
untracked(未被跟踪的)
modified(文件已经修改,为添加到暂存区的)
staged (在暂存区未提交到版本库的)
commitited(git版本库中)
2.版本状态查询命令:
git log (查看版本信息,提交时间等等)
git reflog(查看所有的版本信息,包括删除的版本)
3.对比版本
对比版本库与工作区代码差异:
格式: git diff HEAD -- xxx.py
格式解释: HEAD表示版本库, xxx.py表示工作区
出现绿色加号(+) 表示工作区相对于版本库增加的代码
对比版本库:
格式: git diff HEAD HEAD^ -- login.py
HEAD: 表示当前版本
HEAD^:表示上个版本
login: 表示对比的文件
三.Git的远程简单操作
(1) 远程仓库相关命令
检出仓库:$ git clone [url](仓库的地址) (将仓库的文件下载到指定的文件夹,即本地工作区)
查看远程仓库:$ git remote -v
添加远程仓库:$ git remote add [name] [url]
删除远程仓库:$ git remote rm [name]
修改远程仓库:$ git remote set-url --push [name] [newUrl]
拉取远程仓库:$ git pull [remoteName] [localBranchName]
推送远程仓库:$ git push [remoteName] [localBranchName]
(2)分枝操作
git branch(查看本地分枝)
git branch -r (查看远程分枝)
git branch [newname](创建一个名字未newname的分枝,HEAD不会自动指向此分枝)
git checkout name (切换分枝)
git branch -d name(删除分枝,不能删除当前指向的分枝)
合并分支:git merge [name] ----将名称为[name]的分支与当前分支合并
创建远程分支(本地分支push到远程): git push origin [name]
删除远程分支: git push origin :heads/[name] 或 [git push origin :[name]
------------------------------------------------------------文章写的比较匆忙,后期将完善内容------------------------------------------------------------