美文网首页
git 命令指南

git 命令指南

作者: _若无 | 来源:发表于2022-05-05 14:36 被阅读0次

    整理一下 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记录。
    

    相关文章

      网友评论

          本文标题:git 命令指南

          本文链接:https://www.haomeiwen.com/subject/lsunyrtx.html