学习git常用及高阶命令

几个常用的git命令情景

  • 复制代码仓库 git clone --bare|--mirror|--non-bare /var/www/html/myrepo.git
  • 后悔药 覆盖最后一次修改 git add . git commit --amend git push origin master -f
  • Git 放弃本地修改 git checkout . && git clean -df
  • Git 销毁最后一次提交 git reset --hard HEAD^ git push -f origin HEAD^:master
  • 打包嵌入版本号到文件 git rev-parse HEAD > version.txt
  • 本地拉取远程git仓库 git init && git remote add origin git@项目地址
  • PUSH前关联git的远程仓库 git branch --set-upstream debug origin/debug
  • 建立已有关联关系的本地分支git checkout --track origin/dev-zhengqigit

实用的高级Git命令(10条)

  • 输出最后一次提交的改变 git archive -o ../updated.zip HEAD $(git diff --name-only HEAD^) 它会输出最近提交的修改类容到一个zip文件中。
  • 输出两个提交间的改变 git archive -o ../latest.zip NEW_COMMIT_ID_HERE $(git diff --name-only OLD_COMMIT_ID_HERE NEW_COMMIT_ID_HERE)
  • 克隆 指定的远程分支 如果你渴望只克隆远程仓库的一个指定分支,而不是整个仓库分支,这对你帮助很大。
git init
git remote add -t BRANCH_NAME_HERE -f origin REMOTE_REPO_URL_PATH_HERE
git checkout BRANCH_NAME_HERE
  • 开始一个无历史的新分支 git checkout --orphan NEW_BRANCH_NAME_HERE
  • 不想切换分支,但是又想从其它分支中获得你需要的文件 git checkout BRANCH_NAME_HERE -- PATH_TO_FILE_IN_BRANCH_HERE
  • 同一branch协同工作,让git忽视某一指定文件的变动,防止merge覆盖 git update-index --assume-unchanged PATH_TO_FILE_HERE
  • 检查提交的变动是否是release的一部分 git name-rev --name-only COMMIT_HASH_HERE
  • 实用rebase替代merge完成推送 但是在多团队成员共同工作于一条branch的情形中,常规的merge会导致log中出现多条消息,从而产生混淆。因此,您可以在pull的时候使用rebase,以此来减少无用的merge消息,从而保持历史记录的清晰。
git pull --rebase
#将某条branch配置为总是使用rebase推送
git config branch.BRANCH_NAME_HERE.rebase true
  • 检测 你的分支的改变是否为其它分支的一部分 cherry命令让我们检测你的分支的改变是否出现在其它一些分支中。它通过+或者-符号来显示从当前分支与所给的分支之间的改变:是否合并了(merged)。.+ 指示没有出现在所给分支中,反之,- 就表示出现在了所给的分支中了
git cherry -v OTHER_BRANCH_NAME_HERE
#例如: 检测master分支
git cherry -v master
  • 检查提交的变动是否是release的一部分 git name-rev --name-only COMMIT_HASH_HERE

关于垃圾回收的 用来备忘

  • Git 垃圾回收 git gc --auto
  • Git 仓库占用空间 $ du -hs .git/objects 45M .git/objects
  • 清理历史中的文件
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch ****/nohup.out' --prune-empty --tag-name-filter cat -- --all git filter-branch --index-filter 'git rm --cached --ignore-unmatch ****/nohup.out' HEAD git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员的SOD蜜

EF+MySQL乐观锁控制电商并发下单扣减库存,在高并发下的问题

下订单减库存的方式 现在,连农村的大姐都会用手机上淘宝购物了,相信电商对大家已经非常熟悉了,如果熟悉电商开发的同学,就知道在买家下单购买商品的时候,是需要扣减库...

80880
来自专栏互联网技术栈

Elasticsearch之元数据(meta-fields)介绍

在Elasticsearch下,一个文档除了有数据之外,它还包含了元数据(Metadata)。每创建一条数据时,都会对元数据进行写入等操作,当然有些元数据是在创...

22260
来自专栏程序小工

windows7使用Sphinx+PHP+MySQL详细介绍

由于业务需要,需要做类似淘宝商城商品检索的功能,对于数据量很大的情况,MySQL 查询的效率损耗很大,需要使用专门的索引引擎进行搜索查询,实现功能,对于和 PH...

55010
来自专栏乐沙弥的世界

Oralce 10g 使用DBCA创建数据库

   Oracle提供了DBCA来创建数据库,对于初学者来说使用DBCA创建数据库简化了很多工作和设置,直接在交互界面即可实现所有的功能。然而对于实际的生产数据...

8120
来自专栏PPV课数据科学社区

Android数据库高手秘籍(二)——创建表和LitePal的基本用法

上一篇文章中我们学习了一些Android数据库相关的基础知识,和几个颇为有用的SQLite命令,都是直接在命令行操作的。但是我们都知道,数据库是要和程序结合在一...

435160
来自专栏祝威廉

ElasticSearch QueryCache漫谈

这些天在做ES调优,因为之前更多的是考虑ES的架构和可运维性,并没有过多关注query调优这块。今天一查Query Cache相关的内容,发现是少之又少。于是自...

19920
来自专栏xingoo, 一个梦想做发明家的程序员

Elasticsearch——分页查询From&Size VS scroll

Elasticsearch中数据都存储在分片中,当执行搜索时每个分片独立搜索后,数据再经过整合返回。那么,如果要实现分页查询该怎么办呢? 更多内容参考Ela...

96560
来自专栏java学习

Hibernate学习笔记2

定义hbm.xml映射文件和pojo类时都需要定义主键,Hibernate中定义的主键类型包括:自然主键和代理主键:

11540
来自专栏李蔚蓬的专栏

实战LitePal(Android_Persistent Technology)

1.Debugexperience about SQLite & LitePal:创建数据库闪退?注意小括号

19430
来自专栏皮皮之路

【MySQL】通过Binary Log简单实现数据回滚(一)

459110

扫码关注云+社区

领取腾讯云代金券