title author date CreateTime categories
git 需要知道的1000个问题
lindexi
2019-11-29 8:36:7 +0800
2018-2-13 17:23:3 +0800
git

计算 git 的提交数

使用下面代码可以计算提交数

git rev-list --all --count

提交出现 TaskCanceledException

如果提交出现异常 Fatal: TaskCanceledException encountered

这是 git 的问题,尝试升级最新的 git 或输入git config --global credential.helper wincred 就可以让 git 记住密码

合并多个分支的时候不要自动合并

每次在合并 csproj 文件的时候自动合并都会让项目难以编译,如果需要让 git 合并多个分支的时候不要自动合并,发现有文件都有修改的时候就让开发自己解决,请使用下面的命令

git merge origin/xx --strategy=resolve

这里的命令的使用需要先使用 git fetch --all -p 让远程的分支最新,然后调用 merge 合并对应的分支

git fetch --all -p
git merge 仓库/分支名 --strategy=resolve

Cherry-pick 多个提交

如果多个提交是连续的,那么可以使用下面的方法git cherry-pick 开始...结束

例如有提交

76a0298d38760a635f404c1660238ae852d96517 提交 4

55b43be69fa90f4d03f27632c0231458ba1e7fd9 提交 3

55b43be69fa90f4d03f27632c0231458ba1e7fd9 错误的提交

e50b523f12d34435b3b49fe229d76ecc4754687f 提交 2

322d49c166b0a48bdcc6c1f69b29c617b435850b 提交 1

8793f59a87cbc4c62cf77b21369de657dc343a5d 提交 0

需要挑拣出 提交0-4 那么一般的方法是使用 git cherry-pick 5次。但是有一个简单的方法,只需要pick两次

git 的 pick 可以指定范围,下面的代码告诉大家如何使用

git cherry-pick 8793f59a87cbc4c62cf77b21369de657dc343a5d^...e50b523f12d34435b3b49fe229d76ecc4754687f//8793f59a87cbc4c62cf77b21369de657dc343a5d 提交 0 //e50b523f12d34435b3b49fe229d76ecc4754687f 提交 2git cherry-pick 55b43be69fa90f4d03f27632c0231458ba1e7fd9...76a0298d38760a635f404c1660238ae852d96517//55b43be69fa90f4d03f27632c0231458ba1e7fd9 错误的提交//76a0298d38760a635f404c1660238ae852d96517 提交 4

可以看到第一个代码存在^,因为pick的范围是(左开,右闭],所以为了包含 提交0 ,就需要在提交0添加^。第二个提交从 55b43be69fa90f4d03f27632c0231458ba1e7fd9 错误的提交 开始,因为左开右闭,不会包含这个提交。

git 删除不需要的分支

git branch --merged | grep -v 'dev' | xargs -n 1 git branch -d

可以删除已经合并的分支

git 删除仓库的 tag

删除 origin 仓库的 tagname 可以使用下面代码

git push origin :tagname

也可以使用 --delete 删除

git push --delete origin tagname

删除本地 tag 可以使用

git tag --delete tagname

https://stackoverflow.com/a/5480292/6116637

git 取消暂存

如果错误 add 不想添加的文件,可以使用下面命令取消添加文件

git reset .

如果有 f1 f2 两个文件,错误把两个文件都使用 add 暂存,现在只需要添加 f1 那么可以使用下面代码

git reset f2

使用方法:

git reset 文件名

如果需要查看现在暂存的文件,可以使用下面代码

git status

git 寻找提交所在的分支

使用下面的代码可以找到提交所在的分支

git branch --contains <commit>

如果需要找到远程分支,加添加-r,请看下面

git branch -r --contains <commit>

git worktree 添加已有分支的空间

使用下面代码可以使用已有分支添加空间

git worktree add <文件夹> 分支

git worktree add -b <新分支名> <新路径> <从此分支创建>

在 VisualStudio 添加 Blame

在 VisualStudio ,我看到了自带的 Blame 很烂,于是如何在 VisualStudio 添加一个强大的 Blame?

我选择了deepgit ,我把它安装在 C 盘,安装完成可以使用外部命令把他放在 VisualStudio,下面就是方法

  1. 确定 deepgit 的路径,记为 path ,我这里的是C:\Program Files (x86)\DeepGit\bin\deepgit.exe

  2. 打开 VisualStudio 工具 外部工具

  3. 点击添加

  4. 输入标题,标题可以随意写。命令就是 path 安装路径,参数写$(ItemPath)

  1. 点击添加或移除按钮 自定义

  1. 添加命令 这里选择工具的外部命令4,外部命令和添加命令所在有关,我这里添加的是第4个

git 列出所有的 subtree

请使用下面代码列出

git log | grep git-subtree-dir | tr -d ' ' | cut -d ":" -f2 | sort | uniq

git 推送 subtree

可以使用下面的代码推送

git subtree --prefix="路径" push origin dev 

分离分支

git subtree split [--rejoin] --prefix=<本地子项目目录> --branch <主项目中作为放置子项目的分支名>

拉取项目

git subtree -P <本地子项目目录> pull <远程仓库> <远程分支>

需要知道 使用-P和使用--prefix是相同的,使用--branch和使用-b是相同的。

git tag 添加说明

如果对于一个分支的提交,需要添加tag而且给说明,如

v1.1 添加游戏

那么可以使用下面的命令

git tag v1.1 -m "添加游戏"

这样就会拿分支最后一次提交添加 tag 加上说明

git 指定文件夹

如果是在程序使用 git ,需要指定 git 的文件夹。

例如我在程序使用了 git add . 那么 git 怎么知道是添加哪个文件夹,如果没有告诉 git 就会添加程序运行的文件夹

例如添加 E:\林德熙\代码 文件夹,可以使用下面代码

 git -C "/e/林德熙/代码" add .

使用 -C 文件夹路径 就可以让 git 添加指定的文件夹

创建本地仓库

如果需要创建本地仓库,只需要创建一个文件夹,然后在文件夹里使用下面代码

git init

这样就可以创建,但是现在创建的仓库无法被push代码,如果使用 push 到这个文件夹的代码,就会出现下面代码

remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: is denied, because it will make the index and work tree inconsistent

解决方法是在刚才创建的本地仓库文件夹使用下面代码

git config --bool core.bare true

或者在创建文件夹之后,使用下面代码初始化

git init --bare

这时本地的文件夹是无法看到文件的,原来显示文件的 git checkout . 执行会显示下面代码

This operation must be run in a work tree

因为设置了bare所以无法使用,如果要使用,就需要先去掉,使用下面代码

git config --unset core.bare

如果想要看到文件,需要执行下面两句代码

git config --unset core.bare
git checkout .

注意,设置了git config --unset core.bare就无法再push任何东西,需要再设置git config --bool core.bare true才可以

找到被删除的文件

从历史提交里面找到被删除的文件

git log --all --full-history -- <path-to-file>

文件支持通配如知道文件叫 xx.cs 可以使用下面的代码找到这个文件

git log --all --full-history -- **/xx.cs

https://stackoverflow.com/a/7203551/6116637

设置只对 github 开启代理

请将 socks5://127.0.0.1:1080 换你本地代理

git config --global http.https://github.com.proxy socks5://127.0.0.1:1080

取消设置

git config --global --unset http.https://github.com.proxy

统计更改文件

统计被更改的文件可以使用下面代码

git status | grep 'modified:' | wc -l

在使用 git status 会显示版本里面被当前修改的文件,需要通过 git add 添加的文件有哪些是被修改,然后通过过滤修改统计修改的文件

如何删除错误提交的 git 大文件

git无法pull仓库refusing to merge unrelated histories

git subtree pull 错误 Working tree has modifications

git 提交添加 emoij 文字

git cannot lock ref

git 修改commit日期为之前的日期

git镜像仓库

git 合并两个仓库

git 分支改名

git push 错误 hook declined

git 上传当前分支

git 合并工具

git 通过 SublimeMerge 处理冲突

参见:

再也不用克隆多个仓库啦!git worktree 一个 git 仓库可以连接多个工作目录 - CSDN博客

2019-11-29-git-需要知道的1000个问题相关推荐

  1. 专业导论-课后总结-2019.11.29

    专业导论-课后总结-2019.11.29 在经过学习有关计算机的硬件组成之后,我们进入了计算机的另一个重要组成部分--计算机的网络.如果要我说出计算机与它最开始的不同的话,我会说,网络.网络使得计算机 ...

  2. 【每日早报】2019/11/29

    ✦ 小红书推出创作者123计划,将于近期内测电商直播 ✦ 良品铺子IPO首发过会,拟募集资金7.73亿元 ✦ 百度CTO王海峰:百度大脑语音能力日均调用量超100亿次 ✦ 京东企业业务发布星云计划,目 ...

  3. Android Studio老版本下载方法(2019.11.29)

    近期学习Android开发,找到的资源都是使用Android Studio老版本进行教学,与新版本在操作上略有不同,学习时可能会有一些步骤跟不上,而且以Anrdoid Studio3.5为基础的问题分 ...

  4. require php 用不用,PHP中你应该知道的require()文件包含的正确用法

    以前看一些PHP框架源码的时候,很奇怪在文件包含的时候,会用dirname(__FILE__)来拼凑文件路径,不知道这样做有什么好处,后来终于发现了其中的缘由. 我们来看一个简单的例子: 有a,b,c ...

  5. 29 个你必须知道的 Linux 命令

    29 个你必须知道的 Linux 命令 2016-08-12    分类:操作系统.编程开发.首页精华暂无人评论     来源:dwqs 分享到:更多0 虽然Linux发行版支持各种各样的饿GUI(g ...

  6. 必须知道的linux命令,29 个你必须知道的 Linux 命令

    虽然Linux发行版支持各种各样的饿GUI(graphical user interfaces),但在某些情况下,Linux的命令行接口(bash)仍然是简单快速的.Bash和 Linux Shell ...

  7. git分支指的是_你一定知道的Git分支模型

    原标题:你一定知道的Git分支模型 写在前面 本文不是一篇Git入门指南,也不是 Git命令行使用技巧的讲解,而是谈谈作者在过往工作中使用的几种代码版本管理工具的一些体会,同时重点讲解一下Git的分支 ...

  8. 小白需要知道的git命令

    小白需要知道的Git命令 git remote add origin(这里一般这样写,当然可以写别的) 之后写clone or download里复制来的东西,可以ssh或者https git rem ...

  9. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第29篇]什么是UF-CMA数字签名的定义?

    这是一系列博客文章中最新的一篇,该文章列举了"每个博士生在做密码学时应该知道的52件事":一系列问题的汇编是为了让博士生们在第一年结束时知道些什么. 第16篇博客给出了DSA,Sc ...

最新文章

  1. Mybatis+Spring SqlSessionTemplate注入学习--1
  2. 负载均衡探测器lbd
  3. Mini汽车的保养周期
  4. java面试题十四 基本类型的默认值
  5. Java Project和Web Project
  6. 如何使用Serilog.AspNetCore记录ASP.NET Core3.0的MVC属性
  7. [剑指offer]面试题37:两个链表的第一个公共结点
  8. 清华大学 2011 春季学期 lt;现代软件工程gt; 课程表
  9. 动态规划进阶题目之滑雪
  10. LeetCode算法题-Number Complement(Java实现-五种解法)
  11. sublime与python交互
  12. 用虚拟串口进行串口调试
  13. 抖音直播睡觉一晚赚7.6万,心态崩了
  14. 城市信息学其二-城市人类动力学
  15. [论文笔记]Feature-constrained Active Visual SLAM for Mobile Robot Navigation
  16. 玩转Spring Cloud Security OAuth2身份认证扩展——电话号码+验证码认证
  17. C#插件开发之带控件的插件开发(基础篇)
  18. 分布式数据库中间件 MyCat 搞起来!
  19. MySQL数据库创建表报错的解决方案
  20. 关于MAC安装包文件损坏解决办法

热门文章

  1. Prometheus普罗米修斯部署
  2. 想见识一下超级高铁?VR带你来体验
  3. 服务器操作系统怎么做映像,如何网络捕获使用 Sysprep 和 PXE 配置的服务器操作系统映像...
  4. 深海迷航显示无法连接服务器,深海迷航中管道怎么连接 | 手游网游页游攻略大全...
  5. 【修真院“善良”系列之十八】WEB程序员从零开始到就业的全资料V1.0——只看这一篇就够了!
  6. Java8 Stream流式操作接口详解
  7. 0510课堂笔记--数组-面向对象
  8. Android socket 实现 wify 通信,简易聊天室 (一)
  9. OpenFOAM 中边界条件的设定【转载】
  10. java毕业设计校园二手商品交易系统源码+lw文档+mybatis+系统+mysql数据库+调试