git cherry-pick <commit-id> //能把别的分支的commit-id移到当前分支。 也可能恢复删除的commit;
git cherry-pick <deleted commit-id>
git reset HEAD^ //删除本次的commit,恢复到上次的提交状态。本次提交的内容并不删除.
git reset --hard HEAD^ //删除本次的commit, 并将当前的代码恢复到上次提交的状态。
git reset --hard <delete commit-id> //恢复已删除的commit.
git log //查看所有的commit历史.
git reflog //查看所有的log, 包括删除的log.
git blame <commit-id> <file> //查看file的修改记录.
git am -3 <patch-file> //应用一个patch
git apply //应用一个path到某个文件或commit;
git format-patch HEAD^ //将当前的commit 生成patch文件
git bisect start <commit-id> //开始一个二分法查错。
git bisect good //标记一个正确的版本
git bisect bad //标记一个错误的版本
git diff <HEAD1> <HEAD2> //对比这两个HEAD之间的区别.
git difftool <HEAD1> <HEAD2> //同git diff, 但可以用可视化工具对比.
git difftool -g -t
git fetch //fetch一个别的地方的分支到当前仓库
git checkout //切换分支
git checkout ./ //撤消当前项目所有未提交的改动
git checkout -b <new branch> branch //创建一个基于branch的新分支new branch
git branch //查看当前仓库的本地branch
git branch -a //查看当前仓库的所有 branch, 包括远端的信息
git branch --track <new branch> <remote branch>
//创建一个追踪branch, 用于本地与远端的同步。git pull, git push使用.
git pull //同步远端分支.
git push //将本地的commit提交的远端.
git remote -v //查看远端信息
git remote add <remote name> <remote url>
//添加一个远端,
git remote add r git@192.168.2.x:path/xx.git
//添加一个可提交的远端.
git clone <remote url> //从远端复制一个git仓库, 和fetch的功能类似
git tag <new tag> //给当前HEAD打一个tag
git tag -d <tag name> //删除一个tag;
git add . //将当前项目的改动添加到git cache中
git commit -am 'msg' //将当前改动提交.
git grep <str> //在仓库中搜索字符串
git stash //将未commit的index缓存起来。
git stash list //查看所有的index缓存.
git stash apply //应用最后一次缓存的index.
git stash apply stash@{2}
//应用指定的缓存.
git stash apply --index
git stash pop //应用最后的存储并从缓存中移除
git stash branch testchanges //从存储中创建分支.
git stash show -p stash@{0} | git apply -R
git stash show -p | git apply -R
git下修改commit的message的方法
1.用git rebase 切换到要修改的commit上,接下来修改当前commit的信息,最后再还原commit.
git rebase -i master~5
这个是找出master分支最近5次的commit,看见那个写错的了吧?把pick改成edit,保存退出。
此时工作目录已经变成这次commit的样子了,不要慌,然后:
git commit --amend -m "message"
修改这次的message。最后:
git rebase --continue
怎么样,成功了吧?
利用这个方法也可以修改commit的文件。