Git命令


更新和提交

git fetch  下载远程的代码,并更新本地远程分支状态
git merge  合并2各分支,会产生一个新的节点指向2个分支的最新节点
git rebase 合并2个分支,不会产生新的节点,只会有一条提交节点线
git pull  等同于fetch + merge
git pull --rebase 等同于fetch + rebase
git fetch origin master
git rebase origin/master
git rebase -i HEAD^3 交互式rebase,弹框操作指定区间的提交记录(改变顺序、删除提交)
git push origin branch_name 推送到远程分支

分支管理

git branch -vv 查看本地所有分支及远程镜像
git branch -a 查看所有远程分支
git branch -d local_branch 删除本地分支
git checkout -b locale_branch_name origin/remote_branch 切换新分支
git checkout locale_branch_name 切换到本地已有分支

修改提交状态查看

git log 查看当前分支的提交记录
git log file 查看文件的提交记录
git log -p supply/harger-manager 查看每次提交的diff
git log --grep=words 查询包含关键字的提交日志
git tag 显示所有的tag
git tag TAG_NAME commitId 为某个提交创建标签
git show commitId 显示某次提交的详细内容
git status 查看本地所有的修改
git diff   查看本地所有修改点

撤销回退相关

# 将某[n]次提交合并到当前分支
git cherry-pick [-n] START_COMMIT_ID [.. END_COMMIT_ID]
git cherry-pick --continue 冲突文件解决add之后,执行此命令继续cherry-pick操作
git cherry-pick --abort 终止本次cherry-pick操作
git cherry-pick COMMIT1 COMMIT2 COMMIT3 ... 将其他分支指定的提交记录合并到当前分支
git checkout COMMIT_HASH 将HEAD移动到指定的提交记录
git checkout HEAD^  将HEAD往回移动一个节点
git checkout HEAD~N 将HEAD往回移动N个节点
git branch -f BRANCH_NAME HEAD~N 将指定分支强制移动到HEAD往回的N的节点位置
git reset LOCAL_BRANCH HEAD~1 将指定的本地分支撤回到HEAD的上一个节点位置
git reset commit_id 回退到某个节点
git reset --hard HEAD 将当前指向HEAD节点, 放弃本地修改
git revert ORIGIN_BRANCH HEAD~N 将指定的远程分支撤回到HEAD的前N个节点位置
git apply --reject file.diff 合入应用diff文件
git stash  暂存本地修改记录
git stash pop 恢复最后一次暂存的修改记录

操作所有分支

for remote in `git branch -r `; do echo $remote;grep -rn "keyWords" ./; done 查询所有分支下某个内容
for local in `git branch`; do echo $local;git branch -D $local; done  删除所有本地分支
git grep -E 'hi_IN|bn_BD|as_IN' $(git ls-remote . 'refs/remotes/*' | grep -v HEAD | cut -f 2) >> all.log 搜索所有远程分支并保存到文件

tig命令操作

tig [-N] 查看log的神器,输入tig进入tig模式后可使用下面的快捷操作
	m 查看当前分支所有的提交记录,默认就是这个页面
	h 显示tig帮助页面
	d 进入diff view,相当于git diff
	c 进入stash view模式
	b 查看选中行的详情,blame
	s 进入status view,相当于git status
	j/k 上下移动选中行,按enter键进入查看当前行的详情
	空格键 翻页
	/ 输入字符,然后在当前页面进行搜索
	q 退出tig

tig status 查看本地所有的修改,按u可以将光标所在的文件执行git add,已添加的按u取消add

  目录