常用的git命令

162 阅读3分钟

拉取远程仓库至本地

分支相关

  • git branch 查看本地分支
  • git branch -a 查看所有分支
  • git branch --remote 查看所有远程分支
  • git checkout -b new_branch 新建本地分支
  • git checkout exist_branch 切换本地分支
  • git checkout -b dev origin/dev 以远程dev分支为源新建本地dev分支
  • git checkout --track origin/<remote_br_name> 从远程分支创建一个本地同名分支并跟踪,并切换到该本地分支
  • git branch -d <br_name> 删除本地分支
  • git branch -D <br_name> 强制删除分支
  • git branch -d -r origin/<br_name> 删除远程分支

日志

  • git log 查看提交记录
  • git log --author=<user_name> 查看某个用户的提交记录
  • git log -p <file_path> 查看某文件的提交历史
  • git log - 查看最近n次的提交
  • git log -p 查看提交详情,相当于 git show 所有提交

推送

  • git push origin <local_br_name> 将本地分支推送到远程新建本地同名分支
  • git push origin <local_br_name>:<remote_br_name> 将本地分支,推送到远程分支
  • git push -u origin <local_br_name>:<remote_br_name> 将本地分支,推送到远程分支,并设置分支关联
  • git push origin -d <remote_br_name> 删除远程分支 -d --delete

其他

  • git status 查看当前工作区的状态
  • git add 将没有track的文件添加至暂存区
  • git commit -m '' 将暂存区的内容提交至分支
  • git commit --amend 修改前一次提交的描述信息
  • git stash 保存当前工作区的修改至缓存堆栈,用于不想提交的一些信息的暂存
  • git stash list 查看当前缓存区的列表
  • git stash pop 移出缓存区的第一个stash至工作区
  • git stash apply stash @{1} 移出缓存区的第二个stash至工作区

场景

  • 分支合并

    • 当前在本地dev分支想合并远程master分支的代码(git merge)
      • 最好先保持当前分支clean 把当前工作区内容提交commit或stash
      • git status 查看当前分支的状态
      • git fetch 获取远程库的变动
      • git merge origin/master
      • 处理冲突无则跳过
      • git push 推送至远程dev分支(本地dev已关联远程dev

    如希望分支树整洁可以采用 git rebase合并分支,可以参考 git-scm.com/book/zh/v2/…

  • 代码回滚

    • git reset --soft|--mixed|--hard
      • git reset --soft commitId 重置HEAD到指定版本,不修改Index和working tree 执行该条语句将commitId之后的提交记录全部回滚至暂存区,修改变更后再重新commit即可(无需add)
      • git reset --mixed commitId 与--soft不同的是它修改了Index执行该条语句将commitId之后的提交记录全部回滚至unstaged区,修改变更后需重新add 再重新commit
      • git reset --hard commitId 则会修改当前工作区,执行该条语句会将本地代码回滚到commitId这条记录状态,commitId之后的代码改动全部摒弃掉彻底还原且无法找回,慎用
    • git revert commitId 表示回滚commitId的改动 || git revert HEAD~3 表示回滚最近的第四条的提交记录,git revert操作会产生一个新的commit,将这次回退作为一次修改记录提交不会修改历史提交记录。
  • 合并提交记录 开发中可能会多次提交记录,合并后记录会更清晰些

    1. git log 查看当前工作区提交记录,找到要回退的commitId
    2. git rebase -i commitId 或者 git rebase -i HEAD~2(最近两次提交记录)
    3. 这时候,会自动进入 vi 编辑模式如下图所示修改pick -> s 保存退出会自动进入commit message确认页修改或#注释掉不需要的message保存退出
    4. 这时候git log 查看提交记录原2条记录已合并为一条,最后git push -f 推送远程