git

发布时间 2023-11-29 22:17:55作者: 十七-2020

git status

git status -s --ignored // 以简洁模式查看暂存区和工作区的文件(全部显示,不执行文件过滤)
git status -uno // 查看暂存区和工作区的非untrack(未跟踪)状态文件
git status -uall // 查看暂存区和工作区的状态文件(递归子目录显示出里面的文件)

查看log

显示log同时显示tag信息

git log --decorate=full

补丁生成diff和patch的使用

生成补丁

git diff > test.patch

应用补丁

检查patch/diff文件

git apply --stat xxx.patch

检查能否应用成功

git apply --check xxx.patch

打补丁

git apply xxx.patch

删除分支 branch命令的使用

删除本地分支

删除本地分支命令

git branch -d [local_branch_name]
  • git branch 是在本地删除分支的命令
  • -d 是一个标志,是命令的一个选项,它是--delete的别名。顾名思义,它表示你要删除某些内容。
  • local_branch_name 是要删除的分支的名称

删除远程分支

删除远程分支

git push remote_name -d [remote_branch_name]
  • 你可以使用git push命令删除远程分支,而不是使用用于本地分支的git branch命令。
  • 然后指定远程的名称,在大多数情况下是origin
  • -d是删除的标志,是--delete的别名。
  • remote_branch_name是你要删除的远程分支。

删除远程分支示例

查看远程分支

$ git branch -a
* main
  remotes/origin/HEAD -> origin/main
  remotes/origin/main
  remotes/origin/master

-a标志(--all的别名)显示所有分支--本地和远程
可以看出有两个远程分支origin/masterorigin/main
-r--remotes的别名,仅显示远程仓库

删除远程origin/master分支

$ git push origin -d master
To https://xxx.com/gituser/test.git
 - [deleted]         master

换行符问题

# 提交时 CRLF 转换为LF,检出时转换为CRLF
git config --global core.autocrlf true

# 提交时 CRLF 转换为LF,检出时不做任何的转换
git config --global core.autocrlf input

# 提交和检出均不做任何的转换
git config --global core.autocrlf false

git clean

1、 git clean 命令介绍

对于工作目录中一些工作或文件,你想做的也许不是stash存储,而是移除,即: 清理工作目录。

可以使用git clean 命令来处理这个问题。

git clean命令是用来从你的工作目录中,删除所有未被Git追踪过的文件。

git clean命令经常和git reset --hard命令一起结合使用。因为记住reset回退,只影响被追踪过的文件,所以需要clean命令,来删除没有track过的文件。

结合使用这两个命令,能让你的工作目录完全回滚到一个指定的commit状态。

2、git clean 命令用法

git clean -n:是一次git clean的演习,告诉你哪些文件会被删除。记住他不会真正的删除文件, 只是一个提醒。(也就是查看可使用git clean命令清除的文件)

使用--dry-run选项也可以。

在清理工作目录前,强烈建议使用-n参数,来先看看将会删掉哪些文件,防止重要文件被误删。

git clean -f:删除当前目录下所有没有被track的文件。他不会删除.gitignore文件里面指定的文件夹和文件,不管这些文件有没有被track过。

-f选项:表示着“强制(force)”或“确定要移除”,默认为true,如果需要修改,需要编辑Git 配置变量 clean.requireForce 参数。

git clean -f <path>:删除指定路径下的没有被track过的文件。

git clean -df:移除工作目录中所有未追踪的文件以及空的文件夹。

git clean -xf:删除当前目录下所有没有被track过的文件. 不管他是否是.gitignore文件里面指定的文件夹和文件。

3、总结

你需要谨慎地使用这个命令,因为它被设计为从工作目录中移除未被追踪的文件。如果你改变主意了,你也不一定能找回来那些文件的内容。

(删除了就找不回了,一定要慎用。但是如果被 git add 暂存过,就还能找回来。)

默认情况下,git clean 命令只会移除没有被忽略,且未被跟踪的文件。 任何与 .gitignore 或其他忽略文件中,所能模式匹配到的文件,都不会被移除。 如果你也想要移除那些文件,例如为了做一次完全干净的构建而移除所有由构建生成的 .o 文件, 可以给 git clean 命令增加一个 -x 选项。

使用选项-i参数(interactive),表示可以使用交互的模式运行 git clean 命令。在这种方式下可以分别地检查每一个文件,交互的指定删除的模式。

git 错误调试方法

git 开启错误调试模式

# on linux
export GIT_TRACE_PACKET=1
export GIT_TRACE=1
export GIT_CURL_VERBOSE=1

# on windows
set GIT_TRACE_PACKET=1
set GIT_TRACE=1
set GIT_CURL_VERBOSE=1

# close config
unset GIT_TRACE_PACKET GIT_TRACE GIT_CURL_VERBOSE