专栏首页卡少编程之旅学习git常用及高阶命令

学习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 条评论
登录 后参与评论

相关文章

  • 接触到的git的三个重要知识点

    卡少
  • MAC系统下的相关优秀软件搜集

    卡少
  • Hello World

    卡少
  • 大牛总结的 Git 使用技巧,写得太好了!

    本文是参考廖雪峰老师的Git资料再加上我自己对Git的理解,记录我的Git学习历程,作下此文是为以后学习,工作,开发中如果遇到问题可以回过头来参考参考。因为水平...

    Java技术栈
  • 我使用最频繁的10个git命令

    songleo
  • 快速入门使用Git管理代码

    许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

    Bobby
  • Git

    九旬大爷
  • git 入门教程之实战 git 原

    git 是一款分布式版本控制系统,可以简单概括: 不要把鸡蛋放在一个篮子里,你的一举一动都在监视中.

    雪之梦技术驿站
  • git 入门教程之知识速查 原

    (adsbygoogle = window.adsbygoogle || []).push({});

    雪之梦技术驿站
  • git 入门教程之 git 私服搭建教程 原

    前几节我们的远程仓库使用的是 github 网站,托管项目大多是公开的,如果不想让任何人都能看到就需要收费,而且 github 网站毕竟在国外,访问速度太慢,基...

    雪之梦技术驿站

扫码关注云+社区

领取腾讯云代金券