美文网首页
Git 常用指令

Git 常用指令

作者: 長风先生 | 来源:发表于2020-06-15 11:47 被阅读0次

    Git 基本命令

    • git init 初始化仓库
    • git clone 克隆仓库
    • git config --global --list 查看全局 git 配置
    • git config --local --list 查看本地 git 配置
      • git config --local user.name <userName> 设置用户名
      • git config --local user.email <userEmail> 设置用户邮箱

    开发流程

    • git status 查看仓库文件状态

    • git diff 查看修改内容

      • git diff <$id1> <$id2> 比较两次commit之间的差异
      • git diff <branch1> <branch2> 比较两个分支之间的差异
      • git diff --staged 比较暂存区和版本库之间的差异
    • git add <fileName> 将文件添加至提交列表

      • git add . 添加所有文件
    • git commit -m"XXX" 说明本次的提交信息

      • git commit --amend 更改还没有提交到远程项目的提交信息
      • git commit --no-verify –m"XXX" 跳过 pre-commit 钩子校验
      • Angular git 提交规约:
        • feat:一项新功能
        • fix:一个错误修复
        • docs:仅文档更改
        • style:不会影响代码含义的更改(空格,格式,缺少分号等)
        • refactor:既不修正错误也不增加功能的代码更改
        • perf:代码更改可提高性能
        • test:添加缺失的测试或更正现有的测试
        • build:影响构建系统,CI 配置或外部依赖项的更改(比如:gulp,npm)
        • chore:其他不会修改 src 或测试文件的更改(比如文档修改,构建流程)
        • release:发布版本提交
    • git cherry-pick <commitId> 将某一次 commit 合并到本地

    • git push 推送到远端服务器

    • git pull 获取远端最新代码

      • git pull origin 远程分支名:本地分支名 获取远端分支到命令行所在分支(例如 git pull origin master)
    • git fetch 和 git pull 的区别

      • git fetch 也是获取代码的命令,它是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支
      • git pull 则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决

    fork 工作流

    github 的 fork 工作流需要手动增加远端 fork 的原项目地址,才能进行代码拉取

    • 使用 git remote add [upstreamName] [gitURL] 增加项目源地址
    • 使用 git remote remove [upstreamName] 删除某个源地址
    • 使用 git remote -v 查看当前源地址是否添加成功
    • 使用 git pull [upstreamName] [branchName] 获取源项目某一分支的更新
      • 若合并时报错 fatal: refusing to merge unrelated histories,在 git pull 后边增加 --allow-unrelated-histories 参数即可
      • 注意:若合并远端分支代码后出现了大量的冲突,查看是否是上游项目地址设置错误
      • 更多 fork 项目同步的方式(参考

    Tips:

    • 每天早上或者晚上 进行 git pull origin master 使自己的代码保持在最新状态;
    • 下班前最好进行一次完整的提交,避免电脑硬盘故障带来的代码丢失。

    分支操作

    • git branch 查看分支及所在分支情况(默认是主分支master)
      • git branch <branchName> 新建分支
      • git branch -d <branchName> 删除远端分支
      • git branch -D <branchName> 删除本地分支
      • git branch -m < branchName > 重命名某一分支
      • git branch -u <upstream>/<branchName> 让当前分支去追踪远端某一分支
    • git checkout <branchName> 切换到某分支
    • git checkout -b <branchName> 新建并切换分支
      • git checkout -b 新分支名 老分支名 基于老分支创建新的分支
    • git merge <branchName> 将某分支合并到当前命令行所在分支
    • git rebase -i HEAD~3 合并最近三次提交(主要用于合并多余提交信息、代码)
      • 指令操作提交信息修改
      • 需要注意的是 rebase 常用的操作为 pick 和 squash。pick 为保留某次提交,squash 会抹除掉某次提交并将更改合并到上一个 pick 中。
      • merge/rebase,两者都是合并,前者便于分清楚合并来源,后者按顺序重新排序整理改动,但是自然也就很难清晰的知道合并来源了。
      • git merge --squash <branchName> 会将当前分支的 commits 合并成一个提交
      • git rebase 会找到两个分支的共同历史,然后进行选择保留和合并,会保留 commits

    各种撤销操作

    • git log 显示所有提交过的版本信息
    • git relog 查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
    • git checkout <filename> 对于还没有进行git add的更改,可以使用checkout进行撤销改动,直接把文件还原(若是已经add了的,则用:git reset HEAD index.html)
      • git checkout . 插销全部操作
    • git reset --hard <HASH> 回退到某一节点,不保留当前修改
    • git reset --soft <HASH> 返回到某个节点,保留当前修改
      • git push --force 来强制将当前 reset 的代码推送到远端服务器(高危操作,谨慎操作)
      • git add . 误操作增加了多余的文件,使用 git reset <filename> 来撤销增加的文件
    • git revert <HASH> 撤销某次操作。与 reset 不同的是:git revert 会撤销指定版本,撤销也会作为一次提交进行保存( git reset 是直接删除指定的 commit, mr 时可能会有冲突,而git revert是进行新一次的提交,只不过要提交的内容与 revert 内容相反,故不会产生冲突)。
      • 当需要撤销一次 master merge 时,尽量不要使用 git revert
    • git clean 删除工作目录中所有没有tracked过的文件
      • git clean -n 显示 将要 删除的 文件 和 目录、
      • git clean -f 删除文件
      • git clean -df 删除文件和目录
    • 将本地分支恢复为远程分支的状态
      • git reset --hard origin/master origin/master替换为想恢复的分支名称,示例中默认的是主分支

    暂时存储本地修改而不提交

    • git stash 暂时将现有的更改保留到栈中
    • git stash list 查看栈中存储的版本
    • git stash apply stash@{n} 恢复栈中第n条暂存结果
      • git stash apply 默认恢复第一条
    • git stash show stash@{n} 显示第几个储存的变动
    • git stash pop 从 git 栈中获取最近一次 stash 进去的内容,恢复工作区内容
      • git stash apply 以及 git stash pop 都可以恢复暂存区内容,只是 git stash apply 不会删除 git stash list 里的记录,而 git stash pop 会删除记录;
    • gi stash drop stash@{n} 删除栈中第n个存储
    • git stash clear 删除栈中所有内容

    其他

    • git remote -v 查看当前仓库链接的远程仓库
    • Github 上下载的zip项目,关联到远程仓库(待验证)

    配置git警告转换成英文(Mac下)

    • 普通的命令行:echo "alias git='LANG=en_GB git'" >> ~/.bashrc
    • 安装了ZSH的命令行:echo "alias git='LANG=en_GB git'" >> ~/.zshrc

    配置zsh支持显示中文

    .zshrc 中加入下边两句

    • export LC_ALL=en_US.UTF-8
    • export LANG=en_US.UTF-8

    Hooks

    git hooks 是 git 提供的钩子,即某些动作发生时用户可以自定义脚本;
    当项目执行 git init 的时候,一些钩子相关的示例甲苯已经被放入了 .git\hooks中。示例都以 .sample结尾,若启用,则需要移除此后缀。

    客户端钩子-提交工作流

    • pre-commit 钩子在键入提交信息前运行,可以使用 --no-verify 跳过校验
    • prepare-commit-msg 在提编辑信息之前(如合并操作)
    • commit-msg 提交信息校验
    • post-commit 提交完成后运行
    • pre-rebase 变基之前
    • pre-push 推送代码期间的操作

    电子邮件相关钩子

    • post-applypatch 将结果通知给打补丁的作者
      更多钩子可参见:git 官网文档

    相关文章

      网友评论

          本文标题:Git 常用指令

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