源 | Linux公社

Git 版本对比相关操作

  • [1] 输出工作区和暂存区的不同。

git diff
  • [2] 展示暂存区和最近版本的不同

git diff --cached
  • [3] 展示暂存区、工作区和最近版本的不同

git diff HEAD
  • [4] 展示本地仓库中任意两个 commit 之间的文件变动

git diff <commit-id> <commit-id>

Git 分支管理相关操作

  • [1] 展示本地分支关联远程仓库

git branch -vv
  • [2] 列出所有远程分支

git branch -r
  • [3] 列出本地和远程分支

git branch -a
  • [4] 查看远程分支和本地分支的对应关系

git remote show origin
  • [5] 删除本地分支

# 创建并切换到本地分支git checkout -b <branch-name># 删除本地分支git branch -d <local-branchname># 重命名本地分支git branch -m <new-branch-name># 快速切换到上一个分支git checkout -# 跨分支提交git checkout <branch-name> && git cherry-pick <commit-id>
  • [6] 删除远程分支

git push origin --delete <remote-branchname>
  • [7] 远程删除了分支本地也想删除

git remote prune origin
  • [8] 关联远程分支

# 关联之后 git branch -vv 就可以展示关联的远程分支名了# 同时推送到远程仓库直接 git push 命令且不需要指定远程仓库了git branch -u origin/mybranch

Git 文件处理相关操作

  • [1] 展示所有 tracked 的文件

bash

git ls-files -t
  • [2] 展示所有 untracked 的文件

bash

git ls-files --others
  • [3] 展示所有忽略的文件

bash

git status --ignoredgit ls-files --others -i --exclude-standard
  • [4] 强制删除 untracked 的文件

bash

# 使用clean命令后,删除的文件无法找回# 不会影响tracked的文件的改动,只会删除untracked的文件# 如果不指定文件文件名,则清空所有工作的untracked文件git clean <file-name> -f
  • [5] 强制删除 untracked 的目录

bash

# 如果不指定目录名称,则清空所有工作的untracked目录git clean <directory-name> -df
  • [6] 清除 gitignore 文件中记录的文件

bash

git clean -X -f
  • [7] 恢复删除的文件

bash

# 得到deleting_commit信息git rev-list -n 1 HEAD -- <file_path># 回到删除文件deleting_commit之前的状态git checkout <deleting_commit>^ -- <file_path>

Git 远程仓库相关操作

  • [1] 列出所有远程仓库

bash

git remote
  • [2] 修改远程仓库的 url 地址

bash

git remote set-url origin <URL>
  • [3] 增加远程仓库地址

bash

git remote add origin <remote-url>

Git 存储状态相关操作

  • [1] 存储当前的修改但不用提交 commit

bash

git stash
  • [2] 保存当前状态包括 untracked 的文件

bash

git stash -u
  • [3] 展示所有 stashes 信息

bash

git stash list
  • [4] 回到某个 stash 状态

bash

git stash apply <stash@{n}>
  • [5] 回到最后一个 stash 的状态并删除这个 stash 信息

bash

git stash pop
  • [6] 删除所有的 stash 信息

bash

git stash clear
  • [7] 从 stash 中拿出某个文件的修改

bash

git checkout <stash@{n}> -- <file-path>

Git 配置代码相关操作

  • [1] 配置 ssh 代理

bash

# 直接使用shadowsocks提供的socks5代理端口$ cat ~/.ssh/configHost gitlab.comProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %pHost github.comProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p
  • [2] 配置 http 和 socks 代理

bash

# 适用于 privoxy 将 socks 协议转为 http 协议的 http 端口git config --global socks.proxy '127.0.0.1:1080'git config --global http.proxy 'http://127.0.0.1:8001'git config --global https.proxy 'http://127.0.0.1:8001'

Git 其他高级相关操作

  • [1] 把某一个分支到导出成一个文件

bash

git bundle create <file> <branch-name>
  • [2] 把某一个文件导入成一个分支

bash

# 新建一个分支,分支内容就是上面 git bundle create 命令导出的内容git clone repo.bundle <repo-dir> -b <branch-name>
  • [3] 修改上一个 commit 的描述

bash

# 如果暂存区有改动同时也会将暂存区的改动提交到上一个commit中去git commit --amend
  • [4] 查看某段代码是谁写的

bash

git blame <file-name>
  • [5] 回到某个 commit 状态并删除后面的 commit 提交

bash

# 和revert命令不同,reset 命令会抹去某个commit_id之后的所有commit提交# 默认就是-mixed参数git reset <commit-id># 回退至上个版本将重置HEAD到另外一个commit# 并且重置暂存区以便和HEAD相匹配,但是也到此为止,工作区不会被更改git reset -- mixed HEAD^# 回退至三个版本之前,只回退了commit的信息,暂存区和工作区与回退之前保持一致# 如果还要提交,直接commit即可git reset -- soft HEAD~3# 彻底回退到指定commit-id的状态,暂存区和工作区也会变为指定commit-id版本的内容git reset -- hard <commit-id>
  • [6] 回到远程仓库的状态

bash

# 抛弃本地所有的修改,回到远程仓库的状态git fetch --all && git reset --hard origin/master
  • [7] 重设第一个 commit 信息

bash

# 也就是把所有的改动都重新放回工作区并清空所有的commit信息,这样就可以重新提交第一个commit了git update-ref -d HEAD
  • [8] 查找已经删除的文件提交

bash

# 模糊查找git log --all --full-history -- "**/thefile.*"# 精确查找git log --all --full-history -- <path-to-file>git log --diff-filter=D --summary | grep <file_name> | awk '{print $4; exit}' | xargs git log --all --# 查看所有删除文件git log --diff-filter=D --summary | grep delete# 查看产出文件是谁提交的git log --diff-filter=D --summary | grep -C 10 <file_name>

Git 给 Github 配置 RSS

/* Repo releases */https://github.com/:owner/:repo/releases.atom/* Repo commits */https://github.com/:owner/:repo/commits.atom/* Private feed (You can find Subscribe to your news feed in dashboard page after login) */https://github.com/:user.private.atom?token=:secret/* Repo tags */https://github.com/:user/:repo/tags.atom/* User activity */https://github.com/:user.atom

寻求报道、约稿、文案投放:
添加微信xixiaoyao-1,备注“商务合作”

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

Git使用的奇技淫巧相关推荐

  1. -m commit git_走在前沿的弄潮儿,怎能不会Git的那些奇技淫巧

    Git 是世界上最好用的代码版本控制工具,没有之一:那么作为走在前沿的 ML 开发者,岂能不擅长高端大气上档次的 Git? 本文介绍了七十多种常用的 Git 命令与技巧,项目作者削微寒在开源工作上也做 ...

  2. 走在前沿的弄潮儿,怎能不会Git的那些奇技淫巧

    点击"小詹学Python",选择"置顶"公众号 重磅干货,第一时间送达 本文转载自机器之心,禁二次转载 Git 是世界上最好用的代码版本控制工具,没有之一:那么 ...

  3. git gui here如何汉化_你不知道的一些在Git使用中的奇技淫巧!

    如果我不说奇技淫巧,你们估计就不点进来了 Git作为当今最流行的分布式的代码版本管理系统,它的出现改变了软件开发流程,大大地提高了开发流畅度. 使用Git也有一段时间了,一直都只是使用一些最最基本的几 ...

  4. 2015年3月-前端开发月刊

    1. 创业 2. 职业|项目管理 3. git 4. 知乎(zhihu) 5. 其它 6. Angular 7. 看书学习 8. 移动开发 9. Html5 10. CSS3 11. Javascri ...

  5. 大白话认识 Kafka 背后优秀的架构设计

    点击上方 "编程技术圈"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 每日英文 I once heard that,the only thing ...

  6. 收藏、学习一气呵成,2019年机器之心干货教程都在这里了

    机器之心整理 参与:张倩.蛋酱 从 2016 年起,机器之心每年都会盘点全年的精华教程.去年就有小伙伴留言说要在 2019 年上半年把 2018 年的教程合集「啃下来」.现在都 2020 了,不知道这 ...

  7. 收藏、点赞、退出一气呵成,2019年机器学习干货教程都在这里了

    机器之心整理 参与:张倩.蛋酱 从 2016 年起,机器之心每年都会盘点全年的精华教程.去年就有小伙伴留言说要在 2019 年上半年把 2018 年的教程合集「啃下来」.现在都 2020 了,不知道这 ...

  8. 重磅!美团、拼多多被约谈!

    点击上方 "编程技术圈"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 每日英文 You never know how strong you are ...

  9. 职场人深夜啪啪啪大赏,HR会的也太多了叭!

    ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍点击上方 "编程技术圈"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 每日英文 When you have d ...

最新文章

  1. LeetCode简单题之整数的各位积和之差
  2. SAP QM QP02 没有ECO试图直接修改检验计划主数据?
  3. 《Angular4从入门到实战》学习笔记
  4. 一个实验教会你配置IPv6地址
  5. Web Socket/Stomp——整合Spring Session【Header Token模式】解决方案
  6. python里的resize_利用python之wxpy模块玩转微信!这部小儿科吗!
  7. uni-app内置地图轨迹_MIUI11 新增亲情守护,支持安全围栏、运动轨迹功能
  8. Linux创建、删除文件和文件夹命令
  9. USACO 1.5.4 Checker Challenge
  10. zoj 2112 树状数组 套主席树 动态求区间 第k个数
  11. Vue Cli 3 搭建一个可按需引入组件的组件库架子
  12. Linux调试分析诊断利器——strace
  13. Binary String Constructing(CodeForces - 1003B)
  14. Java CXF框架(案例加解析)(快速入门)模拟服务端和客户端(客户端远程调用服务端功能)
  15. 批处理删除指定文件夹中的指定类型文件
  16. web网站搭建(nginx优化)二
  17. SpinLock 锁实现
  18. ubuntu 16.04 桌面版 双击自动删除文字 解决方案
  19. Java类管理机制——包的详解
  20. 大部分前端都在用的 ES6 代码简化技巧,你都在用吗?

热门文章

  1. [笔记] FireDAC DataSet 导入及导出 JSON
  2. 泛型(模拟list)
  3. css 相对定位与绝对定位
  4. Humble Numbers USCAO chapter 3.1
  5. ARM汇编Hello,World
  6. 解决eclipse无法解析导入org.eclipse.swt库
  7. 大大大大数怎么求余?C语言
  8. gitlab 如何关闭force push
  9. Android 充电LED控制
  10. 单片机实现环形队列_稀疏数组和队列(二)