git常用操作

配置

1. git config

git config 分为全局和局部

全局:git config --glabol
局部:git config

最终会生成配置文件,一般在~/.gitconfig。

2. core

git config --global core.fileMode
git config --global core.quotepath false
git config --global core.editor vim
git config --global core.ignorecase false
git config --global credential.helper store
git config --global credential.helper wincred
git config --global user.name <your name>
git config --global user.email <your_email@example.com>
git config --global push.default simple
key value 描述
core.fileMode true、false 在对比文件差异时,是否检测文件权限是否改变。由于有umask的存在,可能会使remote的文件权限拉到本地时发生改变,commit时,一堆的文件需要提交,但是他们仅仅是文件权限有所不同。
core.editor 编辑器:vim,emacs 提交时,使用的编辑器,用于编辑提交的message
diff.tool 比较程序:vimdiff,bc 对比差异时用的程序
difftool.prompt true、false 启动比较工具时,是否提示

操作

查看远端仓库地址

git remote -v

撤销commit

有时候git commit后需要撤销,修改后在次commit,使用:

git reset --soft HEAD^

这样就成功的撤销了你的commit。注意,仅仅是撤回commit操作,您写的代码仍然保留。HEAD意思是你当前commit后那个版本,HEAD^的意思是它的上一个版本,即你最新提交的版本的上一个版本,也可以写成HEAD~1。如果你进行了2次commit,想都撤回,可以使用HEAD~2

除了--soft选项,还有几个选项可以选择,输入git reset --让后按两次tab补全,这些选项就自动出来了。

--hard                 --keep                 --mixed                --quiet                --soft                 
--intent-to-add        --merge                --patch                --recurse-submodules

挑几个常用的注释一下:

--soft
不删除工作空间改动代码,撤销commit,不撤销git add

--hard
删除工作空间改动代码,撤销commit,撤销git add。注意完成这个操作后,就恢复到了上一次的commit状态。

--mixed
不删除工作空间改动代码,撤销commit,并且撤销git add操作这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。

生成/应用patch

git format-patch beaa2ecc10b

修改注释

git commit --amend

导出仓库

类似svn的export,导出一个纯净的源码

git archive --format tar.gz --output "./output.tar.gz" master

设置文件的特殊属性

例如源码里面有一个批处理脚本,换行必须用dos格式,而其他文件用unix格式。默认add文件后会自动转格式,转为预先设定的默认格式。这种情况需要一个例外,可以通过..gitattributes文件来实现:

mytools.bat text eol=crlf

修改远程仓库的push fetch地址

如果远程仓库地址变了,需要修改push和fetch的地址,

git remote set-url your_new_repo_url

取消已push的提交

git reset --hard HEAD~N //N为想回退几次
git push -f origin Your_Branch_Name

查看某次提交的修改内容

git show commitid file

后期添加轻量tag

git tag -a your_tag_name commit_id
# push指定tag
git push origin tag_name
# push所有tag
git push origin --tags
posted @ 2019-05-08 14:35  thammer  阅读(133)  评论(0编辑  收藏  举报