自定义 Git

忽略特殊文件.gitingore

在windows下,不能直接输入.扩展名,需要 Git Bash工具使用 Unix 方式创建(vim .gitignore)。或者使用文本编辑器里“保存”或者“另存为”就可以把文件保存为.gitignore了。

Git 提供了一个全局的 .gitignore,可以在用户目录下创建 ~/.gitignoreglobal 文件,以同样的规则来划定哪些文件是不需要版本控制的。需要执行 git config --global core.excludesfile ~/.gitignoreglobal 来使得它生效。

配置语法

  • ?:代表任意的一个字符
  • *:代表任意数目的字符
  • {!ab}:必须不是此类型
  • {ab,bb,cx}:代表ab、bb、cx中任一类型
  • [abc]:代表a、b、c中任一字符
  • [^abc]:代表必须不是a、b、c中任一字符
  • /folder:代表目录

示例:

*.a       # 忽略所有 .a 结尾的文件
!lib.a    # 但 lib.a 除外
/TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/    # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
*.py[co] # 忽略Python编译产生的.pyc、.pyo

如果修改了 .gitignore 文件,需要在仓库的根目录下运行如下命令再提交:

git rm -r --cached .
git add .
git commit -m "fixed untracked files"

另外 git 还提供了另一种 exclude 的方式来做同样的事情,不同的是 .gitignore 这个文件本身会提交到版本库中去。用来保存的是公共的需要排除的文件。而 .git/info/exclude 这里设置的则是你自己本地需要排除的文件。 他不会影响到其他人。也不会提交到版本库中去。

.gitignore 还有个有意思的小功能, 一个空的 .gitignore 文件可以当作是一个 placeholder 。当你需要为项目创建一个空的 log 目录时,这就变的很有用。 你可以创建一个 log 目录 在里面放置一个空的 .gitignore 文件。这样当你 clone 这个 repo 的时候 git 会自动的创建好一个空的 log 目录了。

可以用 git check-ignore 命令检查配置是否有问题:

git check-ignore -v app.class
## .gitignore:3:*.class    app.class

配置别名

有没有经常敲错命令?比如 git status ?如果敲 git st 就表示 git status 那就简单多了。可以使用命令,告诉Git,以后 st 就表示status

$ git config --global alias.st status

还有别的命令可以简写:

$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch

--global 参数是全局参数,也就是这些命令在这台电脑的所有 Git 仓库下都有用。

配置一个 git last,让其显示最后一次提交信息:

$ git config --global alias.last 'log -1'

配置文件

配置 Git 的时候,加上 --global 是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。配置文件放哪了?每个仓库的 Git 配置文件都放在 .git/config 文件中:

$ cat .git/config 
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = [email protected]:michaelliao/learngit.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[alias]
    last = log -1

别名就在[alias]后面,要删除别名,直接把对应的行删掉即可。而当前用户的 Git 配置文件放在用户主目录下的一个隐藏文件 .gitconfig 中:

$ cat .gitconfig
[alias]
    co = checkout
    ci = commit
    br = branch
    st = status
[user]
    name = Your Name
    email = [email protected]

配置别名也可以直接修改这个文件,如果改错了,可以删掉文件重新通过命令配置。

搭建Git服务器

results matching ""

    No results matching ""