Git使用技巧

git clean

之前的文章 git-clean

exclude: 本地的.gitignore

有时候我们在本地创建的文件,不想提交到仓库时,会考虑用.gitignore。

但.gitignore文件本身往往是添加到版本控制的。为了不影响其他协作者。git提供了一个只对本地生效的规则文件

在项目的 .git/info/exclude 文件里编辑即可。规则用法与.gitignore一致。

统计两个commit之间的文件行数增改情况

将以下shell保存为diff_git_commit.sh

git log $1...$2 --pretty=tformat: --numstat | grep -v 'src/proto_lib/' | grep -v 'test/' | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -

用法:./diff_git_commit.sh commitId1 commitId2,当然你也可以用 ./diff_git_commit.sh tag1 tag2

你可能注意到了上面的grep -v。我把不需要统计的文件目录排除了。你可以按需修改以上shell。

文件权限/格式相关(常用于需要与unix协作的win下)

以下命令需要设置为全局时,在 git config 后面加 –global 即可

git config core.filemode false # 忽略文件权限
git config core.autocrlf true  # 将所有add到仓库的文本的结束符从crlf替换成lf(unix系统下将true替换成input)
git config core.eol lf # 设置行结束符,不过当core.autocrlf设置为true/input时,该配置不生效
git config core.ignorecase false  #区分大小写

分支相关

git push origin :branchName # 删除远程分支。其实就是把空分支push上去
git fetch origin --prune # 清除远程没有了,本地却还有的origin分支

Tag

git tag -a tag名 -m "tag描述" # 创建tag
git push origin tag名  # 推送指定tag到远程
git tag [-n] [--sort=creatordate] # 列出所有tag,并按创建时间排序
git fetch --tags # 从远程拉取所有tag

彻底将已删除的文件从版本库中清理掉

主要使用 git filter-branch

具体可参照这篇文章《使用git filter-branch删除没有使用的大文件

Commit相关

 

git commit –amend   # 修改已commit但未提交的评论

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇