业界动态
git-相关操作
2024-12-26 21:28

在一个仓库中引用另一个仓库

参考资料:http://www.jianshu.com/p/491609b1c426


初始化配置邮件及用户

 

检测仓库是否可以 ssh 连接

 

设置代理

参考总结: other-TortoiseGit设置ssr代理.md


设置提交模板

一般不同项目的模板不同, 所以使用 局部模板

  1. 项目内新建一个模板文件, 如 , 内容如下

     
  2. cd 到 项目根目录 下设置

     

    其实就是修改 文件, 增加模板字段

     
      
    • TortoiseGit 设置

  3. 测试提交

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w5NjlwNY-1596350269633)(http://yxbl.itengshe.com/20190810040603-1.png)]

  4. 取消模板. 把模板文件置空设置即可.


ssh config 配置

  • 利用 SSH 的用户配置文件 Config 管理 SSH 会话 - https://www.hi-linux.com/posts/14346.html

SSH 程序可以从以下途径获取配置参数

用户配置文件 (~/.ssh/config)
系统配置文件 (/etc/ssh/ssh_config)

配置文件可分为多个配置区段,每个配置区段使用"Host"来区分。我们可以在命令行中输入不同的Host来加载不同的配置段。


文件大小写敏感

 
修改已有仓库 文件夹 及 文件 大小写问题

参考: https://www.jianshu.com/p/420d38913578

  1. 用执行下列命令
 

解释:设置本地环境识别大小写

  1. 修改文件夹名称,全部改为小写(F2重命名修改即可,然后到远程仓库。
    这时如我前面的图片所示,仓库上就会有重名的文件(文件夹)了。
  2. 删除多余的文件,我这里就是把,,等给删掉。
    a). 执行命令,删除远程文件(删除文件夹里面的文件,文件夹也会消失
 

如果显示如下,说明操作成功

 

b). 同步,提交到远程仓库

 

这时,如果上面的步骤都顺利,那在远程仓库刷新一下,惊喜就出来了


git 日志 命令

 

可以用于写工具判读某个时间内 某人 是否有提交过某些文件.

比如: 使用 python 执行这个命令后把输出导出到一个文件中, 然后读取文件解析后封装到数据结构中, 再进行逻辑分析.

–date-order 日期降序排序

–reverse 翻转排序


设置不同平台下的换行符

以 windows 为准,不然 不同平台下的使用 windows 上的仓库会出现 所有文件都有差异

 
  • 参考文章: git 处理和修改行结束符(CRLF和LF

正确的姿势

在当前仓库,邮件 TortoiseGit -> Submodule Add

path 中的目的 文件夹必须是不存在的,也就是 hexo-theme-nex 文件夹是不存在的,不然汇报 : 的错


初始化带有 submodule 的工程

  1. 先 clone 出工程

     
  2. cd 进工程后再初始化 submodule

     
  3. 在分别进入所有的子模块 checkout 到 master 分支

     
  4. 然后就在工作中update所有的子模块

     
  • 正确姿势,递归 clone 所有 submodule

     

取消修改,还原到上一次提交

  • 命令

     

Github 更新 fork仓库

以 skynet 仓库为例

  1. 没有源仓库先 clone 源仓库
  2. pull 源仓库
  3. pull 自己fork的仓库 (一般这步可以省略
  4. push 到自己fork的仓库
  5. ok, done! 同步原始仓库最新的版本

clone 具体分支

  • 加个 -b 参数

     

解决git无法clone提示443问题

大概就可以猜测是被墙了…翻墙的话开全局代理也没有起作用

报错

  1. 需要配置下git代理(前提是你有shadowsocks), 1080 是ss的客户端端口
 
  1. 再 clone 就 ok
 

参考资料

  • https://zhuanlan.zhihu.com/p/22666153

git warning: refname ‘HEAD’ is ambiguous

https://segmentfault.com/q/1010000006978681

删除 HEAD 分支即可

 

命令行操作

url_name : 远端地址别名

url : 远端地址

remote_branch : 远端分支名

local_branch : 本地分支名

local_repo_name : 本地仓库名


全局配置
 

初始化仓库及推送流程
 

拉取更新推送
克隆仓库及子模块仓库
 
拉取仓库
 
推送仓库
 
  • 初始推送可以带上 -u 参数指定upstream
查看修改状态
 
revert代码
 
  • 有点小复杂:https://blog.csdn.net/leedaning/article/details/51304690
单独提交某个文件
 

地址操作
添加远端地址
 
查看远端地址
 
删除远端地址
 
修改远端地址
  1. 直接修改

     
  2. 先删后加

     

分支操作
创建本地分支
 
创建远端分支
 
切换分支
 
更新本地的远端分支列表
 
查看本地分支
  1. 查看 所有的本地分支, * 在前面的表示是 当前所在分支

     
  2. 查看 当前所在的分支

     
查看远端分支
 
同时查看本地与远端分支
 
指定分支upstream
 
删除本地分支
 
删除本地缓存的远端无用分支
 
删除远端分支

在Git v1.7.0 之后,可以使用这种语法删除远程分支

 

tag 操作

tag 可作为 时间线 中的一个 标记, 方便看出那个时间点 前后发生了什么事情.

比如发了一个版本, 打个 tag, 看日志的时候就一目了然.

创建 tag

直接可视化记录

  1. 本地创建一个新 tag : rls-ccc

  2. 查看日志, 在 tag 上右键 -> push “rls-ccc”. 远端就有这个 tag 了. 相当于这个命令

     
删除本地 tag
 
删除远端 tag
 
查看所有 tag

列出 tag 及 一行信息, tag 信息优先

 
查找符合模式的 tag
 
查看某个 tag 详情

git show [tagName]

 

模块操作
递归 初始化 所有子模块
 
递归 更新 所有子模块
 
查看子模块,仓库根目录查看记录文件
 
添加子模块
 
删除子模块
  • 操作顺序

     
      
    • submodulename 就是 .gitmodules 文件中的这个 3rd/aaa

       

回滚
查看日志
 
  • commit 字段的值就是版本的 sha1 值

  • 也可以用 命令

     
回滚本地

命令行

 

或者 gui 操作

右键某次提交 -> Reset -> 选择 Hard -> OK

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4PFZOTVI-1596350269643)(http://yxbl.itengshe.com/20200611233157-1.webp)]

回滚远端
  1. 先回滚本地到某一次提交

     
  2. 强制堆到远端

     

$ git push origin master -f // 强推到远端
Total 0 (delta 0), reused 0 (delta 0)
remote: Powered By Gitee.com
To gitee.com:yangxuan0261/z_mywiki.git
+ 0373047…0e8a7eb master -> master (forced update)
```

回退提交

只是回退提交, 保留现有的改变, 这种操作之后一般会有很多 dfif 文件

  1. reset 到目的版本
  2. revert 所有, 删除所有未追踪的文件

标签操作

首先说一下作用:Git 中的tag指向一次commit的id,通常用来给开发分支做一个标记,如标记一个版本号。

添加标签
 

注解:git tag 是打标签的命令,-a 是添加标签,其后要跟新标签号,-m 及后面的字符串是对该标签的注释。

提交标签到远程仓库
 

注解:就像git push origin master 把本地修改提交到远程仓库一样,-tags可以把本地的打的标签全部提交到远程仓库

删除标签
 

注解:-d 表示删除,后面跟要删除的tag名字

删除远程标签
 

注解:就像git push origin :branch_1 可以删除远程仓库的分支branch_1一样, 冒号前为空表示删除远程仓库的tag

查看标签
 

删除未监控文件

删除 untracked files

 

连 untracked 的目录也一起删掉

 

连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的

 

在用上述 git clean 前,强烈建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删


工具

–pretty=format
  • https://git-scm.com/docs/pretty-formats

查看所有 tag 及 sha1

有好几种中姿势, 参考: https://stackoverflow.com/questions/8796522/git-tag-list-display-commit-sha1-hashes

  • 姿势一: 最好姿势, 也最详细, 有 sha1,tag, 等

     

    简约版

     
  • 姿势二:

     

同步一个fork仓库

参考: Syncing a fork - https://help.github.com/en/articles/syncing-a-fork

自己的解决方案, 用自建的 gogs/gitea/gitlab 服务, 直接镜像 原仓库, 定时同步即可.


TortoiseGit 使用

查看提交日志 diff
  1. 选中某次提交, 可以看到 值:
  2. 双击某个文件, 弹出 diff 窗口, 右边是 选中提交 的文本值, 左边是 选中提交 的上一次提交 的文本值

查看当前文件 diff

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mUbizTmV-1596350269645)(http://yxbl.itengshe.com/20200531024800-1.webp)]

  1. 选中文件, 右键 -> git diff, 弹出 diff 窗口, 右边是 当前工作区的文本值, 左边是上一次提交的文本值.

设置大小写敏感

 

换行符 LF (unix) 和 CRLF (windows) 问题

  • git 多平台统一换行符 - https://juejin.im/post/5ad21df05188257cc20db9de

git 中有三个参数于换行符有关

: 设置工作目录中文件的换行符,有三个值 lf, crlf 和 native(默认,同操作系统

:

  • 表示检出是转换CRLF, 提交时转换为 LF
  • 表示检出是不转换,提交时转换为 LF
  • 表示不做转换

:

  • 表示不允许提交时包含不同换行符
  • 则只在有不同换行符时警告
  • 则允许提价时有不同换行符存在
设置 lf 命令
  • 配置方法

     

增加配置文件 .gitattributes
  • 什么是 .gitattributes ?- https://zhuanlan.zhihu.com/p/108266134

虽然通过设置了 git 全局参数解决了问题,但是作为团队协作的话,并不能保证所有人都正确配好了。git 提供了.gitattributes文件解决了这个问题。在项目根目录新建.gitattributes文件,添加一下内容

 

通过这种方式避免有人没有设置 core.autocrlf 参数,并且将该文件加入版本控制中。

另外根据需要 .gitattributes 文件可以在项目不同目录中创建,而一些非文本文件可以设置为二进制文件,不用考虑换行符问题。


Git的 .gitattributes 文件详解
  • https://blog.csdn.net/taiyangdao/article/details/78484623

  • .gitattributes 文件示例

     

    说明

    第1行,对任何文件,设置text=auto,表示文件的行尾自动转换。如果是文本文件,则在文件入Git库时,行尾自动转换为LF。如果已经在入Git库中的文件的行尾为CRLF,则该文件在入Git库时,不再转换为LF。

    第2行,对于txt文件,标记为文本文件,并进行行尾规范化。

    第3行,对于jpg文件,标记为非文本文件,不进行任何的行尾转换。

    第4行,对于vcproj文件,标记为文本文件,在文件入Git库时进行规范化,即行尾为LF。但是在检出到工作目录时,行尾自动转换为CRLF。

    第5行,对于sh文件,标记为文本文件,在文件入Git库时进行规范化,即行尾为LF。在检出到工作目录时,行尾也不会转换为CRLF(即保持LF)。

    第6行,对于py文件,只针对工作目录中的文件,行尾为LF。


转换 CRLF 为 LF

使用 git 自带工具 即可

  • dos2unix命令将dos文件转换为unix格式 - https://blog.csdn.net/leedaning/article/details/53024290

使用

  • 语法

     
  • 选项

    1. -k:保持输出文件的日期不变
    2. -q:安静模式,不提示任何警告信息
    3. -V:查看版本
    4. -c:转换模式,模式有:ASCII, 7bit, ISO, Mac, 默认是:ASCII
    5. -o:写入到源文件
    6. -n:写入到新文件
  • 示例

     

奇技淫巧

忽略文件夹下 除某些文件外 的所有文件

, 如: 忽略 patch 目录下所有文件, 但 a_packarg_ 开头的文件除外, 顺序一定要对, 先忽略哪些, 再取消忽略哪些

 

GitHub PAT 使用

GitHub 即将抛弃 https 拉取仓库时使用 账号,密码 的方式, 而是采用 账号,token 的方式. 参考 文档 获取 token.

 

GitHub GPG 使用

参考: https://help.github.com/en/github/authenticating-to-github/generating-a-new-gpg-key#generating-a-gpg-key

  1. 下载 gpg 命令行工具. https://www.gnupg.org/download/

  2. 生成 gpg, 命令: , 期间会要求设置密码 passphrase, 查看秘钥是需要用到

     
  3. 查看 GPG key ID, 命令:

     
  4. 使用 GPG key ID 导出 公钥/秘钥

     

git 启用 gpg

 
  • 查看 signingkey

     

奇葩问题集合

Q: 报错 :Please make sure you have the correct access rights and the repository
  1. 设置为 git 的 ssh.exe, 路径:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zcRiT15t-1596350269646)(http://yxbl.itengshe.com/20191220154654-1.png)]

Q: 本地一直在 提交怎么破

此时千万不要直接切到其他分支, 用当前分支 为基础创建一个新分支 aaa, 然后推送远端, 然后本地切到 分支, 拉去远端的分支, 也可以把 aaa 分支 merge 过来.

远端文件夹大小写修改
  • https://blog.csdn.net/u013707249/article/details/79135639
  1. 设置大小写敏感 并 清除缓存

     
  2.     以上就是本篇文章【git-相关操作】的全部内容了,欢迎阅览 ! 文章地址:https://sicmodule.kub2b.com/news/10479.html
         栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 https://sicmodule.kub2b.com/mobile/ , 查看更多   
最新文章
为什么现在人们都在做自媒体,真的能挣到钱吗?还是别的原因呢?
只有极少一部分人能挣到钱,连百分之一也不到。一个月你能挣到100块钱,你已经算是出类拔翠的了。许多人忙了整整一年,也很有可
TikTok闯关,小红书躺赢?
这年头,谁人不为流量发愁。两家不同风格的社交平台,正因此陷入各自的应战状态。1月14日,来自TikTok难民的泼天的流量,正在疯
盐城城南新区热搜小区榜:万科悦达·翡翠云台为何成用户心头好?
在当前房地产市场风起云涌的背景下,每一个小区的热搜情况都将映射出购房者的心理和市场趋势。上周(1月13日-1月19日),盐城城
AI智能体:天工AI,解放双手,高效写作
#### 二、解放双手,高效创作的秘密武器在快节奏的工作和生活中,时间是最宝贵的资源。天工AI通过自动化处理大量重复性劳动,如
2024年度榜单TOP20|聚焦三大领域两大人群
2024年,发现报告平台累计更新了817,467篇报告,3,934,125条数据,156个报告专题;大家在发现报告共搜索了17,764,708次,其中AIG
致欧科技进驻小红书:如何借助年轻消费趋势重塑品牌形象
在当今消费市场,年轻人正在引领潮流,尤其是在社交媒体平台如小红书上,他们的影响力不容小觑。金融界在1月20日的报道中提到,
抖音移动营销推广-抖音推广营销广告
在当今数字化时代,移动营销推广已成为企业拓展市场、提升品牌知名度和增加销售额的重要手段,而抖音,作为全球(黑帽seo)的短视
经验总结“微信链接拼三张开挂技巧辅助器工具”分享装挂详细步骤
尊敬的微信链接拼三张游戏爱好者们,你是否曾经在游戏中遇到过难以逾越的关卡、强大的对手,或是一直无法获得胜利而感到沮丧?现
小红书用户画像深度解析:90后女性主导,Z世代与都市潮人引领潮流
小红书增长迅速,月活跃用户数高达2亿,创作者数量超过4300万。用户群体画像鲜明,对于想要在小红书上开展运营的新手来说,这具
2025年第3周:食品饮料行业周度市场观察
食品丨市场观察 本周看点: -食品饮料2024 “健康”成为胜负手; -六大类目,谁是2024市场份额增长TOP5? -2025年食饮营销有哪些