在一个仓库中引用另一个仓库
参考资料:http://www.jianshu.com/p/491609b1c426
初始化配置邮件及用户
检测仓库是否可以 ssh 连接
设置代理
参考总结: other-TortoiseGit设置ssr代理.md
设置提交模板
一般不同项目的模板不同, 所以使用 局部模板
-
项目内新建一个模板文件, 如 , 内容如下
-
cd 到 项目根目录 下设置
其实就是修改 文件, 增加模板字段
-
TortoiseGit 设置
-
-
测试提交
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w5NjlwNY-1596350269633)(http://yxbl.itengshe.com/20190810040603-1.png)]
-
取消模板. 把模板文件置空设置即可.
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
- 用执行下列命令:
解释:设置本地环境识别大小写
- 修改文件夹名称,全部改为小写(F2重命名修改即可),然后到远程仓库。
这时如我前面的图片所示,仓库上就会有重名的文件(文件夹)了。 - 删除多余的文件,我这里就是把,,等给删掉。
a). 执行命令,删除远程文件(删除文件夹里面的文件,文件夹也会消失)
如果显示如下,说明操作成功:
b). 同步,提交到远程仓库
这时,如果上面的步骤都顺利,那在远程仓库刷新一下,惊喜就出来了:
git 日志 命令
可以用于写工具判读某个时间内 某人 是否有提交过某些文件.
比如: 使用 python 执行这个命令后把输出导出到一个文件中, 然后读取文件解析后封装到数据结构中, 再进行逻辑分析.
–date-order 日期降序排序
–reverse 翻转排序
设置不同平台下的换行符
以 windows 为准,不然 不同平台下的使用 windows 上的仓库会出现 所有文件都有差异
- 参考文章: git 处理和修改行结束符(CRLF和LF)
正确的姿势:
在当前仓库,邮件 TortoiseGit -> Submodule Add
path 中的目的 文件夹必须是不存在的,也就是 hexo-theme-nex 文件夹是不存在的,不然汇报 : 的错
初始化带有 submodule 的工程
-
先 clone 出工程
-
cd 进工程后再初始化 submodule
-
在分别进入所有的子模块 checkout 到 master 分支
-
然后就在工作中update所有的子模块
-
正确姿势,递归 clone 所有 submodule
取消修改,还原到上一次提交
-
命令
Github 更新 fork仓库
以 skynet 仓库为例
- 没有源仓库先 clone 源仓库
- pull 源仓库
- pull 自己fork的仓库 (一般这步可以省略)
- push 到自己fork的仓库
- ok, done! 同步原始仓库最新的版本
clone 具体分支
-
加个 -b 参数
解决git无法clone提示443问题
大概就可以猜测是被墙了…翻墙的话开全局代理也没有起作用
报错:
- 需要配置下git代理(前提是你有shadowsocks), 1080 是ss的客户端端口
- 再 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
单独提交某个文件
地址操作
添加远端地址
查看远端地址
删除远端地址
修改远端地址
-
直接修改
-
先删后加
分支操作
创建本地分支
创建远端分支
切换分支
更新本地的远端分支列表
查看本地分支
-
查看 所有的本地分支, * 在前面的表示是 当前所在分支
-
查看 当前所在的分支
查看远端分支
同时查看本地与远端分支
指定分支upstream
删除本地分支
删除本地缓存的远端无用分支
删除远端分支
在Git v1.7.0 之后,可以使用这种语法删除远程分支:
tag 操作
tag 可作为 时间线 中的一个 标记, 方便看出那个时间点 前后发生了什么事情.
比如发了一个版本, 打个 tag, 看日志的时候就一目了然.
创建 tag
直接可视化记录
-
本地创建一个新 tag : rls-ccc
-
查看日志, 在 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)]
回滚远端
-
先回滚本地到某一次提交
-
强制堆到远端
$ 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 文件
- reset 到目的版本
- 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
- 选中某次提交, 可以看到 值:
- 双击某个文件, 弹出 diff 窗口, 右边是 选中提交 的文本值, 左边是 选中提交 的上一次提交 的文本值
查看当前文件 diff
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mUbizTmV-1596350269645)(http://yxbl.itengshe.com/20200531024800-1.webp)]
- 选中文件, 右键 -> 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
使用
-
语法
-
选项
- -k:保持输出文件的日期不变
- -q:安静模式,不提示任何警告信息
- -V:查看版本
- -c:转换模式,模式有:ASCII, 7bit, ISO, Mac, 默认是:ASCII
- -o:写入到源文件
- -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
-
下载 gpg 命令行工具. https://www.gnupg.org/download/
-
生成 gpg, 命令: , 期间会要求设置密码 passphrase, 查看秘钥是需要用到
-
查看 GPG key ID, 命令:
-
使用 GPG key ID 导出 公钥/秘钥
git 启用 gpg
-
查看 signingkey
奇葩问题集合
Q: 报错 :Please make sure you have the correct access rights and the repository
设置为 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
-
设置大小写敏感 并 清除缓存
- 以上就是本篇文章【git-相关操作】的全部内容了,欢迎阅览 ! 文章地址:https://sicmodule.kub2b.com/news/10479.html 栏目首页 相关文章 动态 同类文章 热门文章 网站地图 返回首页 企库往资讯移动站 https://sicmodule.kub2b.com/mobile/ , 查看更多