30 分钟熟练使用 GIT

前言

我以前一直使用 vssourcetree 管理 git ,虽然 sourcetree 用起来也很爽,但是随着本地的源代码越来越多,sourcetree 用起来也越来越力不从心。最近刚好重装系统,于是我只安装了 git 客户端 ,强迫自己使用 git 命令,感觉工作效率提升了不少,顺便总结了一些常用的 git 命令。

  • 好用的 cmder

    • 真香 。。。
  • 配置 SSH 秘钥

    • 这玩意配置一次长久使用,没必要记忆
    • 创建新的 ssh key : 输入 ssh-keygen -t rsa -C my_email@email.com 执行这条命令会如上图提示文件保存路径,可以直接按 Enter
      • C:Users\%name%.ssh 中打开公钥id_rsa.pub
    • github or gitlab 配置 ssh key
      • 用记事本打开 .ssh 目录下的 id_rsa.pub 文件,复制 ssh keygithub : On the GitHub site Click “Account Settings” > Click “SSH Keys” > Click “Add SSH key”
    • 测试 ssh 链接 github
      • 输入 ssh -T git@github.com ,出现 Successfully 就 OK
    • 设置自己的 git 信息
      • git config --global user.name "Firstname Lastname" 此处 name 可修改也不是用于登录 github 的登录名
      • git config --global user.email "your_email@youremail.com"
      • git config --list 查看自己的 git 信息

常用命令

  • step1 本地获取远程代码

    • git clone xx.git
    • git clone xx.git --depth=1
      • depth=1,就会只 clone 最后一次 commit 的内容
      • 获取 github 代码时, 如果网络环境比较恶劣,可以不需要获取commit 记录
  • step2 查看分支和操作分支

    • git branch 列出本地所有分支
    • git branch -a 列出所有分支,包含远程分支
    • git checkout master 切换到 master 分支
    • git checkout -b test origin/test 在本地创建指定远程分支 origin/test 在本地的副本
    • git checkout tag-name 选择指定 tag , 工作中用的少
    • git pull 只更新当前分支
      • git pull origin branch : branch 将远程分支合并至指定分支
      • git pull origin branch 将远程分支合并至当前选中分支
    • git remote update origin --prune 拉取更新远程分支列表
    • git branch -d <branch_name> 删除分支
    • git branch -D <branch_name> 强制删除分支
  • step3 签入变更集

    • git status 查看本地文件状态,此命令会列出所有变更文件
    • git add . 暂存所有更新
    • git commit -m "info" 从缓存更新到本地仓库
    • git push 推送本地变更
      • git push origin master 提交远程仓库
      • git push -f origin master 加入-f参数,强制提交,远程端将强制跟新到reset版本
        • push 报错,需要取消 分支保护选项 Settings => Repository => Protected Branches => Unprotect
      • 版本回退完毕后,在 gitlab 项目设置,protected branches 里设置回 masterprotected
  • step4 代码撤销

    • git checkout . 撤销本地修改
    • git clean -f git clean -nf 删除 untracked files
    • git clean -fd git clean -nfd untracked 的目录也一起删掉
    • git clean -xfd git clean -nxfdgitignoreuntrack 文件/目录也一起删掉
    • 在用上述 git clean 前,加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删
    • git rm --cached -r Colipu.B2B.UserHomePropertiesPublishProfiles 删除不需要提交的目录
      • git rm --cached <FILENAME> 如果 .gitignore 忽略规则创建于文件提交代码库之后,则 .gitignore 规则不会影响目前所提交的文件(不会自动把文件从服务器端删除掉), 需要手动删除, <FILENAME> 即为要移除的文件全名。
      • 执行命令后,需要执行git push 命令
    • git reset HEAD -- . 撤销所有
    • git reset HEAD -- filename 撤销特定目标
    • git rm -cached filepath 将文件从缓存中删除
  • step5 代码合并

    • git merge <name> 合并指定 branch
    • git merge <name> --squash
      • branch 下所有变更统一合并到当前 branch 。真香。
  • config

    • git config -l 用来查看配置信息
    • git config --global user.email zhangmaosong@colipu.com 设置邮箱
    • git config --global user.name zhangmaosong 设置名称
  • 恢复代码

    • git branch new_branch_name commit_id 通过 commit_id 创建新的分支
    • git reset --hard commit_id 将当前分支重置到 commit_id 那个节点
      • 修复数据后台,可以通过 git pull 重新更新后续变更集
    • git push -f origin <branchname> 强制推送变更集
  • 其他

    • git diff origin <master> 比较当前分支和远程分支差异
    • git log 显示所有提交过的版本信息 // q 退出
      • git reset --hard fb479960c0cec5549463ae123d70bdd72ccf6be7 通过 commit id 回退
    • git tag 查看标签
    • git show v1.3.5 查看某个标签的详情
    • git config --global core.autocrlf false 修改 git 全局配置,禁止 git 自动将 lf 转换成 crlf
    • git reflog |grep 'branch-name'
      • git checkout -b branch-name HEAD@{14} 恢复删除的分支
    • git rebase -i commitid --rebase commitid 之前的记录
      • git commit --amend -- 变更 commit 备注
      • :wq 保存文件 :q 不保存文件退出

镜像地址

  • https://gitee.com/mirrors 码云极速下载
  • git config --system core.longpaths true 查看设置状态是否修改成功
    • git config core.longpaths
原文地址:https://www.cnblogs.com/frank-zhang/p/12544719.html