前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分享5个Git使用技巧

分享5个Git使用技巧

作者头像
杨同学technotes
发布2023-02-24 10:54:53
2370
发布2023-02-24 10:54:53
举报
文章被收录于专栏:杨同学technotes杨同学technotes

1、删除指定commit

假如某个项目当中有 3 条提交。

代码语言:javascript
复制
commit-3  bc3ce563
commit-2  b9c7e5c2
commit-1  5a480a4b

现在我们要删除commit-2这条提交记录。应该如何做呢?

第一步:使用git reflog查看提交信息

代码语言:javascript
复制
git reflog

第二步:rebase操作

代码语言:javascript
复制
git rebase -i 5a480a4b

执行完这个命令后,就可以看到 5a480a4b 后的所有 commit 记录。

把原本的pick单词修改为drop就表示该ID对应的 commit log 我们需要删除。vim 保存退出。

第三步:解决冲突,强制推送更新到远程

代码语言:javascript
复制
git add .                   # 冲突时使用
git commit -m "new commit"  # 冲突时使用
git rebase --continue       # 冲突时使用
git push origin master -f

再查看远程的提交记录,发现commit-2就没有了。

2、修改历史提交人信息

不知道你有没有遇到过这种情况,在维护个人的开源项目时,常常使用公司的邮箱和用户名提交了 Git 信息。一旦提交了,又想修改,如何操作呢?

第一步:配置项目的提交信息

代码语言:javascript
复制
git config --local user.name 'studeyang'
git config --local user.email 'yanglu_u@126.com'

第二步:执行下面脚本

代码语言:javascript
复制
git filter-branch -f --env-filter '
OLD_EMAIL="原来的邮箱"
CORRECT_NAME="studeyang"
CORRECT_EMAIL="yanglu_u@126.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

3、彻底删除某文件

不小心提交了某个文件,历史提交信息一直都在,怎么彻底删除?

代码语言:javascript
复制
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch B类/B19-React/React入门.md' --prune-empty --tag-name-filter cat -- --all

git push origin master --force --all

4、推送到指定仓库的指定分支

本地的代码是通过工具生成的,如何把生成的代码推送到指定仓库下的指定分支?

代码语言:javascript
复制
# git push -f {your project} master:{your project branch}
git push -f git@github.com:studeyang/studeyang.github.io.git master:webstack

5、常用的标签操作

5.1 查看 tag

代码语言:javascript
复制
$ git tag
V1.0.3
v1.0.0
v1.0.0C01
v1.0.1
v1.0.2
v1.0.4
v1.1.0

5.2 查看 tag,带上 tag message

代码语言:javascript
复制
$ 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 的详细信息

代码语言:javascript
复制
$ git show v1.4
tag v1.4
Tagger: Ben Straub <ben@straub.cc>
Date:   Sat May 3 20:19:12 2014 -0700

my version 1.4

commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700

    changed the version number

5.4 tag 数量很多,如果只对 v1.0 系列感兴趣

代码语言:javascript
复制
$ git tag -l v1.0*
v1.0.0
v1.0.0C01
v1.0.1
v1.0.2
v1.0.4

5.5 创建 tag 并推送至远端

代码语言:javascript
复制
$ git tag -a v0.0.1 -m 'msg'
$ git push origin v0.0.1

5.6 轻量标签

代码语言:javascript
复制
$ git tag v0.0.1-lw

5.7 更新 tag

代码语言:javascript
复制
$ git push origin --delete v0.0.1
$ git log --pretty=oneline
15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment'
a6b4c97498bd301d84096da251c98a07c7723e65 beginning write support
0d52aaab4479697da7686c15f77a3d64d9165190 one more thing
6d52a271eda8725415634dd79daabbc4d9b6008e Merge branch 'experiment'
0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc added a commit function
4682c3261057305bdd616e23b64b0857d832627b added a todo file
166ae0c4d3f420721acbb115cc33848dfcc2121a started write support
9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile
964f16d36dfccde844893cac5b347e7b3d44abbc commit the todo
8a5cbc430f1a9c3d00faaeffd07798508422908a updated readme
$ git tag -a v0.0.1 9fceb02
$ git push origin v0.0.1
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-01-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨同学technotes 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一步:使用git reflog查看提交信息
  • 第二步:rebase操作
  • 第三步:解决冲突,强制推送更新到远程
  • 2、修改历史提交人信息
    • 第一步:配置项目的提交信息
      • 第二步:执行下面脚本
      • 3、彻底删除某文件
      • 4、推送到指定仓库的指定分支
      • 5、常用的标签操作
        • 5.1 查看 tag
          • 5.2 查看 tag,带上 tag message
            • 5.3 查看 tag 的详细信息
              • 5.4 tag 数量很多,如果只对 v1.0 系列感兴趣
                • 5.5 创建 tag 并推送至远端
                  • 5.6 轻量标签
                    • 5.7 更新 tag
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档