likes
comments
collection
share

git实操

作者站长头像
站长
· 阅读数 11

配置

  1. gitlab ssh key配置【如何同时使用多个SSH公钥
  2. 保存密码,避免多次输入
  • ssh-keygen -p
  • Enter file in which the key is (/c/Users/xxx/.ssh/id_rsa): (选择公钥所在地)
  • Enter old passphrase:(输入旧密码)
  • 接着直接enter

命令

  1. checkout
  • git checkout -- <file>恢复被修改的工作区文件到修改之前的状态(先从暂存区拉取,没有则到本地仓库拉取)

    git restore <file>也是取消文件的修改

  1. reset
  • git reset HEAD -- <file>移除索引区(暂存区)中指定的文件

分支

  1. 创建分支
  • git branch
  • git checkout -b <branchName>创建并切换分支

创建完成后,将本地分支push到远程git push origin <branchName>:<origin/branchName>,创建同名远程分支

  1. 查看分支
  • git branch查看所有本地分支
  • git branch -a查看所有分支
  1. 切换分支
  • git checkout <branchName>
  1. 删除分支
  • git branch -d <branchName>删除本地分支,要求该分支所有提交已合并到HEAD提交;-D强制删除本地分支
  • git push origin :<branchName>删除远程分支
  1. 合并分支(合并前需要先拉取远程master
  • git merge <branchName>保留分支上的提交记录,会创建一次新的commit

冲突解决后:git add 修改后的文件 -> git commit -m '注释' git实操

对于快速合并,不会产生新的提交;--no-ff指定不是快速合并,合并后产生一次提交记录。回到合并之前可以使用git reset --hard HEAD~

  • git rebase <branchName>不保留分支提交记录

    从issue2分支git resbase master进行合并,解决冲突后:git add 修改后的文件 -> git rebase --continue -> vim编辑注释,:wq保存退出 git实操

==> Q: 什么时候使用merge?什么时候使用rebase?

  1. 重命名分支
  • git branch -m <branchName> <targetBranchName>
  1. 当远程某分支被删除后,本地仍可查看到该分支,如何更新?git fetch -p

改写提交

commit --amend(修改最近一次的提交)

  1. 第一次提交
  • git add 文件
  • git commit -m '注释'
  1. 再次提交
  • git add 修改后的文件
  • git commit --amend,进入vim编辑,具体命令可以操作查看这篇文章

reset

模式HEAD位置(取消commit)索引(取消add)工作区
hard修改修改修改
mixed修改修改不修改
soft修改(撤出提交的内容,commit仍存在)不修改不修改
  1. git reset --模式 版本号/HEAD~返回指定版本
  2. git reset --模式 ORIG_HEAD恢复到reset之前

rebase

  1. 汇合提交记录 合并前

git实操

git rebase -i HEAD~~合并最近两次提交,合并后

git实操

  1. 修改提交记录 修改之前

git实操

git rebase -i HEAD~~,选择需要修改的提交记录,将push改为edit,:wq保存退出。git add 修改文件+git commit --amend修改此次提交记录,git rebase --continue通知变基结束。发生冲突,解决冲突后git add 解决冲突后的文件+git rebase --continue完成修改。

git实操

使用git rebase --abort终止操作

fixup

当想对某次提交做补充且需要保持提交记录干净时,可使用 fixup 进行操作

  • git commit --fixup <targetSHA>
  • git rebase -i --autostash <targetSHA>

stash

  1. 切换分支报错:改动未提交,需要先执行git add .

git实操

  1. 使用git stash save 注释暂存修改内容,git stash show查看暂存内容,使用git stash list查看stash记录

git实操

  1. 恢复可使用git stash popgit stash apply
  • git stash pop 恢复暂存内容同时,删除记录
  • git stash apply stash@{0} 恢复内容同时保留记录

移除staged文件

  1. git restore --staged <file>可取消指定的已add的文件
  2. git rm --cached <file>移除指定的已add的文件,需要add的文件没有被修改,否则报错
  3. git reset HEAD <file>在已commit时,取消commit,取消add,默认--mixed

gitlab工作流

  1. git clone url
  2. 修改/添加文件
  3. git add .
  4. git commit -m 'feat/fix/.. ...',参考 angular commit message

git实操

  1. 第一次git push origin <branchName>:<remote branchName>,后面push使用git push origin <branchName>
  2. 提MR(merge request),从当前开发分支目标分支
  3. code review后,解决问题并resolve discuss
  4. 完成编码后,等待approve和merge

changeset发包流程

  1. 每次分支工作完成,需要构建changeset,再把 changeset push上去
  • yarn changeset add

  • 选择需要发版的包

  • 确定修改版本号(major/minor/patch)

    major: 主版本号,开发阶段为0 minor: 次版本号,开发阶段包有大更改则修改此版本号,稳定时 patch: 修改bug则修改此版本号

  • 添加发包原因

  1. 发包前,git pull确保本地master分支为最新
  2. master分支上执行yarn changeset version,会有changeset删除和文件修改,需要确认修改(确定版本号)
  3. git add . -> git commit -m 'release' -> git push
  4. master分支上执行yarn changeset publish开始发包,完成后需要git push --follow-tags打上tag
转载自:https://juejin.cn/post/6941962913166917669
评论
请登录