Git教程学习笔记及VScode中Git使用

2023-05-16

文章目录

    • 前言
    • 1.配置git
    • 2.创建版本库
    • 3.版本回退
    • 4.工作区和暂存区
    • 5.添加远程仓库
    • 6.分支管理
        • 处理bug分支
        • 多人协作
    • 7.标签管理
    • 8.自定义git
    • 9.VScode中的Git使用

前言

欢迎通过我的个人博客看本篇文章https://sunmengxin.cn/Git-tutorial/
  一直想学git,奈何初学时相关的新名词太多,一直没理解太深,刚好最近有时间把廖雪峰的git教程看了一遍,峰哥的教程写的很通俗易懂有条理就不说了。但细数起来,git的命令还是有点多的,就在学的同时记了些笔记分享一下。
  对于新手,非常建议学习git之前,先把GitHub玩一遍,这里也推荐一个GitHub学习相关的网站,写的也很通俗易懂——Git北京。

1.配置git

$ git config --global user.name "Your Name"  配置git全局用户名
$ git config --global user.email "email@example.com"  配置git全局邮箱
$ git config --global credential.helper store  保存登录密码

2.创建版本库

$ mkdir learngit
$ cd learngit
$ pwd
$ git init
$ git add readme.txt
$ git add readme.txt

3.版本回退

$ git status
$ git diff readme.txt

$ git log (--pretty=oneline)
$ git reset --hard HEAD^
$ git reflog 记录git的每次命令

4.工作区和暂存区

Git管理的文件分为:工作区,版本库;版本库又分为暂存区stage和暂存区分支master(仓库)

工作区>>>>暂存区>>>>仓库
git add把文件从工作区>>>>暂存区;
git commit把文件从暂存区>>>>仓库,
git diff查看工作区和暂存区差异,
git diff HEAD -- filename 查看暂存区和仓库差异,
git diff HEAD 查看工作区和仓库的差异,
git checkout类似git add反向命令,指对工作区的操作
git reset HEAD类似git commit反向命令,指对缓存区的操作

$ git diff HEAD -- readme.txt 
$ git reset HEAD readme.txt  缓存区的修改撤销放回工作区
$ git checkout -- readme.txt  丢弃工作区的修改

5.添加远程仓库

$ ssh-keygen -t rsa -C "youremail@example.com"
$ git remote add origin git@github.com:michaelliao/learngit.git
$ git push -u origin master  加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来
$ git push origin master

$ git clone git@github.com:michaelliao/gitskills.git

6.分支管理

$ git checkout -b dev
$ git branch dev  创建分支
$ git checkout dev
$ git branch 查看当前分支

$ git checkout master
$ git merge dev
$ git branch -d dev 删除
& git branch -D <name>强行删除。
$ git branch
$ git switch -c dev
$ git switch master
$ git merge --abort  有冲突时放弃merge

$ git log --graph --pretty=oneline --abbrev-commit   按行显示 缩写

强制禁用fast forward,防止删除分支后丢掉分支部分
$ git merge --no-ff -m "merge with no-ff" dev

处理bug分支

	$ git stash  压入存储区
	$ git stash list 查看存储区
	$ git stash apply && $ git stash drop 恢复删除临时区
	$ git stash pop  同上
	$ git cherry-pick 4c805e2  将master的修改操作复制到当前分支
	
	$ git stash apply stash@{0}

多人协作

	$ git remote 查看远程仓库名称
	$ git remote -v  查看远程仓库信息
	$ git push origin master  推送master分支
	$ git push origin dev  推送dev分支
	
	$ git clone git@github.com:michaelliao/learngit.git  抓取分支
	$ git checkout -b dev origin/dev  创建远程origin的dev分支到本低
	$ git pull 把最新的提交从origin/dev抓下来
	$ git branch --set-upstream-to=origin/dev dev  设置dev和origin/dev的链接:
	$ git commit -m "fix env conflict"
	$ git push origin dev
	
	$ git rebase  原本分叉的提交现在变成一条直线

7.标签管理

$ git tag v1.0  给当前版本打标签
$ git tag 显示已有标签
$ git log --pretty=oneline --abbrev-commit
$ git tag v0.9 f52c633 对历史节点打标签
$ git show v0.9 显示版本信息
$ git tag -a v0.1 -m "version 0.1 released" 1094adb  带说明的标签
$ git tag -d v0.1 删除标签
$ git push origin v1.0  推送某个标签到远程
$ git push origin --tags  一次性推送全部尚未推送到远程的本地标签
$ git tag -d v0.9 >> $ git push origin :refs/tags/v0.9  删除远程标签  $ git push origin --delete  tagname

8.自定义git

$ git config --global color.ui true   Git显示颜色
忽略文件 .gitignore 文件 https://github.com/github/gitignore

$ git add -f App.class 强制添加
$ git check-ignore -v App.class

$ git config --global alias.st status
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
$ git config --global alias.last 'log -1'  用git last就能显示最近一次的提交
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
每个仓库的Git配置文件都放在.git/config文件中

9.VScode中的Git使用

  VScode的安装这里就不多说了,打开VScode:文件->首选项->设置,然后点击图中红圈里的按钮:
在这里插入图片描述
  在设置里添加以下两句,其中第一句添加git安装位置(确保安装git时勾选添加到系统变量),第二局将VScode中的终端换成默认Git Bash

"git.path": "C:\\Program Files\\Git\\cmd\\git.exe",
"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",

然后用VScode打开练习Git的文件夹,Ctrl+~打开终端输入git status

$ git status 
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   "git\346\200\273\347\273\223.txt"

no changes added to commit (use "git add" and/or "git commit -a")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git教程学习笔记及VScode中Git使用 的相关文章

  • 来自 eclipse 的部分 git 提交 (egit)

    假设我有一个有 2 个更改的文件 如何使用 egit 只提交其中之一 命令行版本可以在以下位置找到this https stackoverflow com questions 1085162 commit only part of a fi
  • git for-each-ref - 按年龄过滤结果

    我正在使用以下命令here https stackoverflow com a 39251131 5812876 git for each ref format color cyan authordate format m d Y I M
  • Git守护进程克隆错误

    All 我正在按照以下指示进行操作this SO https stackoverflow com a 377293 724357答案 快速提供回购 当我跑步时git clone git ipAddr git project我得到这个输出 r
  • 使用 Subversion 进行部分提交

    鉴于我做的案例两个独立的变化 in one文件 例如 添加了一个新方法并更改了另一个方法 我经常不想提交这两项更改 因为one提交 但作为two独立承诺 在 git 存储库上我会使用互动模式 of git 添加 1 http linux d
  • 为什么在 Eclipse 中对 Egit 管理的项目禁用合并工具?

    根据Egit 用户指南 http wiki eclipse org EGit User Guide Using Merge Tool 要使用合并工具 应右键单击存在合并冲突的资源 然后选择Team gt 合并工具 但是 当我执行此操作时 合
  • Git 中的合并冲突是由什么构成的?

    git 如何确定特定合并存在冲突以及冲突是什么 我的猜测是这样的 如果正在合并的两个提交有一个共同的父提交 并且如果它们都更改了父提交的 X 行 那就是冲突 让我的理解变得复杂的是 更改 X 行 可能意味着用几行新行替换它 但这仍然显示为一
  • 返回到存储库中的特定修订后提交并推送更改?

    我们需要及时返回到某个特定的提交 一些意外的改变是为了掌握 尝试恢复它挖得太深 所以 master 的状态很糟糕 现在我们希望master回到66ada4cc61d62afc 根据git 恢复到某个提交 https stackoverflo
  • 如何通过哈希显示提交的日期和时间

    I used git reflog识别我创建特定分支时的哈希值 我得到了哈希值fe1ddcdef 我还没有将此分支推送到远程 我现在正在尝试查找日期和时间fe1ddcdef发生 git reflog只告诉我 fe1ddcdef HEAD 1
  • 无法从我的电脑上使用 traefik 后面的 gitlab 进行 git 克隆

    这是我的 gitlab 和 traefik 配置 version 3 7 services gitlab web image gitlab gitlab ce latest restart always hostname gitlab ro
  • 从 github 中删除子项目提交

    我有两个存储库A and B 我错误地在我的机器上将仓库 B 克隆到了 A 内 我从存储库 B 中删除了所有代码 但是当我在源上从 A 推送并合并代码时 它还显示了子项目提交B在 Github 仓库上 我想从我的 master 上删除子项目
  • 获取最新远程提交的 SHA1 [重复]

    这个问题在这里已经有答案了 可能的重复 git bash 如何检查是否有新的提交可用 https stackoverflow com questions 6006759 git bash how to check if theres a n
  • 如何升级 Windows 中 git svn 使用的 SVN 版本?

    我的公司正在将SVN升级到1 7 检查git svn version显示正在使用的SVN版本是1 4 6 我想获得 git svn 使用的 SVN 版本接近 1 7 但是 我没有看到有关更新 git svn 使用的 SVN 版本 在 Win
  • 是否可以在 git 存储库之外添加和提交文件?

    我们的文本文件分布在系统的各个角落 我们计划将这些文件中所做的所有修改添加到 git 存储库中 每次对这些文件进行修改都是由脚本进行的 因此 我们计划向该脚本添加新命令 以将文件添加到 git 存储库 但是 这些修改是同时进行的 我们可以为
  • 按时间顺序将多个文件夹提交到 git 中

    我有数百个网站备份 每个文件夹一个 我想将它们放入 git 存储库中 每个备份作为一个版本 这些变化主要涉及图像文件和每天 2 个数据库备份 大小约为 25 GB 并且不断增加 有没有办法告诉 git 获取其中一个文件夹并将其提交到存储库中
  • 如何将 GIT 调用的输出获取到批处理脚本中的变量中?

    我有一个 git 命令来获取当前存储库的最新 SHA 如下所示 git log pretty format H n 1 我有一个 Windows 批处理脚本 我想按如下方式使用它 SET CURRENT SHA 但我不知道如何将从 git
  • 您的分支比“origin/master”领先 3 个提交

    我在运行时收到以下信息git status Your branch is ahead of origin master by 3 commits 我读过其他一些帖子 解决这个问题的方法是运行git pull rebase但是 rebase
  • 如何禁用 GitHub 中的拉取请求?

    我试图了解如何禁用 github 中的 拉取请求 问题一 我们正在尝试使用变基工作流程 这意味着如果不是快速推进 那么使用拉取请求可能会有害 一种解决方案 为我想要禁用拉取请求的分支设置分支权限 或者将我添加为任何进入 master 的内容
  • 执行 git Push 时出现“diff.renamelimit 变量”警告

    我将本地提交推送到远程 git 服务器并收到以下警告消息 remote warning only found copies from modified paths due to too many files remote warning y
  • 如何让 Gitlab 运行程序在成功构建时将代码合并到分支中

    嗯 标题几乎是不言自明的 总之 如果构建成功 我希望将一个分支 即开发 合并到另一个分支 即生产 我尝试了 jakub kania 解决方案 但我总是得到id rsa invalid format 我认为 gitlab 秘密变量以某种方式被
  • Jenkins GIT 包含从未构建过的区域

    我正在尝试使用包含区域在 Jenkins 中构建我的工作 但每当选中此选项时 民意调查结果总是说未检测到任何更改 我尝试了许多不同的路径 以及使用工作区进行 不进行强制轮询 结果是轮询从未检测到任何更改 但一旦我删除这些选项 它们就会在下一

随机推荐

  • 12.【openCV常用函数模板】

    opency常用关键字 1 头文件的引用2 命名空间的引用3 读入文件的引用4 处理图像的数据结构5 定义窗口的引用6 自定义窗口长宽度的引用7 展示窗口的引用8 窗口展示时间的引用9 清除窗口的引用10 举列子10 1代码展示 10 2效
  • 利用novnc登录绕过WFA

    0x00 简介 前端时间看了一个新闻说是一个安全人员研究使用webVNC来钓鱼绕过MFA多因子验证 xff0c 因为现在很多环境钓鱼抓到的账号密码 xff0c 在登录时候可能会要求输入安全码或者PIN马之类的东西 xff0c 学名叫做MFA
  • 图像分割损失函数OhemCELoss

    OhemCELoss函数简介 OhemCELoss函数 xff08 Online hard example mining cross entropy loss 的缩写 xff09 分割任务中的OhemCELoss函数 xff1a 其实就是分
  • 02_FreeRTOS内核实现---任务的定义与任务切换

    一 什么是任务 在多任务系统中 xff0c 我们根据功能的不同 xff0c 把整个系统分割成多个独立且无法返回的函数 xff0c 这种函数称之为任务 二 创建任务 1 定义任务栈 在多任务系统中 xff0c 每个任务都是独立的 xff0c
  • ROS学习笔记1:Ubuntu20.04系统安装图文讲解(双系统,机械硬盘)

    系列前言 xff1a 本人BIT机械专业大三学生 xff0c 可以说是计算机小白 近年来学校以咱们 智能制造与智能车辆班 为试验班对机械专业进行探索性课改 xff0c 加入了大量控制类课程 xff08 数据结构 xff0c ROS xff0
  • ROS学习笔记3:ROS架构(了解)

    笔记3不涉及实际操作 xff0c 主要是用自己的语言和思路简略整理了 ROS机器人开发实践 一书第2章内容 第一次看这一章的内容会有不知道在讲什么的感觉 xff0c 但这一章的内容确实对后续实践操作章节的理解有非常大的帮助 一 ROS架构
  • SLAM学习笔记2:SLAM的数学表述

    1 SLAM问题 xff1a 在了解了SLAM中各个模块的组成和主要功能后 xff0c 我们将上升到理性层次 xff0c 用数学语言来描述SLAM过程 现在假设由无人车搭载传感器 对于传感器来说 xff0c 虽然它的运动是时间连续的 xff
  • ROS学习笔记10:TF坐标变换(ROS常用组件)

    前言 xff1a 机器人本体和机器人的工作环境中往往存在大量的组件元素 xff0c 在机器人设计和应用中会涉及不同组件的位置和姿态 xff0c 这就需要引入坐标系和坐标变换的概念 一 机器人中空间描述和变换 xff1a 1 位置描述 xff
  • ROS学习笔记11:launch启动文件(ROS常用组件)

    一 launch启动文件介绍 xff1a 上节的海龟跟随实验 xff0c 输入的指令比较繁杂 xff0c 很容易输错命令 对于这种多节点任务 xff0c 可以使用启动文件 启动文件是ROS中一种可以通过xml文件 xff0c 同时启动多个节
  • 学习ARM架构,系统移植和驱动开发总结

    本次结束了对ARM架构 xff0c 系统移植和驱动开发的学习 xff0c 它们都是属于底层 xff0c 难度想对都比较的难一点 xff0c 但先学习arm架构之后去学习系统移植和驱动开发 xff0c 会使自己对系统移植和驱动开发容易理解点
  • Robocup2D环境搭配以及安装(Ubuntu18.04)

    个人是看过很多安装教程并且在一次次实验成 xfeff 功后得出的成果 xff1a 首先 xff0c 在gitee网站下载安装所需的文件夹 xfeff gitee网站下载zip压缩包 其次 xff0c 进行依赖库的安装 终端输入 sudo a
  • 树莓派配置网络实现ssh登录

    上面一篇文章我实现了串口方式访问树莓派 xff0c 可以实现树莓派开发 xff0c 但每次都需要接线 xff0c 比较麻烦所以我们可以对树莓派进行配置让他可以用IP地址登录 1 配置树莓派接入网络 sudo nano etc wpa sup
  • 字符串查找函数strstr

    前言 xff1a 本章我们将学习如何用strstr函数在字符串中查找是否存在指定的字符串 strstr 功能 xff1a 在一个字符串中查找是否存在指定的字符串 xff08 定位子字符串 xff09 cplusplus介绍如下 xff1a
  • Module not found: Error: Can‘t resolve ‘querystring‘ in ‘xxxxxxxxx‘

    解决办法 request js里面 import qs from 34 querystring 34 改为import qs from 34 qs 34
  • 【C语言】初学者写基础代码的基本步骤

    一 写代码 xff08 底阿妈 xff09 步骤 xff1a 1 创建一个项目 2 创建一个源文件 什么是源文件 xff1a xxxx c c开头的叫源文件 xxxx h h开头的叫头文件 3 写代码 xff08 底阿妈 xff09 one
  • ROS新手学习路线

    希望这些信息能够帮助你学习ROS 如果你有任何其他问题 xff0c 请随时告诉我 安装ROS 首先 xff0c 你需要在你的计算机上安装ROS 请参阅官方文档中的 安装 章节 xff0c 了解如何在你的系统上安装ROS xff1a http
  • JAVA学习心得体会

    这周是考试结束第一周 xff0c 刚开始继续学习JAVA时 xff0c 短时间不学习就感觉遗忘了许多有关JAVA的知识 xff0c 所以及时的复习所学内容是真的很重要 通过学长学姐的介绍 xff0c 我发现Typora记笔记是真的很方便 x
  • Ubuntu18.04在ROS下利用realsenseD435i相机实时运行ORB-SLAM2

    1 安装realsenseD435i的SDK Librealsense 可以参照这位博主 6条消息 Ubuntu18 04 43 ROS melodic 安装使用 InterRealSenseD435i SDK2和RealSense ROS
  • opencv-python识别魔方特定颜色方块,并输出各方块中心坐标

    先叠个甲 xff08 作者寒假才开始自学opencv xff0c 做题练手 xff0c 还不是很熟练 xff0c 如果有不正确或者有更好的方法 xff0c 欢迎在评论区指出 xff09 题目 xff1a 从网上寻找任一魔方图片 xff0c
  • Git教程学习笔记及VScode中Git使用

    文章目录 前言1 配置git2 创建版本库3 版本回退4 工作区和暂存区5 添加远程仓库6 分支管理处理bug分支多人协作 7 标签管理8 自定义git9 VScode中的Git使用 前言 欢迎通过我的个人博客看本篇文章https sunm