Git使用杂记

这篇具有很好参考价值的文章主要介绍了Git使用杂记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

主要是记录一下,防止自己遗忘。

仅是在使用过程中遇到的问题做作记录和整理,所有相关操作来源于网络以及自己实测

Github 上传仓库如下,同样适用于gitee

一、【如果有需要】Git 忽略文件提交及方法

1、在Git项目中定义 .gitignore 文件
通过在项目的某个文件夹下定义 .gitignore 文件,在该文件中定义相应的忽略规则,来管理当前文件夹下的文件的Git提交行为。
.gitignore 文件是可以提交到公有仓库中,为该项目下所有开发者都共享一套定义好的忽略规则。
忽略优先级
.gitingore 文件中,每一行指定一个忽略规则,Git 检查忽略规则的时候有多个来源,它的优先级如下(由高到低):

从命令行中读取可用的忽略规则
当前目录定义的规则
父级目录定义的规则,依次递推
$GIT_DIR/info/exclude 文件中定义的规则
core.excludesfile中定义的全局规则

在 .gitignore 文件中,每一行的忽略规则的语法如下:
空格不匹配任意文件,可作为分隔符,可用反斜杠转义
# 开头的文件标识注释,可以使用反斜杠进行转义
! 开头的模式标识否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用 ! 也不会再次被包含。可以使用反斜杠进行转义

/ 结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件

/ 开始的模式匹配项目跟目录
如果一个模式不包含斜杠,则它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则相对于项目根目录

** 匹配多级目录,可在开始,中间,结束
? 通用匹配单个字符
[] 通用匹配单个字符列表

常用匹配示例:
bin/: 忽略当前路径下的bin文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件
/bin: 忽略根目录下的bin文件
/*.c: 忽略 cat.c,不忽略 build/cat.c
debug/*.obj: 忽略 debug/io.obj,不忽略 debug/common/io.obj 和 tools/debug/io.obj
**/foo: 忽略/foo, a/foo, a/b/foo等
a/**/b: 忽略a/b, a/x/b, a/x/y/b等
!/bin/run.sh: 不忽略 bin 目录下的 run.sh 文件
*.log: 忽略所有 .log 文件
config.php: 忽略当前路径的 config.php 文件

2.git init

3.git add
git add 文件名 将工作区的某个文件添加到暂存区
git add . 将当前工作区的所有文件都加入暂存区
git add -u 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件
git add -A 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件
git add -i 进入交互界面模式,按需添加文件到缓存区

4.git status   查看以下添加了追踪的文件--确认  .gitignore 生效

5.git commit -m "first commit"

6.git remote add origin https://github.com/gxpooo/ikrvWindal.git

7.推送
git push -u origin main

Gitee的话先配置好全局 用户相关信息即可。

git push -f origin main

*注意此处 是 -f  强推,github 之后出现 登入连接授权 采用 with a code 之后,点界面下方的github 链接 将设备验证码加入 即可

二、后期 push

git status
git add .
git commit -m "...."

git push
或者对齐推送
git push -u origin main

三、维护中需要用到的

1.删除某个文件的历史记录,有时你可能需要从Git历史记录中删除某个文件的所有历史记录。
git filter-branch --tree-filter 'rm -rf path/to/file' -- --all
其中path/to/file是你想要删除历史记录的文件的路径。(如果文件名有空格,则需要用双引号引起来)
此命令将复制每个提交,并在每个提交上运行给定的命令。在这种情况下,给定的命令是删除指定的文件。
请注意,这个操作可能会非常耗时,因为它需要重新写入整个Git历史。在操作之前,请确保备份所有数据并仔细阅读文档。
git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch path-to-your-remove-file' --prune-empty --tag-name-filter cat -- --all
其中, path-to-your-remove-file 就是你要删除的文件的相对路径(相对于git仓库的跟目录), 替换成你要删除的文件即可. 
注意:这里的文件或文件夹,都不能以 ‘/’ 开头,否则文件或文件夹会被认为是从 git 的安装目录开始。
如果你要删除的目标不是文件,而是文件夹,那么请在 git rm --cached' 命令后面添加 -r 命令,表示递归的删除(子)文件夹和文件夹下的文件,类似于 rm -rf` 命令。

文件夹实列如下://文件路径注意 '/' 方向
git filter-branch --force --index-filter 'git rm -rf --cached -r --ignore-unmatch rxsFixdev/.vs' --prune-empty --tag-name-filter cat -- --all
git filter-branch --force --index-filter 'git rm -rf --cached -r --ignore-unmatch build-AoiTester-Desktop_Qt_5_15_2_MSVC2019_32bit-Debug' --prune-empty --tag-name-filter cat -- --all
git filter-branch --force --index-filter 'git rm -rf --cached -r --ignore-unmatch build-AoiTester-Desktop_Qt_5_15_2_MSVC2019_32bit-Release' --prune-empty --tag-name-filter cat -- --all

git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch rxsFixdev/Debug/*.idb' --prune-empty --tag-name-filter cat -- --all

*需要注意 .gitingore 文件中的路径或文件


2. 清理和回收空间
虽然上面我们已经删除了文件, 但是我们的repo里面仍然保留了这些objects, 等待垃圾回收(GC), 所以我们要用命令彻底清除它, 并收回空间.

下面将这个文件还在你的本地仓库里,还需要将它完全抹除:实测实列如下
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now


3 .推送我们修改后的repo
强制推到远端所有分支: ## 以强制覆盖的方式推送你的repo, 命令如下:
git push origin master --force
git push origin master --force --all

## 这个过程其实是重新上传我们的repo, 比较耗时, 虽然跟删掉重新建一个repo有些类似, 但是好处是保留了原有的更新记录, 所以还是有些不同的.
如果你实在不在意这些更新记录, 也可以删掉重建, 两者也差不太多, 也许后者还更直观些.

为了能从打了 tag 的版本中也删除你所指定的文件或文件夹,您可以使用这样的命令来强制推送您的 Git tags:
git push origin master --force --tags


4.也可以通过GITEE 操作 在登入Gitee 进行如下操作
【仓库设置】->【功能设置】
存储库 GC  清理
存储库 GC 用于清理悬空文件,压缩存储库对象,减少存储库磁盘占用。


git verify-pack 命令查看 pack 文件包的相关详细信息,通过文件大小进行排序,这里只列出5个最大的文件。
git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -5

git rev-list 列出该对象文件名等更多信息
git rev-list --objects --all | grep 777e8697e5dc1017ca901c8cf226d707b6e96b06
===》得到命令输出:777e8697e5dc1017ca901c8cf226d707b6e96b06 go.sum

删除对应文件即可
git filter-branch --index-filter 'git rm --cached --ignore-unmatch go.sum' -- --all

历史记录中已经没有该文件了。不过运行 filter-branch 产生的日志还是会对该文件有引用,所以还需要运行以下几条命令,把该文件的引用完全删除:
rm -Rf .git/refs/original
rm -Rf .git/logs/
git gc
git prune

强制 push
git push --force文章来源地址https://www.toymoban.com/news/detail-758871.html

到了这里,关于Git使用杂记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【git】git使用手册

    目录 一 初始化 1.1 账号配置 1.2 ssh生成 1.2.1 配置ssh 1.2.2 测试SSH 1.3 初始化本地仓库并关联远程仓库 二 使用 2.1 上传 2.2 拉取 三 问题 3.1 关联失败 git的安装很简单,下载后大部分进行下一步完成即可-----地址: git工具下载 设置用户名和邮箱 虽然不设置也是可以的,但这会影响历

    2024年04月14日
    浏览(74)
  • Git教程——git使用

    目录 初始化 添加文件 提交文件 修改文件 版本控制 查看版本 切换版本 撤销修改 删除文件 手动删除 rm命令删除 GIT是目前最先进的分布式版本控制系统。这篇文章我们来学习Git教程——git使用。 我们主要通过git初始化、增删改查、提交文件到仓库、版本库控制等操作来学习

    2023年04月15日
    浏览(16)
  • 【Git】Git 原理和使用

    我们在 Linux 常用工具中学会了 git 的简单使用,下面我们进一步学习使用 git. 版本控制器:为了能够更⽅便我们管理一些不同版本的⽂件,便有了版本控制器。 所谓的版本控制器,就是能让你了解到⼀个⽂件的历史,以及它的发展过程的系统。通俗的讲就是⼀个可以记录⼯程

    2024年02月08日
    浏览(26)
  • 【Git】Git使用操作规约

    Commit Message:type(scope[optional]): subject feature:新功能 fix:修补 bug docs:文档 style:格式(不影响代码运行的变动) refactor:重构(即不是新增功能,也不是修改 bug 的代码变动) test:增加测试 chore:构建过程或辅助工具的变动 optimize:优化 scope 用于说明 commit 影响的范围,比

    2023年04月25日
    浏览(32)
  • 【git 使用】超级好用的 git reset 和 git revert 功能对比和使用方法

    首先你要知道 git 区分暂存区和工作区,如果你用过 sourcetree 你就会知道 git reset 命令用于将当前分支的 HEAD 指针移动到指定的提交,并且可以选择性地修改工作区和暂存区的状态。 git reset 命令有几种常用的用法,主要包括: git reset --soft commit-id:  被 reset 的提交会放到暂存

    2024年02月20日
    浏览(45)
  • Git系列文章目录 - Git 子模块git submodule使用

    项目中有时会遇到会涉及子模块的使用,比如 flatpak 项目包含多个子模块。 进入需要添加子模块的目录,一般是项目根目录。 删除子模块目录及源码: 删除项目目录下.gitmodules文件中子模块相关条目: 删除配置项中子模块相关条目: 删除模块下的子模块目录: 清除子模块

    2024年01月20日
    浏览(63)
  • 【git 使用】git pull 和 git fetch 的区别

    恕我直言,我一直都用 git pull 从来没有用过 git fetch git fetch , git pull 都可以 用于获取远程仓库的内容,但它们有不同的作用和用法。 git fetch 用途 : git fetch 用于从远程仓库获取最新的提交,但不会自动合并或更新本地分支。 操作方式 :它会将远程仓库中的提交下载到本地

    2024年02月22日
    浏览(54)
  • git简介;git命令及使用

            SVN:集中式版本控制系统,版本库都集中放在中央服务器         Git:分布式版本控制器         上传流程:         工作区(自己电脑上项目所在的目录)==》暂存区(通常放在当前项目 .git目录下)==》本地仓库(本地版本库)==》远程仓库(远程端版

    2024年02月04日
    浏览(37)
  • Git的使用以及在IDEA2022中使用Git

    目录 前言 一、Git下载与安装 二、Git常用命令 1.全局设置 2.获取Git仓库-在本地初始化Git仓库 3.获取Git 仓库-从远程仓库克隆 4.Git工作区、暂存区、版本库 概念以及工作区中文件状态 (1)工作区、暂存区、版本库 (2) Git工作区中文件的状态 5.本地仓库操作 6.远程仓库操作

    2024年02月09日
    浏览(30)
  • 【Git 教程】Git 进阶使用方法

    git stash 命令用于临时保存和恢复未完成的工作。 保存当前工作状态: 最新的建议写法: 这会创建一个新的 stash,你可以提供一个消息来进行描述。 查看所有保存的 stash: 恢复最近的 stash: 这会将最近的 stash 应用到当前分支,并从 stash 列表中删除它。 恢复指定的 stash:

    2024年02月21日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包