前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学习git常用及高阶命令

学习git常用及高阶命令

作者头像
卡少
发布2018-05-16 10:19:11
7970
发布2018-05-16 10:19:11
举报
文章被收录于专栏:卡少编程之旅

几个常用的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)
  • 克隆 指定的远程分支 如果你渴望只克隆远程仓库的一个指定分支,而不是整个仓库分支,这对你帮助很大。
代码语言:javascript
复制
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消息,从而保持历史记录的清晰。
代码语言:javascript
复制
git pull --rebase
#将某条branch配置为总是使用rebase推送
git config branch.BRANCH_NAME_HERE.rebase true
  • 检测 你的分支的改变是否为其它分支的一部分 cherry命令让我们检测你的分支的改变是否出现在其它一些分支中。它通过+或者-符号来显示从当前分支与所给的分支之间的改变:是否合并了(merged)。.+ 指示没有出现在所给分支中,反之,- 就表示出现在了所给的分支中了
代码语言:javascript
复制
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
  • 清理历史中的文件
代码语言:javascript
复制
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
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档