git 需要知道的1000个问题

栏目: 编程工具 · 发布时间: 4年前

内容简介:使用下面代码可以计算提交数如果提交出现异常这是 git 的问题,尝试升级最新的 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 提交 2

git 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)

git 需要知道的1000个问题

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

git 需要知道的1000个问题

  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 大文件


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Algorithms Illuminated (Part 2)

Algorithms Illuminated (Part 2)

Tim Roughgarden / Soundlikeyourself Publishing, LLC / 2018-8-5 / USD 17.99

Algorithms are the heart and soul of computer science. Their applications range from network routing and computational genomics to public-key cryptography and machine learning. Studying algorithms can......一起来看看 《Algorithms Illuminated (Part 2)》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具