Git 入门

1.版本控制工具的演变

1.1本地版本控制系统(VCS)

  • 利用数据库记录文件的历史更新差异。例如rcs
  • 缺点:不同系统上的不能协同工作
    在这里插入图片描述

1.2 集中化的版本控制系统(CVCS)

  • 将版本信息和修改信息都保存在中央服务器上。如果需要对比代码就要和中央仓库中的代码进行比较。例如 CVS Subversion
  • 缺点:服务器单点故障的时候,中央服务器或者网路有问题的时候,就不能提交代码,对比等操作了。工作就不能进行了
    在这里插入图片描述

1.3 分布式版本控制系统(DVCS)

  • 将中央服务器的代码都拷贝到本地仓库中,本地仓库就是中央仓库在某个特定时刻的完整拷贝。
  • 使用者提交代码或者进行对比的时候都可以和本地仓库交互来完成。与别人要共享的时候才将本地仓库推送到远程仓库。
  • 一旦远程仓库宕机,可以用本地仓库进行恢复。

1.4 SVN和Git 区别

(1) 存储上的区别: git 保存的是快照,svn保存的文件的变化
  • svn 存储的是每个文件的变化 。当你需要从version4 到version2的时候就需要根据△来计算。当版本进行来回之间修改的时候效率就会很低。
    在这里插入图片描述

  • git 存储完整的文件快照 如果要从version4 到version2 只要将指针的指向切换就行了。所以版本进行分支切换效率高
    在这里插入图片描述

(2)git 几乎所有操作都是在本地完成,svn需要与服务器通讯才能完成操作。
(3)git 使用SHA-1 hash生成提交版本号(保证内容的完整性),svn使用递增的编号来作为版本号。

2. git 基本概念

2.1 git 的三种状态

在这里插入图片描述

  • 已修改:修改了文件,没有放入到暂存区域中。
  • 已暂存:已修改文件包含到了下次提交的快照中,但是没有提交
  • 已提交:文件已经在本地仓库中,可以在分支的历史上查看到提交

2.2 git的三个区域

在这里插入图片描述

  • 工作目录:就是某个版本的快照内容,提取到工程环境下,供大家修改。
  • 暂存区域:是一个文件,保存了下一次需要提交的文件列表信息。
  • git仓库:保存元数据,当使用远程服务器克隆或者推送就是使用这个

3.git 基本命令

git init

创建一个空的本地仓库或者重新初始化一个已经存在的仓库

git clone

克隆远程仓库到本地目录

git remote

管理远程仓库

  • git remote
    查看远程仓库
    在这里插入图片描述

  • git remote add [shortname] [url]
    添加新的远程仓库
    在这里插入图片描述

  • git remote -v
    查看远程仓库和克隆地址
    在这里插入图片描述

  • git remote rm xx
    删除远程仓库

  • git remote rename xx yy
    将远程仓库在本地的简称重命名

  • git remote show [remote-name]
    查看远程仓库的详细信息

git status

记录工作区状态
在这里插入图片描述

git log

记录提交日志

  • git log -p -2
    -p 显示每次提交的内容差异, -2 显示最近两次的提交
    在这里插入图片描述

–since --before 表示从指定日期的起始和指定日期的结束 --author 指定作者
在这里插入图片描述

git reflog

记录分支的所有操作
git log 只记录了提交日志,而git reflog记录了所有的提交日志;git reflog只存在于使用者的本地仓库,而不会与远程仓库同步,而git log 远程仓库和本地仓库保存相同

git config

修改git配置文件

  • git config --add
    git config --add user.name xxx
    git config --add user.email xxx
  • git config -e
    查看配置
git add

将xxx从工作区加到暂存区(包括未跟踪和已经跟踪)

  • git add . 或者git add *
    将所有修改的操作添加到暂存区。
  • git add -u [ ]
    中所有跟踪文件中被修改过或已删除文件的信息添加到索引库。它不会处理那些不被跟踪的文件。省略 表示 .
git commit
  • git commit -m ‘xxxx’
    将暂存区的提交到本地仓库

  • git commit -a -m ‘xxx’
    将工作区中已经跟踪的直接跳过暂存区提交到本地仓库

  • git commit --amend
    修改最后一次提交

git push

git push [remote-name] [local-branch-name]:[remote-branch-name](默认使用 origin 和master)
注意:在推送之前,将远程分支抓取到本地

  • git push -u origin mybranch
    将分支mybranch设置为跟踪来自origin的远程分支mybranch,下一次推送的时候直接git push
git diff

显示不同提交,不同工作区域,不同分支之间的差别

  • git diff
    查看工作区与暂存区之间的差别(默认)
    git add 以后就会同步了。
    在这里插入图片描述
  • git diff --cached 或者 git diff --staged
    查看暂存区和本地仓库的区别
    使用 git commit 就会使暂存区和本地仓库同步
  • git diff commit_id1 commit_id2
    比较不同提交记录(commit)的区别 (可以是commit id的前几位)
    在这里插入图片描述
  • git diff branch1 branch2
    比较不同分支的区别
git fetch

拉取远程仓库到本地分支,但不会自动合并到当前分支。需要进一步手动合并git merge origin/mybranch

git merge

合并分支
(1)当要和master分支合并的时候,先切换master分支,然后合并
(2)git merge --abort
将这次的合并取消

git pull

拉取远程仓库到本地分支 并且 合并分支(git fetch+git merge)

git branch
  • git branch
    查看当前分支
    git branch -v
    查看各个分支最后一个提交的对象
    git branch --merge
    查看已经并入当前分支的分支
    git branch --no-merge
    查看未并入当前分支的分支
  • git branch xxx
    创建分支
  • git branch -d xxx
    删除分支
git checkout
  • git checkout xxx
    将分支切换到xxx

  • git checkout -b xxx
    创建分支xxx,并切换到xxx

  • git checkout的另外一种用法:将本地工作区还原成本地仓库的样子
    git checkout – filename
    也可还原到某个版本号的文件
    git checkout commit_id filename
    也可还原到上次提交的文件
    git check HEAD~ filename (HEAD表示当前提交,HEAD~就是上一次提交)

git reset
  • git reset HEAD~
    将暂存区重置到上一次提交。然后head指向上一次提交
  • git reset --hard HEAD~ 或者git reset --hard commit_id
    将暂存区和工作区重置到上一次提交(这种情况是不可逆的,用的时候小心!)
    它会将之后的提交版本号都撤销
  • git reset --soft HEAD~
    只是将head 指向上一次提交。

注意:可以使用git diff 和git diff --cached 进行验证比较

git revert

撤销已经存在的提交,与git reset相比不会将版本号消除
git revert commit_id

git cherry-pick

用于把某次的提交的内容合并到当前分支
应用情景:急于把修复的内容提交,而其余的业务不需要提交,那么就是先切换到master分支,然后
git cherry-pick commit_id 如果有冲突就解决冲突。解决完冲突 git cherry-pick --continue

git rebase

用于把一个分支的修改合并到当前分支
与git merge 的区别就是更加整洁

参考 git pro http://git.oschina.net/progit/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值