使用下面代码可以计算提交数
git rev-list --all --count
如果提交出现异常 Fatal: TaskCanceledException encountered
这是 git 的问题,尝试升级最新的 git 或输入git config --global credential.helper wincred
就可以让 git 记住密码
如果多个提交是连续的,那么可以使用下面的方法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 branch --merged | grep -v 'dev' | xargs -n 1 git branch -d
可以删除已经合并的分支
如果错误 add 不想添加的文件,可以使用下面命令取消添加文件
git reset .
如果有 f1 f2 两个文件,错误把两个文件都使用 add 暂存,现在只需要添加 f1 那么可以使用下面代码
git reset f2
使用方法:
git reset 文件名
如果需要查看现在暂存的文件,可以使用下面代码
git status
使用下面的代码可以找到提交所在的分支
git branch --contains <commit>
如果需要找到远程分支,加添加-r
,请看下面
git branch -r --contains <commit>
使用下面代码可以使用已有分支添加空间
git worktree add <文件夹> 分支
在 VisualStudio ,我看到了自带的 Blame 很烂,于是如何在 VisualStudio 添加一个强大的 Blame?
我选择了deepgit ,我把它安装在 C 盘,安装完成可以使用外部命令把他放在 VisualStudio,下面就是方法
C:\Program Files (x86)\DeepGit\bin\deepgit.exe
$(ItemPath)
请使用下面代码列出
git log | grep git-subtree-dir | tr -d ' ' | cut -d ":" -f2 | sort | uniq
可以使用下面的代码推送
git subtree --prefix="路径" push origin dev
分离分支
git subtree split [--rejoin] --prefix=<本地子项目目录> --branch <主项目中作为放置子项目的分支名>
拉取项目
git subtree -P <本地子项目目录> pull <远程仓库> <远程分支>
需要知道 使用-P
和使用--prefix
是相同的,使用--branch
和使用-b
是相同的。
如果对于一个分支的提交,需要添加tag而且给说明,如
v1.1 添加游戏
那么可以使用下面的命令
git tag v1.1 -m "添加游戏"
这样就会拿分支最后一次提交添加 tag 加上说明
如果是在程序使用 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
才可以