日常Git操作
前端打包需要提供 tag 给运维拉取包更新,下面的正确操作就是:
# 先添加暂存git add .
# 提交本地仓库 commit git commit -m 'xxxx'
# 获取对应的 commit idgit log --pretty=oneline --abbrev-commit
# 打对应的版本 tag 加上刚才上一步查看对应 commitId,关联到下面git tag v1.0.1 {commitId}
# 提交 tag git push origin v1.0.1
# 再提交你的本地 commit git push origin production
# 这样就可以了
# 删除对应 taggit tag -d v1.0.1
# 提交远程到git push origin :refs/tags/v1.0.1
# 补打标签就是创建 tag 没有加标签 commitId 那么可以这样git tag -a v1.0.1 9fbc3d0
撤销本地 commit 并保留当前修改
git reset --soft HEAD^
删除本地分支
# 需要切换到其他分支,不然会删除不成功。
git branch -D {分支名}
删除远程分支
// 删除远程分支git push origin --delete remoteBranchName
其他分支合并到另一个分支正确操作方式
举例:
- 所在开发分支:feature/my_order_optimize_3.3
- 将功能合并到的分支:feature/1023875_order_optimize
# 1、删除本地分支
# 2、将所在开发的分支 rebase 合并到需要合并到的分支上git rebase {合并到的分支}
# 3、查看log是否 rebase 成功git log
# 4、切换{合并到的分支}。执行 meragegit merage {所在开发分支}
# 5、pushgit push
# 此命令的用法就是,再当前的分支上,拉取远程其他最新的分支git fetch
# 例子# 我当前在 master 分支
master> git fetch origin {其他远程分支}# 这样就可以直接在本地拉取了 {其他远程分支} 上的代码了,然后 checkout 即可
# 当前分支使用其他分支的commit代码git cherry-pick {commitId}
# 详细看:https://www.ruanyifeng.com/blog/2020/04/git-cherry-pick.html
# 直接push就会生成commit记录git push
#
合并多个 commit# 从 HEAD 合并到第八个git rebase -i HEAD~8
git fetch origin {需要合并的分支}git merge origin {需要合并的分支}
# 当前的最后一个 commitId 合并到某个 commitIdgit rebase -i 6ad457782
#
vim Commit 合并操作指令:2,$s/pick/f/g
比如说合并 commit ,如果说我想合并某个节点上面的所有 commit 节点,
我们就可以操作
git rebase -i 2259eb0769219d86277e21dcfac227d2f7b21c24
这样会打开 vim,在 :
号加2,$s/pick/f/g
命令回车直接搞定
最后只会留下 fix: 小数点bug 的 commit 在他前面的都会被合并到最后一个节点里面。
git commit --amend
合完节点之后修改最后一个节点的 commit 信息 。
或者合并还可以这样,比如当前开发节点合并 commit 到 主分支,那么可以用:git rebase -i feature/lite
#
SSH 免密登录命令生成生成 ssh:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa -C "user.email"
快速打开 ssh config 文件:
vim ~/.ssh/config
=>Host github.com HostName github.com User favoorr IdentityFile ~/.ssh/id_rsa
Host dev1 HostName dev1 User youname IdentityFile ~/.ssh/id_rsa_yourdomain_gitlab
https://favoorr.github.io/2015/05/27/git-more-sshkeys-more-host/
在最新版的 Git 2.37.0 中,开启如下配置项后就能直接 git push 新分支,不再需要 --set-upstream origin: git config --global --add --bool push.autoSetupRemote true
#
git 一些小操作技巧当还有一个本地还有一个 commit log,但是不需要用到,上一条已经合完了其他的 commit 那么,我们可以直接使用回滚的方式 git reset HEAD~{count},提交的时候 commit —amend 不新增提交记录就可以了
从远程分支创建本地分支
git checkout -b 本地分支名x origin/远程分支名x
#
提交 commit 不显示commit 信息git commit --amend
#
根据 commitId 切分支git checkout {commitId} {本地新分支名}
#
退出合并git merge --abort
#
git 分支重命名# 1、本地分支重命名
git branch -m old new
# 远程分支重命名# 2、删除远程分支
git push origin :{你要删除的远程分支名}
# 3、将本地分支推送到远程分支上,如果远程分支不存在,则创建此远程分支
git push origin 本地分支名:远程分支名
#
回滚用 reset 还是 reverthttps://zhuanlan.zhihu.com/p/137856034
#
pull —rebase 的时候如果还有冲突 继续
git rebase --continue
没有的话那么就 退出
git rebase --abort
#
当前分支落后于主线分支操作当前的开发分支:feature/1025848-eshop
,主线分支:feature/lite
① 切换到主线分支feature/lite
:
git checkout feature/lite
② 拉取远程主线分支feature/lite
到本地的主线分支feature/lite:
git pull --rebase
③ 切回到当前的开发分支feature/1025848-eshop
:
git checkout feature/1025848-eshop
④ 拉取远程分支feature/lite
的代码:
git rebase feature/lite
⑤ 将当前开发分支分支feature/1025848-eshop
提交到远程分支feature/1025848-eshop
:
git push origin feature/1025848-eshop -f
#
git 查看远程仓库信息列子:
git ls-remote --heads # abc150b184007a4248a0e993b547194494964e17 refs/heads/master
# 仓库地址git ls-remote --get-url# git@xxxx:fe-x/xxx.git
git log 查看远程分支 log 信息
git log remotes/origin/master
#
git 更换源仓库地址第一种
git remote remove origin
# 然后再添加新的git remote add origin {url}
第二种
git remotea set-url origin "clone地址"
#
获取完整 commit idgit rev-parse HEAD
#
打印最近一次提交信息git reset HEAD --hard
# HEAD is now at b4c23ad9f WIP: update
#
移除 git 远程仓库地址git remote remove origin
#
Git Flow 工作流学习https://www.git-tower.com/learn/git/ebook/cn/command-line/advanced-topics/git-flow