stash
存草稿
git stash
git stash save “一些备注信息”
git stash list #列出暂存列表,便于定位
pull之后再将草稿恢复出来
git stash pop –index 恢复最近的暂存代码
git stash pop stash@{1} 恢复指定id的暂存区代码
删除存储进度
git stash drop [stash_id]
git stash clear #清空
提交信息修改
修改全局或针对仓库修改作者、邮箱
git config user.name "balabala"
git config user.email "bala@bala.com"
全局只要加上--global即可
修改最后一次commit注释信息
git commit –amend
修改最后一次作者、邮箱
git commit –amend –author=”username
修改前面好几次commit信息
git rebase -i HEAD~5 #这个代表最后5条commit
git rebase -i {commitId} #指定id的commit ,如 git rebase -i d98def
之后会出现编辑窗口,操作类似于vim编辑器,将pick改为edit字符,然后保存退出(:wq!)
git commit --amend #只修改注释信息
git commit --amend --author="username<email>" --no-edit #只修改作者、邮箱
git rebase --continue
重复以上代码,直至结束(需要注意,这个操作不能修改第一次提交的信息)
修改第一次的commit信息(需要单独使用)
git rebase -i –root
git commit –amend #只修改注释信息
git commit –amend –author=”username
仓库分支操作
查看分支
git branch -a
检出分支(切换)
git checkout balabala
新建分支
git branch balabala2
查看分支
git branch -v
合并分支
首先切换到目标分支1,将分支2的代码并到1上面去,就是
git merge 分支2
如果有冲突,自己修改代码解决即可
基本操作
clone 别名
git clone http://balabala/ddd.git 新名字 #例如 git clone http://c.com/b.git good-idea
克隆一个裸仓库
git clone –bare git地址 #例如: git clone –bare git://192.168.10.XX/git_repo/project_name.git
以镜像方式推送到一个新仓库
mkdir new_project_name.git
git init --bare new_project_name.git
cd project_name.git
git push --mirror git@192.168.20.XX/path/to/path/new_project_name.git
切换remote地址
git remote set-url origin remote_git_address
版本回退
git reset –soft 只回退commit信息,对现有版本库改动比较小
git reset –hard commitId #彻底回退到某个版本,所有的修改内容都会丢失
git reset –mixed 此为默认方式,等同于不带任何参数的git reset
如果是放弃所有,直接执行
git checkout .
此命令用来放弃掉所有还没有加入到缓存区(就是 git add 命令)的修改:内容修改与整个文件删除。
但是此命令不会删除掉刚新建的文件。因为刚新建的文件还没已有加入到 git 的管理系统中。所以对于git是未知的。自己手动删除就好了。
已经执行git add缓存了的:
git reset HEAD filepathname (比如: git reset HEAD readme.md)
同样放弃所有就是
git reset HEAD .
执行完此命令后,文件状态就回归到第一种情况了,此时再按照情况1处理。
3.已经用 git commit 提交了的:
可以用命令回退到上一次commit的状态
git reset –hard HEAD^
统计代码修改量 按作者
git log --author="zhangdong" --pretty=tformat: --numstat | \
awk '{ add += $1; subs += $2; loc += $1 - $2 } END \
{ printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'