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
  • 相关阅读:
    (双指针 二分) leetcode 167. Two Sum II
    (双指针) leetcode 485. Max Consecutive Ones
    (双指针) leetcode 27. Remove Element
    (String) leetcode 67. Add Binary
    (数组) leetcode 66. Plus One
    (N叉树 BFS) leetcode429. N-ary Tree Level Order Traversal
    (N叉树 递归) leetcode 590. N-ary Tree Postorder Traversal
    (N叉树 递归) leetcode589. N-ary Tree Preorder Traversal
    (N叉树 DFS 递归 BFS) leetcode 559. Maximum Depth of N-ary Tree
    (BST 递归) leetcode98. Validate Binary Search Tree
  • 原文地址:https://www.cnblogs.com/frank-zhang/p/12544719.html
Copyright © 2011-2022 走看看