Git自学

Linux

git # 查看是否安装git
sudo apt-get install git # Ubuntu/Debian自动安装Git

Windows

配置用户信息

git config --global user.name "NAME"
git config --global user.email "EMAIL@SERVICE.COM"

Windows系统, 避免使用中文路径

选择一个文件夹, 右键 Git Bush

Git本地库初始化

git init // 初始化本地库

指令目录作为Git仓库

git init

利用知乎提供的方法可以把git自带的vim换成每次都新建一个页面的vsc. 链接在标题可以直接点击

添加文件

将文件添加至仓库

git add

将文件提交至仓库

git commit -m ""

报错:fatal: not a git repository (or any of the parent directories)
解决:需要先初始化 git init

查看工作区当前状态

git status

查看文件内容不同

git diff
git diff HEAD    // 工作区和上一版文件的差异
git diff -staged // 暂存区和上一版文件的差异

查看文件内容

cat

版本回退

查看Git日志

git log                       // 完整日志
git log -               // 限制log显示数量
git log --pretty=oneline      // 输出单行日志
git reflog                    // 记录命令

git log --follow  // 列出文件的历史提交记录

回退版本: git log
回新版本: git reflog

回退版本

git reset --hard HEAD^ // 回退一个版本
git reset --hard commit_id // 返回到指定版本号 可用于回到当前版本

^代表回退一个版本, ^^表示回退两个版本; HEAD~100回退100个版本

撤销提交

git reset

工作区和暂存区

工作区

电脑中能看见的文件目录, 即当前编辑的版本

版本库

工作区的隐藏目录 .git, 作为Git的版本库. 版本库中有:

  • 称为stage/index 的 暂存区
  • Git 自动创建 master 主分支
  • 指向 master 的 HEAD 指针

Git提交流程
git add 将文件存入暂存区
git commit 将暂存区内容提交到当前分支的版本库

Git管理的修改

如果不将内容 add 缓存库, 就无法 commit 提交代码至版本库

每次git库更改都需要, 先 add 到缓存库, 再 commit 提交代码. 然后 push 到远程库

撤销修改

撤销修改内容

git checkout --

返回最近一次 add 或 commit 提交时的状态

撤回缓存区代码 已经git add 还没git commit

git reset HEAD   // 将缓存区的修改撤销
git checkout --  // 删除工作区的修改记录

删除文件

文件从版本库中删除

git rm  // 删除文件命令 或直接文件夹删除
git rm --cached  // 保留本地文件

git status // 查看当前文件, 可看删了多少文件
git commit -m ""

移动或重命名工作区文件

git mv

更名后要提交

恢复删除文件

git checkout --

如果文件没有被提交至版本库则无法恢复

且只能恢复最新版本的文件, 会丢失最近一次提交修改的内容

GitHub 允许多个 Key, 可以使用不同电脑提交代码

直接打开ssh文件夹

open ~/.ssh

添加远程库

远程库名字默认 origin

git remote add origin  // Git仓库和远程仓库连接
git push -u origin  // 第一次推送
git push origin  // 之后的推送

SSH警告
第一次链接需要确认是否真的来自GitHub. 需要手动输入 yse

删除远程库

git remote rm

此处删除只是解除本地库和远程库的链接, 如果真的需要删除则需要登录GitHub手动删除

修改仓库名

git remote rename

远程库克隆

git clone

克隆仓库到指定地址

git clone

分支合并

git branch // 查看分支
git branch  // 创建分支

git checkout  // 切换分支
git switch  // 切换分支

git checkout -b  // 创建并切换分支
git switch -c  // 创建并切换分支

git merge  // 合并分支

git branch -d  // 删除分支

git log --graph // 分支合并图

-b 创建并切换

解决冲突

手动合并

git merge
git add
git commit -m "<>"

此时 commit 不需要输入文件名

分支管理策略

Git 采用 fast forward 模式 删除分支会丢失分支信息

强制禁止 fast forward 模式, Git 在 merge 就会生成一个新的 commit, 这样从历史就可以看出分支信息

git merge --no-ff -m ""

此时创建一个新的commit, 所以需要 commit 信息

合并后 git log 可以查看分支历史

Bug 分支

将当前分支的内容保存, 去处理其他分支的内容

git stash

保存当前分支内容, 切换到其他分支处理Bug

查看 stash 保存的内容

git stash list

恢复 stash 内容

git stash apply // 恢复, 但是不会删除 stash 内容
git stash drop  // 手动删除 stash 内容
git stash pop // 恢复的同时删除 stash 内容

在多个分支修复相同Bug

git cherry-pick

将其他分支修复的bug “复制” 到当前分支

Feature 分支

需要强行删除不需要的分支

git branch -D

开发新功能最好新建一个分支
如果要丢弃一个没有被合并过的分支, 通过 -D 强行删除

多人协作

查看远程库

git remote // 查看远程库信息
git remote -v // 显示更详细的信息

推送分支

git push origin

抓取分支, 只能抓取master主分支

git clone

抓取除了主分支之外的分支

git checkout -b  origin/

提交冲突

git pull // 提交冲突 no tracking information 没有指定本地库还是远程库分支
git branch --set-upstream-to=origin/<> <> // 指定分支
git pull // 提交成功, 合并有冲突 手动提交代码

1.试着 git push origin <> 推送
2.推送失败 git pull 合并
3.合并冲突 解决冲突 在本地合并
4.没有/解决冲突 git push origin <> 推送

提示 no tracking information
git branch –set-upstream-to

Rebase

Git 提交历史压缩成一条线 便于查看 美观

git rebase // 将分叉的提交历史 改成 一条线
git log // 查看提交分支

rebase操作可以把本地未push的分叉提交历史整理成直线
rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比
会更改本地分叉提交历史

只对尚未推送或分享给别人的本地修改执行变基操作清理历史,从不对已推送至别处的提交执行变基操作。 因为rebase会改变提交历史记录,这会影响到别人使用这一远程仓库

打标签

git tag  // 先切换到需要标签的分支

给历史提交添加标签

git tag

查看标签

git tag // 字母排序
git show  // 查看标签信息

带有说明的标签

git tag -a  -m ""
git show  // 查看说明文字

标签 和 commit 挂钩 如果这个 commit 出现在多个分支, 则每个有这个 commit 的分支都可以看到这个标签

删除标签

git tag -d

推送标签至远程库

git push origin  // 推送单个标签
git push origin --tags // 推送所有未推送的标签

删除远程库标签

git tag -d  // 先删除本地标签
git push origin :refs/tags/ // 删除一个远程标签

Git 显示颜色

git config --global color.ui true
git config --global color.ui auto

忽略特殊文件

忽略文件的原则是:

Git 工作区根目录 创建 .gitignore 文件

#
文件名.后缀  // 排除
!文件名.后缀 // 不排除

强制添加Git

git add -f

检查ignore规则

git check-ignore -v

.gitignore 可以放入版本库, 并对 gitignore做版本控制

显示此项目所有忽略文件

git ls-files --other --igonred --exclude-standard

配置别名

git config --global alias.

配置文件
仓库配置文件 .git/config
Git配置文件 用户主目录 .gitconfig

[alias] 后面是别名

–global 针对当前用户 不加只针对当前仓库

Original: https://www.cnblogs.com/turbospace/p/16690906.html
Author: 鲲特牌
Title: Git自学

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/599063/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 简单日期格式化的使用

    简单日期格式化的应用 简单日期格式化的使用 面试题: &#x6709;&#x4E00;&#x4E2A;&#x65F6;&#x95F4; 20…

    数据库 2023年6月16日
    078
  • DRF补充数据库异常和Redis异常

    DRF补充数据库异常和Redis异常 (1)在项目适当位置新建exceptions.py,内容如下: from rest_framework.views import except…

    数据库 2023年6月14日
    069
  • 使用clipboard.js复制文字+图片到微信后图片不显示问题处理

    使用clipboard.js复制文字 +图片,粘贴到微信不显示图片,而QQ可以。 解决方案: 图片链接使用http,不要使用https。 使用clipboard.js实现复制功能 …

    数据库 2023年6月14日
    0119
  • 文件传输工具:FileZilla的使用

    FileZilla FileZilla 是一款高效的 FTP 客户端工具。FileZilla 可以帮助您将本地计算机上的文件上传到虚拟主机实例中。 FileZilla 界面介绍 如…

    数据库 2023年6月11日
    098
  • 条件控制

    1. 顺序结构 java代码顺序执行 2. 选择结构 if语句 格式 if(结果为booblean类型的表达式){ 语句体; } if(结果为booblean类型的表达式){ 语句…

    数据库 2023年6月14日
    066
  • [MySQL]MySQL8.0的一些注意事项以及解决方案

    1. MySQL8.0 修改大小写敏感配置 天坑MySQL8.0! 在安装后, 便无法通过修改配置文件,重启服务,或者执行sql来更改数据库配置, 要想配置的话, 必须在MySQL…

    数据库 2023年5月24日
    083
  • Rabbitmq从安装到简单入门

    1:Rabbitmq是什么? RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。 它由以高性能、健壮以及可伸缩性出名的 Erlang …

    数据库 2023年6月6日
    092
  • 测试计划

    ​ 1.测试计划的定义:描述需要完成的所有工作,包括被测项目的目的、背景、范围、资源、进度、环境、任务、策略,以及相应的风险和措施。 ​ 2.测试计划的作用: 对后面的测试过程起到…

    数据库 2023年6月16日
    083
  • 21粤比武

    先进行密码绕过,在这个界面迅速按下方向键,然后按下e进入编辑模式 找到linux16这一行,将lang编码后面的全部删掉,加上 <span class=”ne-text”&g…

    数据库 2023年6月11日
    0106
  • 《MySQL自传》

    撰写本文查阅了大量参考资料,也得到很多朋友的指点帮助,特别感谢: Jimmy Yang——阿里云数据库研究员,原Oracle InnoDB Architect. 彭立勋——华为云数…

    数据库 2023年6月11日
    097
  • 垃圾回收算法的原理及应用

    概述 有java开发经历的小伙伴必然对 &#x5783;&#x573E;&#x56DE;&#x6536;不陌生。垃圾回收简单来说就是一种自动的内存管…

    数据库 2023年6月11日
    0113
  • c++ map查找键值

    map用法 查找键是否存在 1、count函数 count函数用于统计key值在map中出现的次数,map的key不允许重复,因此如果key存在返回1,不存在返回0 if (mp….

    数据库 2023年6月6日
    0264
  • webclient设置代理

    https://qa.1r1g.com/sf/ask/4102971771/ 本文来自博客园,作者:ukyo–BlackJesus,转载请注明原文链接:https://…

    数据库 2023年6月11日
    077
  • Linux–>vi和vim编辑器的基本操作

    vim编辑器介绍 vi或者vim就是对linux下的文本进行编辑的一种编辑器比如说a.cpp文件这种 Linux会内置vi文本编辑器 Vim可以简单的认为vi的增强版 Linux是…

    数据库 2023年6月14日
    093
  • PHP获取前一天,前一个月,前半年,前一年的时间戳

    // 获取前一秒 strtotime("-1 seconds"); // 获取前一分钟 strtotime("-1 minute"); //…

    数据库 2023年6月14日
    0140
  • 加班整理出来的MySQL数据库基本操作送给大家,非常详细!

    哈喽兄弟们,中秋闲着没事,整理了一些数据库的基本操作,分享给大家,希望对大家有所帮助~ ; 一、SQL语句 (mysql 数据库中的语言) show databases;查看数据库…

    数据库 2023年6月14日
    0113
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球