git 命令指南

整理一下 git 命令,用时总会忘记。

Git常用命令

  • git 克隆远程分支仓库
    git 克隆远程仓库项目时如果不指定分支,只会克隆默认分支内容
git clone -b 分支名称  远程地址
  • 查看 git 用户名和邮箱
git config user.name
git config user.email
  • 设置 git 账号
git config --global user.ame "foo"
git config --global user.email "foo@email.com"
git config user.name "foo"
git config user.email "foo@mail@com"
  • 查看 git 账号
git config --global --list
git config --local --list
  • 仅查看某一项配置
git config --local user.name
  • 分支相关命令操作
git branch (查看当前分支)
git branch -a (查看所有分支)
git branch 分支名 (创建分支)
git branch -d  分支名(删除分支)
git branch D 分支名 (强制删除未合并的分支)
git checkout 分支名 (切换到对应分支)会自动将代码更新为分支代码
git checkout -b 分支名 (`基于分支名或commit值` 切换分支并直接切换过去)
  • 查看 git 历史命令
history
  • 按照关键词搜索 git 历史命令
history | grep push
  • 查看 commit 历史
git log
git log --summary  (--summary 查看已经提交的文件详细变化)
  • 对比2个分支的日志
git log dev..master
  • 回滚本次修改
git reset HEAD foo.js
git checkout -- foo.js
  • 查看本次修改的代码
git diff
git diff HEAD
git diff --staged
  • 提交后发现丢了几个文件未提交
// 重新添加
git add "*.html"
// 重新提交
git commit --amend
  • 缓存某种后缀的文件
git add "*.js"
  • 清除缓存区中的文件
git reset  文件路径
  • 彻底删除某种后缀的文件
git rm "*.html"
  • 合并分支
git merge 分支名
  • 取消合并
git merge --abort
  • add . 之取消提交某些文件
git checkout -- <文件路径>
  • 隐藏当前修改代码 保存至堆栈中
git stash
git stash save "命名"
  • 释放堆栈中的代码
// 将当前stash中的内容弹出,并应用到当前分支对应的工作目录上 `注:该命令将堆栈中最近保存的内容删除(栈是先进后出)`
git stash pop 
// 释放指定代码
git stash pop stash@{0}
  • 查看堆栈(stash)目录
git stash list
  • 删除某个 stash
//  `stash@{0} 为栈中名称`
git stash drop stash@{0}
  • 清除 stash 所有内容
git stash clear
  • 误删除stash
git fsck --unreachable |
grep commit | cut -d\  -f3 |
xargs git log --merges --no-walk --grep=WIP
// 找到对应的 commit hash值
git stash apply hash值
  • 删除远程分支(次分支必须是非默认分支)
git push origin --delete branchname
  • 已经commit,强制退回到旧版本
git log // 找到对应 commit hash 值
git reset --hard hash值
  • 回退一次commit
git revert Head/[commit hash]
  • 设置远程仓库地址
git remote set-url origin git@foo.bar.com:a/hello.git
  • 本地创建了新分支,但是 origin 没有,push代码前
git push --set-upstream origin preproduction
  • 指定 tag 到远程
git push origin <tag_name>
  • 将全部 tag 推送到远程
git push --tags
  • 查看当前 tags
git tag --list
  • 仅删除index 不删除 working tree的.idea文件
// --cached 仅删除index, -r(recursive) 递归删除.idea目录下的所有文件
git rm --cached -r .idea
  • git 主动 track 文件,控制文件,做好提交准备
git add <file(s)>/.
  • git unstage 文件,释放文件 选择性控制
git reset HEAD <file(s)>/.
  • 暂存区文件如何覆盖工作目录文件
git reset HEAD <file(s)>/. && git checkout -- <files>/.
  • 提交已经被 git 管理,修改过为红色的所有文件
git add -u
  • 重置工作区和暂存区的所有文件为原始状态
git reset --hard
  • 比较当前分支与某次提交的区别
git diff HEAD [commit has fragment]
  • 同步到 remote 后,合并多个 commit 为1个
git rebase -i HEAD~2/hash
pick && squash
:wq!
  • 查看项目的 origin 代表地址
git remote -v
  • pick 中途误退出
git rebase --abort
  • 未同步到 remote,重新提交
reset soft
  • 撤销远程分支错误提交
...reset
git push --force
  • 误删除领先远程的本地如何恢复
git reflog  // 找出最新的commit sha1值HEAD@{1}比HEAD@{2}新
git branch branchName <sha1>
  • git fetch 与 git pull的区别
git fetch 更新 origin/*下所有的分支,在发布git flow feature 前很有用,用于更新remote分支
git pull 主要用来更新多人合作的当前分支,多用于更新local分支
  • 远程删除分支,本地git fetch 不能更新到最新分支
git fetch --prune
`-prune:  Before fetching, remove any remote-tracking references that no longer exist on the remote.`
  • 及时查看本地所有分支状态
git remote show origin

-假如远程已经不存在分支,git fetch --prune也更新不到状态,该如何做?

git push origin --delete feature/fix-chat-unread-msg-async
  • 删除单个脱离的远程分支
git remote prune <name>
  • 添加.gitignore后的文件名,.gitignore不生效
git rm -r --cached 文件名
  • git 工作区和暂存区的区别
          add                   commit
工作目录 ------------> 暂存区  ------------> 版本历史
暂存区:git已经获得了对文件的管理权限,暂存区文件有状态:new file,deleted,modified等等。
版本历史:git log查看每一次commit记录。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. 团队工作基本模型 建立初始远程仓库->各人拉取远程仓库到本地->建立自己的开发分支->开发完成后push新的...
    会飞小超人阅读 319评论 0 1
  • [TOC] 前言 刚刚开始使用Git的版本控制时,我根本不确定我付出那么多时间是不是会得到回报,Branch、St...
    木猫尾巴阅读 7,691评论 6 37
  • 先奉上Git常用命令速查表,方便大家查阅。 再来个目录说明,大家可以根据自己所需进行选择学习 1 git简介 Gi...
    司鑫阅读 6,592评论 28 233
  • Git操作指南 git是分布式版本控制系统,想了解更清楚的可以查阅百度百科。在说明操作指南前,我先给大家说明几个专...
    前端工程狮_jam阅读 444评论 0 2
  • git日常使用指南 Git是使用广泛的分布式版本控制系统。版本控制,简单讲就是记录文件变更历史。使用Git可以处理...
    awsome365阅读 419评论 0 0

友情链接更多精彩内容