git个人学习总结

时间:2021-11-15 07:22:40

什么是git

代码管理工具,分布式管理,每个人电脑都是一个完整的版本库。并且有*服务器(gitHub,gitLab)提供代码交换修改

git个人学习总结

git基础概念

  • 工作区:自己的项目(有一个隐藏目录 ".git" 的文件)
  • stage暂存区(git add .之后就进入暂存区)
  • 本地仓库(包含了本地的各种分支)
  • 远程仓库(默认:origin)
  • 分支:默认每个仓库都有一个master分支,也是我们的工作的一条线,git仓库则是由无数个分支组成
  • 在git中HEAD表示当前版本指针

常用git指令

  • git add name(单个) || git add .(全部) : 工作区 ==> 暂存区
  • git commit -m "message" : 暂存区 ==> 本地分支
  • git push origin branchName : 本地分支 ==> 远程分支
  • git pull : 拉取关联了本地分支的远程分支的最新内容
  • git status : 用于显示工作目录和暂存区的状态
  • git rm file : 删除一个文件
  • git clone 项目地址 : 克隆一个项目
  • git remote 查看远程仓库信息
  • get remote -v 显示可以拉取和推送的origin的地址。如果没有推送权限,就看不到push地址

查看git操作信息

git log 查看log

git log 显示log详细信息
git log --pretty=oneline(更加简洁清晰的显示)
git reflog 记录了所有命令变更状态
git log --graph --pretty=oneline --abbrev-commit 查看分支合并图

分支

基础操作

git checkout -b 本地分支名 origin 远程分支名 :创建分支
git branch -a : 查看本地分支和远程分支
git branch -r : 查看远程分支
git branch : 查看本地分支
git branch -d 分支名 : 删除本地分支
git push origin --delete 远程分支名

合并分支操作

假设develop为最新分支,我们需要更新当前分支为最新的develop
1. git fetch origin develop:develop 更新develop为最新
2. git merge develop 把最新的develop更新到当前分支中
3. 如果有冲突就解决冲突后重新commit push等操作

缓存区操作

假设我们现在编写了很多代码,但是又不愿意commit,但是这个时候又需要切换到其它分支进行操作,那么此时就可以用上stash了

1、把我们写的内容保存起来,执行命令git stash
2、然后切换到其它分支去工作,工作完成后切换到当前分支来
3、执行 git stash list 查看缓冲区有哪些内容
4、恢复之前的工作内容:git stash apply(恢复最后一条stash里面的工作内容,并且stash中还保存着)
5、或者使用 git stash pop 恢复最后一条stash的工作内容,且stash中不再保存了
6、也可以执行 git stash apply stash@{0} 来恢复指定的stash工作内容 最后再介绍一条:git stash drop stash@{0} 来移除指定的stash里面已经没有用的内容。

rebase操作流程

假设develop为最新分支,我们所在的分支名为cur分支,现在我们想要把develop的最新内容更新到cur分支上。

条件:我们现在所处的分支是cur分支
1. 拉取最新develop:git fetch origin develop:develop
2. git rebase develop
3. 如果有冲突的话,处理好冲突
4. git add .
5. git rebase --continue
6. git push -f (这里必须要强制推送)

cherry-pick操作

假设我们现有release/1.0分支,我们所在的分支为cur分支,按照git flow 的分支管理方式,我们需要把cur分支合并到develop分支上的同时,我们还需要cherry-pick一份到release/1.0

1、git log 找到我们即将要cp的 commitID 假设(4b16df9cdf46159ceac7a5489b3da8eb5486034b)
2、切换到release/1.0分支上(git checkout release/1.0)
3、执行命令: git cherry-pick 4b16df9cdf46159ceac7a5489b3da8eb5486034b
4、查看是否有冲突,如果有冲突就解决冲突(假设有冲突)如果没有冲突的话就直接git push结束
5、解决完冲突后,git add .
6、git cherry-pick --continue
7、git push 操作

后悔药

暂存区后悔

git reset HEAD <filename> 这个是把暂存区的修改返回到工作区
git checkout --filename 丢弃工作区,回到上一次commit的状态

本地仓库后悔

git reset --hard origin/分支名 : 放弃所有修改,同步远程仓库
git reset --hard HEAD^ : 回退到上一次commit的状态
git reset --hard commitId : 回退到任意commitId

常见问题

1、当我们在gitLab上面创建了一个新分支,为什么使用命令行是看不到的?

需要先git fetch 更新一下

小结

本文让我们初步了解了git是什么,且理解了git的四个核心的概念:工作区,暂存区,本地仓库,远程仓库。其实我们对于git的操作无非就是分支,把分支在这4个区中不断的变更位置,做错了就回退位置,做完了就合并到其它分支上去的一个过程。

git个人学习总结的更多相关文章

  1. git入门学习&lpar;二&rpar;:新建分支&sol;上传代码&sol;删除分支

    一.git新建分支,上传代码到新的不同分支  我要实现的效果,即是多个内容的平行分支:这样做的主要目的是方便统一管理属于同一个内容的不同的项目,互不干扰.如图所示: 前提是我的github上已经有we ...

  2. git入门学习&lpar;一&rpar;:github for windows上传本地项目到github

    Git是目前最先进的分布式版本控制系统,作为一个程序员,我们需要掌握其用法.Github发布了Github for Windows 则大大降低了学习成本和使用难度,他甚至比SVN都简单. 一.首先在g ...

  3. 代码管理工具之git的学习

    1.代码管理工具git的学习  http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 2.github的使用帮助   https:// ...

  4. git的学习笔记&lpar;二&rpar;&colon;git远程操作

    1.创建ssh key ssh-keygen -t rsa -C "your_email@example.com" 执行命令后会在用户的家目录生成.ssh的隐藏文件夹,文件夹里有公 ...

  5. Git操作学习笔记

    根据廖雪峰老师git教程学习整理 这里需要辨析一下概念.Github是代码托管平台,是协作的工具;而Git是版本控制工具.Git不需要联网,在本机就可以使用 集中式版本控制系统与分布式版本控制系统 S ...

  6. FastAdmin 推荐 Git 在线学习教程

    FastAdmin 推荐 Git 在线学习教程 因为 FastAdmin 推荐使用 Git 管理代码,有很多小伙伴对 Git 不是很熟悉. 也苦于找不到好的教程,我就分享一个 Git 在线学习教程. ...

  7. Git命令学习之旅——日志和穿梭版本号

    在总结了git命令的基础之后,接下来我们看一下基础的一些进阶内容:删除撤销命令.日志查看命令等 既然有加入文件的功能,那么相相应的肯定有移除文件的功能,命令例如以下:git rm [文件名称] 在输入 ...

  8. 【Git】学习开始

    [Git]学习开始 转载:https://www.cnblogs.com/yangchongxing/p/10172683.html 在线电子书籍:https://git-scm.com/book/z ...

  9. Git详细学习教程

    作者:gafish https://github.com/gafish/gafish.github.com Git简介 Git 是一种分布式版本控制系统,它可以不受网络连接的限制,加上其它众多优点,目 ...

  10. Git速成学习第六课:Bug分支

    Git速成学习笔记整理于廖雪峰老师的官网网站:https://www.liaoxuefeng.com/ 当你接到一个修复代码为101的任务的时候,很自然的你想创建一个分支issue-101来修复它,但 ...

随机推荐

  1. python学习之路 第三天

    1.set集合:去掉重复字段 set.difference()找出不同并创建一个新的集合,不改变原来集合: set.difference_update() 改变原来集合,剔除掉括号内容: set.di ...

  2. js 键盘记录实现&lpar;兼容FireFox和IE&rpar;&lpar;转&rpar;

    主要分四个部分 第一部分:浏览器的按键事件 第二部分:兼容浏览器 第三部分:代码实现和优化 第四部分:总结 第一部分:浏览器的按键事件 用js实现键盘记录,要关注浏览器的三种按键事件类型,即keydo ...

  3. linux查看负载

    LINUX下查看负载 1,查看磁盘 df -h 2,查看内存大小 free free [-m|g]按MB,GB显示内存 vmstat 3,查看cpu cat /proc/cpuinfo 只看cpu数量 ...

  4. Atitit &&num;160&semi;如何让精灵控件运动

    Atitit  如何让精灵控件运动 ##让Sushi精灵动起来 上面的代码,我们创建了静态的sushiSprite,现在我们让它动起来.使它从屏幕顶部下落到屏幕底部.在addSushi方法中添加如下代 ...

  5. hdu1811 并查集&plus;拓扑序

    题意:现在有一个排名系统,有一系列信息,分别是 > < = 的比较,而如果最终相等,就会将这些相等的按照序号从小到大排,问给出的信息是否可以确定完整的排序. 由于如果很多点相等,他们肯定能 ...

  6. 表单校验demo

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. &lbrack;poj2585&rsqb;Window Pains&lowbar;拓扑排序

    Window Pains poj-2585 题目大意:给出一个4*4的方格表,由9种数字组成.其中,每一种数字只会出现在特定的位置,后出现的数字会覆盖之前在当前方格表内出现的.询问当前给出的方格表是否 ...

  8. SpringCloud&lpar;6&rpar;---熔断降级理解、Hystrix实战

    SpringCloud(6)---熔断降级理解.Hystrix实战 一.概念 1.为什么需要熔断降级 (1)需求背景 它是系统负载过高,突发流量或者网络等各种异常情况介绍,常用的解决方案. 在一个分布 ...

  9. AVL树和平衡二叉树 平衡因子 右旋转LL 左旋转RR LR RL

    前言 今天要介绍几种高级数据结构AVL树,介绍之前AVL,会先说明平衡二叉树,并将树的学习路线进行总结,并介绍维持平衡的方法:右旋转.左旋转. 一.树学习路线 1.路线总结 总结了一下树的学习路线,如 ...

  10. vue 拖拽移动(类似于iPhone虚拟home )

    vue 移动端 PC 兼容 元素 拖拽移动  效果演示 事件知识点 移动端 PC端 注释 touchstart mousedown 鼠标/手指按下事件 touchmove mousemove 鼠标/手 ...