1.忽略文件权限或文件所有者
git config core.filemode false // 当前版本库
git config --global core.fileMode false // 所有版本库
cat .git/config //在git顶层管理的目录,查看当前git本地仓库的配置文件
2.忽略某文件或某目录所有文件的变化
//1、对于还没有track的文件或目录(没有add和commit的文件)
(1)~/.gitconfig 忽略规则由本机所有仓库共用
如:
[user]
name = yourname
email = yourname@email.com
[gui]
encoding = utf-8
[core]
excludesfile = ~/.gitignore
也可以用命令设置
git config --global core.excludefile ~/.gitignore
(2).git/info/exclude 仓库内根文件夹全局忽略文件的配置文件,配置该文件可以忽略。支持正则表达式
(3).gitignore 可以在仓库某一级目录下的创建该配置文件,增加忽略文件的规则。若在仓库的根文件夹创建,效果等同于.git/info/exclude配置文件
//配置语法:
以斜杠“/”开头表示目录;
以星号“*”通配多个字符;
以问号“?”通配单个字符
以方括号“[]”包含单个字符的匹配列表;
以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;
//2.对于已经缓存,但未commit的文件
git rm --cached filename 使用命令将要忽略的文件从缓存的索引中删除,再使用1中的方法增加忽略
git reset HEAD filename 也可以使用这个
//3.对于已经track的文件
忽略跟踪(提交代码时,忽略某一个文件不提交,即某个文件不被版本控制)
git update-index --assume-unchanged FLIE #FILE是目标文件路径
恢复跟踪
git update-index --no-assume-unchanged FLIE #FILE是目标文件路径
不过如果执行 git checkout和git reset的时候仍然会影响到这些文件,并把内容恢复到被跟踪的内容(再次修改仍然不会被跟踪)。
如果忽略的文件多了,可以使用以下命令查看忽略列表
git uls-files -v | grep '^h\ '
提取文件路径,方法如下
git ls-files -v | grep '^h\ ' | awk '{print $2}'
所有被忽略的文件,取消忽略的方法,如下
git ls-files -v | grep '^h' | awk '{print $2}' |xargs git update-index --no-assume-unchanged
3.合并多次commit为一次commit
git rebase -i HEAD~4 对最近的 4 个 commit 进行 rebase 操作;
操作Commands :
pick:保留该commit (缩写p)
reword:保留该commit,但要修改该次commit的注释(r)
edit:保留该commit,但要停下来修改该提交(不仅仅修改注释)(e)
squash:将该commit和前一个commit合并(注释也合并)(s)
fixup:将该commit和前一个commit合并,放弃当前 commit 的注释(f)
exec:执行shell命令(x)
drop:丢弃该commit(d)
编辑后保存退出,git 会自动压缩提交历史,如果有冲突,记得解决冲突后,使用
git add .
git rebase --continue
重新回到当前的 git 压缩过程
如果你想放弃这次压缩的话,执行以下命令
git rebase --abort
推送到远程仓库 git push -f
4.删除某次commit
可以使用 git 压缩 rebase 指令来删除某个 commit
可以通过 git rebase -i HEAD~1 (对最近1次 commit 进行 rebase) 或 git rebase -i 9fbf10(对 commit id 前几位为 9fbf10 的 commit 之后的 commit 进行 rebase);
将需要删除的 commit 设置操作指令 drop ,保存退出即可;
在执行 git log 时,可以发现该条 commit 已经从提交历史中删除了;
5.修改当前commit的注释
git commit --amend
出现有注释的界面(你的注释应该显示在第一行), 输入i进入修改模式,修改好注释后,按Esc键 退出编辑模式,输入:wq保存并退出。ok,修改完成。
如果修改之前的注释,可以使用git rebase -i [commit_id]指令,使用edit的选项
6.暂存文件
常用git stash命令:
(1)git stash save "save message" : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。
(2)git stash list :查看stash了哪些存储
(3)git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}
(4)git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show stash@{$num} -p ,比如第二个:git stash show stash@{1} -p
(5)git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1}
(6)git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}
(7)git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储
(8)git stash clear :删除所有缓存的stash
说明:新增的文件,直接执行stash是不会被存储的,可以使用先使用git add 加到git 版本控制里,再git stash
GIT常用命令大全(二)
最新推荐文章于 2024-09-04 13:50:27 发布