zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    svn错误:更新源码出现校验和不匹配问题
    Python:定义自己的ConfigParser
    js实现页面跳转的几种方式
    Div+CSS浏览器兼容问题( FireFox IE6 IE7 IE8 IE9)
    window.open(url地址?..&..,_blank,对话框的外观参数);
    SQL分割字符串2
    Razor语法
    js键盘事件全面控制详解
    window.open(url, name, features, replace)
    SQL游标
  • 原文地址:https://www.cnblogs.com/frank-zhang/p/12544719.html
Copyright © 2011-2022 走看看