之前工作中过于依赖图形化git工具(sourcetree/fork)等工具,导致基本的git命令行都不怎么会用,经过一段时间之后,总结一下自己常用的git 命令行,这几个基本上也覆盖了工作中的大部分需求
//添加本地修改
git add .
//提交本地修改
git commit -m "XXX"
//提交本地修改,追加到上次的提交中
git commit --amend
// 切换到xxx分支
git checkout xxx
// 创建并切换到xxx分支
git checkout -b xxx
// 创建并切换到xxx分支,xxx分支追踪远程的master分支
git checkout -b xxx -t origin/master
//查看当前的git状态
git status
//拉取远端代码到本地,别切head移动到顶端
git pull --rebase
//推送本地的commit到远端
git push
//如果拉代码出现冲突,解决之后执行
git add .
git rebase --continue
//未push到远端的本地commit,进行撤销commit,且代码退回到本地 1代表退回1个commit,退回几次,就写几
git reset --soft HEAD~1
//撤回已经push的commit记录,xxx是commit的号码(如:a1831d8b5a6c0981883e6f1541979ef786bfa9d9),
//执行之后会在本地生成删除改次提交的代码,之后执行,git add. commit命令即可
git revert xxxx
//cheey-pick 提交的commit (ec670b3c)到当前分支,
git cherry-pick -x ec670b3c
git push
// 查看提交记录
git log
// 查看 git 操作记录
git reflog
// 回退或者跳转到某个提交记录
// xxx 为提交号
// 该操作只对 git add 过 有git记录的有效
// 该命令使用要慎重
git reset hard xxxxx
// 查看xxx的提交记录
git log --author=xxx
// 设置当前分支 追踪到远程分支
git branch -u origin/master
git branch --set-upsteam-to=origin/master
// merge 相关操作
// 当前分支为dev ,先checkout 到需要 merge的分支 拉取最新的代码
git checkout master
git pull --rebase
git checkout dev
git merge master
// 如果 master上有多个 commit,merge需要合并成一个
// 使用 --squash 参数,把master上多个commit 拉下来合并一个新的 重新 add commit
git merge --squash master