git简介及常用命令

简介

git是一个分布式版本控制系统。

版本控制系统可以分为集中式和分布式两种。所谓集中式,会把代码放在一个服务器上集中管理,所有回滚等操作都需要服务器的支持.每次写代码都需要从服务器中拉去一份下来,如果服务器里的内容丢失了就寄了,本机只会保留当前的版本信息。但采用分布式的话,每个人的电脑都是服务器,无需担心主仓库被删或者找不到的情况,可以自由在本地回滚,提交,想把自己的代码提交到主仓库时,只需要合并推送到主仓库就可以了,同时也可以把自己的代码新建一份仓库分享给其它人。

集中式都有一个主版本号,所有的版本迭代都以这个版本号为主,而分布式因为每个客户端都是服务器,git没有固定的版本号,但是有一个由哈希算法算出的id(理解为版本号),用来回滚用的,同时也有一个master仓库作为一切分支仓库的主仓库,我们客户端上的git版本号无论迭代多少次,都跟master无关,只有推送提交到master并合并到主仓库上时,master才会迭代一次。

当我们在使用git开发项目时,可以使用分支操作。
在团队开发中,master只有一个,合作开发里任何人都可以从master里拉取代码,可以创建不同分支来应对不同需求。比如区分不同的版本,可以在master分支持续更新,再创建1.0,2.0等分支来记录版本迭代。

基本组成框架

  • Workspace:工作区,即当前写代码的目录,一般保持最新的仓库代码
  • Index/Stage:缓存区,位于.git目录下的index或stage文件中,用于存放临时文件。比如比如我们做了git add或者git rm,都是把文件提交到缓存区,这是可以撤销的,然后再通过git commit将缓存区的内容提交到本地仓库。
  • Repository:仓库区(本地仓库),工作区有一个隐藏目录.git,这个不属于工作区,而是版本库,也叫仓库区,可以简单的理解为一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件”还原”。你所有的提交(commit)都在这里,其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。
    通过命令git init把当前目录变成git可以管理的仓库
    使用 git add就是把文件添加到暂存区。
    使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。
  • Remote:远程仓库,只能是别的电脑上的仓库,即服务器仓库。 在这里插入图片描述

常用命令

克隆远程仓库指定分支

git clone -b 分支名 仓库地址/连接 新建文件夹名
分支名和仓库地址可在网页上查看,仓库地址是git@XXX的形式

更新本地代码到最新版本

git pull
从远程仓库中抓取最新的代码版本
如果有两个人对同一个文件做了修改,且一人已经推送到了远程库,那么另一个人使用pull时会产生冲突。

添加文件到本地仓库

1. 提交到缓存
使用git add命令将文件添加到本地仓库的提交缓存(还不算提交到本地仓库,只是缓存)
举例:

  • git add filename.v
  • git add …/…/filename.c filname.v

可以一次添加多个文件,或者添加文件夹。
git add命令添加文件到本地仓库后,再在本地修改,仓库内文件的内容不会变化,如需上传新版本,需再次用add提交
使用git add --all可以将当前目录包括子目录下所有改动的文件都提交到缓存区,未发生改动的不提交。
注意:如在本地删除了文件,这个命令会把删除信息也记录进去,然后在提交的时候把仓库里对应的文件也删除。如果不想删除仓库内文件,应使用git add .

2. 添加到本地仓库
使用git commit -m "brief discription"
git commit 会为我们生成40位的哈希值,用于作为id,并把刚刚用git add添加到提交缓存区里的文件提交到本地仓库中,便于我们回滚,至此,这个文件就已经添加到本地仓库中了,同时本地仓库也迭代了一个版本。引号里的内容用于简单描述本次更新的主要内容、版本信息等重要注释信息。

删除本地仓库的文件

git rm filename
如果是文件夹,就用git rm -r foldername
使用方法同git add,上传到缓存之后还需要使用git commit提交到本地仓库
如果git rm后没有commit,想要撤回这次删除,可以使用使用git reset重置所有缓存区操作,再使用git checkout filename命令该文件恢复到跟主仓库一致的版本。
**注意:**直接使用git rm会将工作区的同名文件一起删除,如果需要保留本地文件,要使用git rm --cached filename,文件夹同理,再加个-r就行

提交代码到远程仓库

一般用git push就可以
如果在本地也新建了分支,第一次提交的时候要用git push -u orign 分支仓库,这种命令没用过,也没太搞懂,就不详细说了。

改写提交时的描述信息

如果执行了git cimmit还没有push的时候发现描述(注释)部分写错了,可以使用git commit --amend来进入编辑器页面改写上一次的提交信息。

查看历史提交日志

git loggit log filename
显示的信息包含:

  • 哈希算法算出的id
  • 提交到了那个分支,如HEAD——>master
  • Auther
  • Date
  • 提交时填写的描述(注释)
    如果觉得log打印内容过多,可以加上–pretty=oneline选项简洁输出

查看当前仓库状态

git status
可以查看:
在本地更改了哪些文件
在本地新增了哪些文件
git add或git rm后缓存但没提交的文件
commit(提交)但没有push的文件

其他不太常用的命令

1. 回滚代码仓库
什么是回滚:
当程序或数据处理错误,需要将程序或数据恢复到上一次正确状态的行为称为回滚。在git中回滚的事务可以理解为不提交,回到初始状态。
有–soft 、–mixed和–hard三个恢复等级。
--soft:仅恢复头指针,已经add的暂存区以及工作空间的所有东西都不变。
--mixed:将头恢复掉,已经add的暂存区也会丢失掉,工作空间的代码什么的是不变的。
--hard:全部恢复,头变,add的暂存区消失,代码什么的也恢复到以前状态。

  • git reset --hard 要回滚的id:回滚到指定历史版本。(用git log/ git reflog查看历史版本id)
  • git reset --hard HEAD^ 回滚当前仓库的上一个版本
    ^代表上一个版本,HEAD代表当前仓库的指向,当前HEAD指向master,就代表回滚到master上一次提交的版本,如果要回退到上上个版本只需把HEAD^ 改成 HEAD^^ 以此类推。或者用:
  • git reset --hard HEAD~3
    后面的~3,代表以当前版本为基数,回滚多少次。HEAD~3代表回滚master前三个版本
  • 查看本地当前分支
    git branch
  • 查看远程全部分支
    git branch -r
  • 转换分支
    git checkout 目标分支名
    如果一个pull下来的文件在本地做了修改,且不想要这个修改了,可以直接git checkout fliname重新获取一下
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值