git简易使用

2 篇文章 0 订阅

简介

Git是分布式版本控制系统,和其他版本控制系统的主要差别在于Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异。Git 并不保存这些前后变化的差异数据。Git 更像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作快照,然后保存一个指向这次快照的索引。
基本的 Git 工作流程如下:
在工作目录中修改某些文件。
对修改后的文件进行快照,然后保存到暂存区域
提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中

在这里插入图片描述

  1. 工作区(workspace)
    程序员进行开发改动的地方,是你当前看到的,也是最新的。平常我们开发就是拷贝远程仓库中的一个分支,基于该分支进行开发。在开发过程中就是对工作区的操作。
  2. 暂存区(index):
    .git目录下的index文件, 暂存区会记录 git add 添加文件的相关信息(文件名、大小、timestamp…),不保存文件实体, 通过id指向每个文件实体。可以使用 git status 查看暂存区的状态。暂存区标记了你当前工作区中,哪些内容是被git管理的。当你完成某个需求或功能后需要提交到远程仓库,那么第一步就是通过 git add 先提交到暂存区,被git管理。
  3. 本地仓库(repository):
    保存了对象被提交 过的各个版本,比起工作区和暂存区的内容,它要更旧一些。git commit 后同步index的目录树到本地仓库,方便从下一步通过 git push 同步本地仓库与远程仓库的同步。
  4. 远程仓库(remote):
    远程仓库的内容可能被分布在多个地点的处于协作关系的本地仓库修改,因此它可能与本地仓库同步,也可能不同步,但是它的内容是最旧的。
    在这里插入图片描述

实操

先创建一个reamde.txt文件

  1. 将文件保存到暂存区
git add readme.txt
  1. 将暂存区的更改提交到本地版本库
git commit -m "wrote a readme file.txt"

-m后的内容相当于为该次提交命名(版本号)

  1. 查看创建的提交的更改信息,通过使用 git log 命令查询
git log
  1. 版本之间的diff
    查看简单的diff结果,可以加上–stat参数,执行命令如下:
git diff --stat

比较上次提交commit和上上次提交的差别时,执行如下命令:

git diff HEAD^ HEAD

比较两个历史版本之间的差异时,命令如下:

git diff SHA1 SHA2
  1. 提交代码到线上仓库 使用git push
    注意直接使用git push在大多数情况是不允许的 需要后面加上所添加分支或主干路径
    提示如下:
[NOT OK]  git push
[    OK]  git push origin HEAD:refs/for/master

完善上一次的提交

 修改需要修改的地方(只是修改commit message就不用做)
git add .  #这一步如果只是修改commit message不用输入
git commit --amend
#输入修改后的commit message,保存
最后进行git push

回滚

使用git reset命令,将当前版本readme.txt回退到上一个版本

git reset --hard HEAD^

上一个版本就是HEAD^,上上一个版本就是HEAD^^
回到指定版本 hard后面跟版本号 只要前几位即可

git reset --hard bd5293716f00

如果不记得commit id,也可以找到回滚前的分支

 git reflog  

创建与合并本地分支

  1. 创建dev分支,然后切换到dev分支
git checkout -b dev

注:git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

git branch dev
git checkout dev

使用git branc命令查看当前本地分支,git branch命令会列出所有本地分支,当前分支前面会标一个*号:
$ git branch -r 查看远程分支
$ git branch -a查看所有分支

$ git branch
* dev
  master

  1. 在dev分支上正常提交,比如对readme.txt做个修改,加上一行,并提交:
    新加一句"Creating a new branch is quick."
    修改readme.txt文件,并提交修改:
    a. 先执行命令下面命令
cat > readme.txt << __ENDL
Creating a newbranch is quick.
__ENDL

b. 再次提交修改

git add readme.txt
git commit readme.txt -m "add creating branch"
  1. dev分支的工作完成,使用git checkout master 切换回master分支(类似,若切换到1.0分支,则使用命令 git checkout 1.0)
  2. 切换回master分支后,再查看一个readme.txt文件,刚才添加的内容不见了,因为那个提交是在dev分支上,而master分支此刻的提交点并没有变
  3. 使用git merge dev 命令将dev分支的修改内容合并到master分支上
  4. 合并完成后,删除dev分支git branch -d dev

在工作中当自己的开发分支需要合入其他分支时 需要先切换到要合入的开发分支 然后git merge 自己的分支名 这时候会出现合并信息 一般需要在开头加上版本号 + Merge信息

git pull 读取远程代码库 来更新本地代码库

merge合入代码发生冲突解决方法

将线上分支合入到本地分支时
如果存在同文件名 不同内容的情况 会存在合入冲突
解决方法:直接打开其中一个文件 手动修改保证两文件内容一致
注意:存在打不开文件的情况 可以直接在终端打开 先切换到相应分支下 vi 文件名打开 按下i变成可编写状态进行修改 编写完成后按ESC退出编写状态 接着按下shift+: 输入wq (保存并退出)即可解除冲突
在这里插入图片描述

当开发完成一半突然插入其他分支的需求

需要先保存当前分支改动再切换到另一个分支
可以采用git stash保存当前改动 同时代码会回退到上个版本
在使用git stash pop可以取出保存的代码。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值