廖雪峰git教程
git – Linus在2周内用c写的

1.1 基本概念

  • 版本控制系统,追踪文本文件的改动,文件、视频等二进制文件则不可追踪(微软的word也是二进制文件)
  • HEAD 指向当前分支,表示当前版本(最新的提交)
  • HEAD^ 上一版本
  • HEAD^^ 上上版本
  • HEAD~100 往上100个版本
  • 创建Git版本库时,Git自动为我们创建了唯一一个master分支
  • 只要没有git add,那么修改的内容就不会被放入暂存区,就不会被提交
  • 远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库

1.2 常用指令

mkdir learngit
pwd  -- 用于显示当前目录
ls -ah -- 可查询隐藏的文件夹,如.git
cat -- 读取文件的内容
rm test.txt -- 删除文件
git init -- 将某个目录变成Git可以管理的仓库
git add -- 告诉git,把文件添加到仓库(暂存区)git add . -- 将工作区中所有未跟踪或者修改的文件添加到暂存区
git commit -m ""   -- 把文件提交到仓库(master分支)
git log -- 告诉我们修改的历史记录(由近到远)
/ 或者只显示一行 git log --pretty=oneline
git reset --hard HEAD^   -- 回退到上一版本
git reset --hard 1094a -- 回退到某一版本(需要知道commit id,并输入前几位)
git reflog -- 即使关闭了git bash之后,依然能记录之前每个步骤
git status -- 查询工作区的状态(是否有新增文件,文件是否有修改,比如切回dev分支时,可以先查询工作区的状态)
git diff HEAD -- readme.txt -- 查看工作区和版本库里面最新版本的readme文件的区别
git rm test.txt -- 你在工作区删除了test,git status检测到了,在确认要删除后,使用git rm+git commit
git checkout -- test.txt -- 刚刚在工作区误删了test,但是暂存区还有,还原回来
git remote add origin -- 在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作
git remote -- 查看远程仓库信息
git remote -v -- 显示更详细信息
git push -u origin master -- 实际上是把本地当前分支master推送到远程(第一次推送加 -u)
git push origin master -- 之后再有提交,推送无需加-u
git clone + git仓库地址(https或ssh,ssh协议速度最快)
git checkout -b dev -- 创建dev分支(-b 表示branch?创建并切换)
git branch -- 查看当前分支(当前分支前面会标一个*号)
git checkout master -- 先切回master分支,再合并
git merge dev -- 把合并指定分支(dev)到当前分支(master)
git merge --no-ff -m "不使用Fast forward模式合并" dev -- Fast forward模式下,删除分支后,会丢掉分支信息
git branch -d dev -- 合并完成后,就可以放心地删除dev分支了
git switch -c dev -- git的新命令,创建并切换到新的dev分支
git switch master
git log --graph -- 可以看到分支合并图
vim 文件名 -- 当不同分支合并产生冲突时,可以查看文件
git log --graph --pretty=oneline --abbrev-commit -- 查看分支合并情况
git stash -- 把当前工作现场“储藏”起来,等以后恢复现场后继续工作(场景:当前dev分支还没开发完,不能进行提交,但有临时紧急任务,需要新建分支来修复bug)
git stash apply + git stash drop -- 恢复工作区,或者:
git stash pop (恢复的同时把stash内容也删了)
git stash list -- 查看被暂存的工作现场
git stash apply stash@{0} -- 恢复stash@{0}暂存
git cherry-pick 4c805e2 -- 能复制一个特定的提交(4c805e2,修复bug的提价)到当前分支(比如在master分支上修复了bug,但是dev分支上也有这个bug,通过复制的方式解决dev上的bug)
git branch -D feature -- 丢弃一个没有被合并过的分支,加-D强行删除
git tag v1.0 -- 打标签(默认标签是打在最新提交的commit上的)
git tag v0.9 f52c633 -- 在历史提交的特定commit id上打标签
git tag -a v0.1 -m "version 0.1 发布" 1094adb -- 添加备注
git tag -d v0.1 -- 删除标签
git tag -d v0.9 + git push origin :refs/tags/v0.9 -- 删除已推送到远程的标签
git push origin v1.0 -- 推送标签到远程
git push origin --tags -- 一次性推送全部尚未推送到远程的本地标签
git tag -- 查看所有标签
git show v0.9 -- 查看某标签的详细信息



写了不该写的,但是还没git add,使用git checkout -- readme.txt可以撤销工作区的修改;
写了不该写的,还git add了,使用git reset HEAD readme.txt可以撤销暂存区的修改

命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。

1.3 创建合并分支过程图





分支合并冲突


手动修改冲突后,不需要merge了

1.4 多人协作

多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin < branch-name>推送自己branch-name分支的修改;
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并
  3. 如果合并有冲突,则解决冲突,并在本地提交(即使没有冲突,后push的同学不得不先pull,在本地合并,然后才能push成功);
  4. 没有冲突或者解决掉冲突后,再用git push origin < branch-name>推送就能成功!

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to=origin/dev dev(指定本地dev分支与远程origin/dev分支的链接)

1.5 记录一个在学习git的过程中,遇到的问题

  1. 学习时,使用了以前创建的ying文件夹,这个文件夹其实和以前github上的ying仓库关联了(但是我忘了这件事)

  2. 当我在推送ying工作区的内容到learngit2020时,出现以下错误。因为此时,我的本地ying和远程仓库的内容已经不一致了

  3. 先使用git pull --rebase origin master 取回远程主机某个分支的更新,再与本地的指定分支合并 (变基:把分叉的提交历史“整理”成一条直线,看上去更直观)
    看看此时的工作区,多出了Users文件夹:

  4. 再执行git push -u origin master

    看看远程仓库ying的变化,最新的已经更新上去了

    ** 注意:这里并没有实现推送到新的远程仓库learngit2020

  5. 本地库ying关联到远程库ying后,再关联到另一个远程库learngit2020

git remote set-url origin git@github.com:StephanieHuang0801/learngit2020.git
git push origin master:master


现在看看远程库learngit2020

廖雪峰git教程学习相关推荐

  1. 廖雪峰Git教程学习笔记

    廖雪峰git简单教程学习笔记 教程地址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b ...

  2. 《廖雪峰Git教程》学习记录

    <廖雪峰Git教程>学习记录 作者:婷婷 摘要:这段时间学习了廖雪峰老师的Git教程,廖老师已经写得非常易懂了,本人在此处记录了学习到的在windows环境下Git的基本用法,写此博客,便 ...

  3. [廖雪峰Git教程]知识点整理

    Git 删除本地分支和远程分支 git branch -d test-2020 #删除本地分支 git push origin --delete test-2020 #删除远程分支git branch ...

  4. Python 3 学习(一)—— 基础:廖雪峰 Python 教程学习笔记

    文章目录 Python教程 值类型和引用类型 列表和字典的基本操作 列表 元组 字典 Set 函数 内置函数 定义函数 空函数 参数检查 定义默认参数要牢记一点:默认参数必须指向不变对象! Pytho ...

  5. 《廖雪峰 . Git 教程》学习总结

    基本上,Git就是以下面的命令顺序学习的.文中笔记是从廖雪峰老师的 Git教程 中总结出来的,方面查阅命令. 1.基础 git config --global user.name "Your ...

  6. 廖雪峰Git教程笔记与总结 -- Git简介、常用命令、分支管理

    本文主要用于记录阅读Git教程 - 廖雪峰的官方网站后的一些心得笔记,并且对git一些常用命令做一个整理总结. 本文要点分为:1.Git简介:2.Git常用命令:3.Git分支管理. 一.Git简介 ...

  7. 廖雪峰python教程学习:装饰器@小结

    装饰器@小结 廖雪峰老师的python教程 在代码运行期间动态增加功能的方式,称为装饰器 本质上,装饰器是一个可以返回函数的高阶函数 最基本的可以定义如下: def log(func):@functo ...

  8. 廖雪峰Git教程读书笔记

    因为多人协作导致的不确定因素太多,git需要处理各种各样的情况,除了在多人协作开发过程中用到的常用git命令之外,其它一些不常见的命令的原理和命令都能够在廖老师的教程中给予解答,光通过度娘看解决方法是 ...

  9. 廖雪峰python教程学习:类、实例与数据封装小结

    类.实例与数据封装小结 廖雪峰老师的python教程 1.类与实例 面向对象最重要的内容就是类(class),类是抽象的模板,后面紧接着是类名,紧接着是(object),表示其是从哪个类上继承上来的, ...

  10. 廖雪峰git教程阅读之一

    Git的诞生 很多人都知道, Linus在1991年创建了开源的Linux, 从此, Linux系统不断发展, 已经成为最大的服务器系统软件了. Linus虽然创建了Linux, 但Linux的壮大是 ...

最新文章

  1. 区块链如何应用于保险行业
  2. 试题 历届试题 幸运数(二分)
  3. Java官方相关资源文件的获取教程
  4. 最短路模板:dij,spfa与floyd
  5. ClickHouse内核分析-MergeTree的存储结构和查询加速
  6. 九、华为鸿蒙HarmonyOS应用开发之Java UI框架、常用Image组件使用
  7. 三星官方回应“7nm EUV良率”:内容与事实完全不符
  8. composer的使用
  9. SWF反编译软件Action Script Viewer ASV2011/08发布(AS3反编译引擎最重大升级)
  10. S1:动态方法调用:call apply
  11. 纠结mac和pc怎么选,可以看看这个
  12. 基于Android的数据采集系统,一种基于Android的新型用户数据采集发送系统
  13. mysql pxc gcache_MySQL高可用之PXC
  14. 【苹果鼠标滑轮失灵】解决办法
  15. SM74HC595D电路级联教程
  16. 动态规划 - 走楼梯
  17. Golang开发的CMS内容发布系统
  18. 区块链与金融IT“联姻”的思路和方案
  19. Springer 参考文献显示?
  20. 云计算 | 截止2022年现行云计算相关国家标准汇总

热门文章

  1. qtouch跨平台组态软件
  2. 我与希赛PMP的不解之缘
  3. ELF格式文件符号表全解析及readelf命令使用方法
  4. 华为NP课程笔记19-镜像技术
  5. NP实验-1 华为MSTP+VRRP练习题
  6. gnss rtcm rtklib Ntrip...
  7. 数学:深入浅出通信原理(陈爱军)
  8. 方便快速地创建新浪微博表情选择对话框——jQuery Sina Emotion
  9. wap绿色传奇搭建(纯净版)
  10. Android模拟地图gps定位