GIT常用命令大全(二)

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的选项

 

posted @ 2021-10-20 09:47  jest549  阅读(88)  评论(0编辑  收藏  举报