Git教程及常用操作

Git中的引用 Reference

GIT常用命令

  1. 从现有的仓库克隆
1
git clone git://github.com/lx19920404/NoteImages.git
  1. 添加文件
1
git add abc.txt
  1. 提交更改
1
git commit
  1. 进入描述编辑按【i】键,进入输入状态,输入完成后按【ESC】,输入[:wq]回车
  2. 推送至仓库
1
git push
  1. 撤销提交

    撤销上一次提交

1
git reset --soft HEAD^

撤销前两次提交

1
git reset --soft HEAD~2
  1. 从现有工作目录中创建git版本库
1
git init

输出Initialized empty Git repository in D:/…/.git/

  1. 将已有分支变基到master并将master快进合并到branch1
1
2
3
4
git checkout branch1
git rebase master
git checkout master
git merge branch1
  1. 删除本地分支
1
git branch -d branch1
  1. 删除远程分支
1
git push origin --delete branch1
  1. 删除远程仓库
1
git remote rm origin
  1. 关联远程仓库
1
2
git remote add origin git://github.com/lx19920404/NoteImages.git
git push -u origin master
  1. 比较两个版本文件差异,并打包
1
git diff HEAD HEAD^ --name-only | xargs tar -zcvf update.tar.gz
  1. 查看当前远程仓库地址
1
git remote show origin
  1. 强制推送
1
git push -f origin master
  1. 挑拣提交
1
git cherry-pick 9sdsdjksdf #此方法同时也会复制提交时间
  1. 二分查找引起报错的提交
1
2
3
4
5
6
7
8
9
10
11
#开始调试 指定终点和起点
git bisect start HEAD f324r23sdf
#调试代码是否正常
#if正常
git bisect good
#else
git bisect bad
#循环调试直至找到开始引起错误的提交
b47892 is the first bad commit
#确定原因后终止调试
git bisect reset
  1. 修改git push的默认行为
1
2
git config --global push.default matching #推送所有匹配的分支 
git config --global push.default simple #推送当前分支

GIT瘦身

1
2
3
4
5
6
7
8
# 查看历史大文件
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"
# 从历史中删除 target/ 这个文件夹
git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch target/' --prune-empty --tag-name-filter cat -- --all
# 执行仓库压缩
git gc --prune=now
# 推送到远程仓库
git push origin --force --all