1、删掉选定commit
倘若某一工程项目之中有 3 条递交。
commit-3 bc3ce563 commit-2 b9c7e5c2 commit-1 5a480a4b那时他们要删掉commit-2这条递交历史记录。如果怎样做呢?
第二步:采用git reflog查阅递交重要信息
git reflog第三步:rebase操作方式
git rebase -i 5a480a4b继续执行完那个指示后,就能看见 5a480a4b后的大部份 commit 历史记录。
把原本的pick单词修改为drop就表示该ID对应的 commit log 他们需要删掉。vim 保存退出。
第三步:解决冲突,强制推送更新到远程
git add . # 冲突时采用git commit -m“new commit” # 冲突时采用 git rebase —continue # 冲突时采用 git push origin master -f再查阅远程的递交历史记录,发现commit-2就没有了。
2、修改历史递交人重要信息
不知道你有没有遇到过这种情况,在维护个人的开源工程项目时,常常采用公司的邮箱和用户名递交了 Git 重要信息。一旦递交了,又想修改,怎样操作方式呢?
第二步:配置工程项目的递交重要信息
git config —local user.name studeyang git config —local user.email [email protected]第三步:继续执行下面脚本
git filter-branch -f –env-filter OLD_EMAIL=“原来的邮箱” CORRECT_NAME=“studeyang” CORRECT_EMAIL=“[email protected]”if [“$GIT_COMMITTER_EMAIL” = “$OLD_EMAIL” ] then export GIT_COMMITTER_NAME=“$CORRECT_NAME” exportGIT_COMMITTER_EMAIL=“$CORRECT_EMAIL” fi if [ “$GIT_AUTHOR_EMAIL” = “$OLD_EMAIL” ] then exportGIT_AUTHOR_NAME=“$CORRECT_NAME” export GIT_AUTHOR_EMAIL=“$CORRECT_EMAIL”fi –tag-name-filter cat — –branches –tags3、彻底删掉某文件
不小心递交了某一文件,历史递交重要信息一直都在,怎么彻底删掉?
git filter-branch –force —index-filter git rm –cached –ignore-unmatch B类/B19-React/React入门.md –prune-empty –tag-name-filter cat — –all git pushorigin master –force –all4、推送到选定仓库的选定分支
本地的代码是通过工具生成的,怎样把生成的代码推送到选定仓库下的选定分支?
# git push -f {your project} master:{your project branch} git push -f git@github.com:studeyang/studeyang.github.io.git master:webstack5、常用的标签操作方式
5.1 查阅 tag
$ git tag V1.0.3 v1.0.0 v1.0.0C01 v1.0.1 v1.0.2 v1.0.4 v1.1.05.2 查阅 tag,带上 tag message
$ git tag -n1 V1.0.3 消息可视化 v1.0.0 正式版本 v1.0.0C01 正式版本 v1.0.1 v1.0.1 正式版本 v1.0.2 正式版本 v1.0.4 20迭代 正式版本 v1.1.0 22迭代正式版本5.3 查阅 tag 的详细重要信息
$ git show v1.4 tag v1.4 Tagger: Ben Straub <[email protected]> Date: Sat May 3 20:19:12 2014 -0700 my version 1.4 commit ca82a6dff817ec66f44342007202690a93763949 Author: Scott Chacon <[email protected]> Date: Mon Mar 17 21:52:11 2008 -0700 changed the version number5.4 tag 数量很多,如果只对 v1.0 系列感兴趣
$ git tag -l v1.0* v1.0.0 v1.0.0C01 v1.0.1 v1.0.2 v1.0.45.5 创建 tag 并推送至远端
$ git tag -a v0.0.1 -m msg$ git push origin v0.0.15.6 轻量标签
$ git tag v0.0.1-lw5.7 更新 tag
$ git push origin –delete v0.0.1 $ git log –pretty=oneline 15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch experimenta6b4c97498bd301d84096da251c98a07c7723e65beginning write support 0d52aaab4479697da7686c15f77a3d64d9165190 one more thing 6d52a271eda8725415634dd79daabbc4d9b6008eMerge branch experiment 0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc added a commit function 4682c3261057305bdd616e23b64b0857d832627b added a todo file 166ae0c4d3f420721acbb115cc33848dfcc2121a started write support9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile 964f16d36dfccde844893cac5b347e7b3d44abbccommit the todo 8a5cbc430f1a9c3d00faaeffd07798508422908a updatedreadme $ git tag -a v0.0.1 9fceb02 $ git push origin v0.0.1最后
欢迎关注我的微信公众号「杨同学technotes」。君子之交淡如水,也可在公众号内添加我的微信,你我做个点赞之交,便好!