(syntax)git
2022-09-01 00:00:00

git

基础

Git经典流程图

checkout == checkout HEAD / diff HEAD

Respository => Index reset

Index => workspace checkout/diff /restore

暂存区恢复文件到工作区 git restore .

  • ssh-keygen -t rsa -C “xxxxx@xxxxx.com
  • cat ~/.ssh/id_rsa.pub
  • ssh -T git@gitee.com
  • git config –global user.name “”
  • git config –global user.email “”

查询

  • git status git reflog (show) 查看历史操作记录

    • git log 查看版本详细信息
    • git reflog 查看版本信息,以便确定要回到未来的哪个版本
      • git reflog git reflog –pretty=oneline
    • git log -oneline –graph –all 图示显示所有分支的历史
    • git log –graph // graph 图git log –graph –pretty=oneline –abbrev-commit
      • -oneline 一行
      • -n n个commit
      • xx 文件名
      • -p xx 某个文件的所有修改 git log 参数-p展开每次提交的内容差异,用-2显示最近的两次更新,如git log -p -2
      • –pretty=oneline xx –pretty=raw 查看commit之间的父子关系(root commit是没有父提交的 git log –graph # → 查看当前分支commit生成的树状图
      • git log --graph图 查看分支合并图
      • git log –pretty=oneline xx # → 查看xx文件提交的历史记录(只显示哈希值和提交说明)
  • git help git version

基础

  • git init [project-name]
  • git add . add 添加历史副本
  • git commit -m “” git commit -am “” (-a -m) 提交所有修改 git commit -amend 将暂存区和当前commit合并创建一个新commit去替换当前commit 添加标签
    • 将所有已经使用git管理过的文件暂存后一并提交,跳过add到暂存区的过程:git commit -a -m “commit_info” == git add . git commit -m “xxx”
  • git remote -v 查看关联的远程仓库 + show origin +add origin <git url> rm [remote-name] 移除远程仓库 rename [old-name] [new-name] 修改某个远程仓库在本地的简称 git remote prune orign 删除远端 origin 已不存在的所有本地分支
    • git remote add origin master / git remote add gitee [.gitUrl]
  • git clone [url]
  • git rm –cached [file name] 从暂存区中删除文件,但是工作区依然还有该文件
  • git mv [file-original] [file-renamed] 重命名文件,并将已改名文件提交到暂存区
  • git blame <file>
  • git reset --hard commit_id 恢复到某个commit git log 获取commit_id
  • git rebase xxx:假设当前分支与xxx分支存在共同部分common,该指令用xxx分支包括common在内的整体替换当前分支的common部分(原先xxx分支内容为common->diversityA,当前分支内容为common->diversityB,执行完该指令后当前分支内容为common->diversityA->diversityB)git rebase master

暂存

  • git stask list/clear/pop/apply/drop 解决开发功能没有完成,但是线上有bug要处理,可以先暂存取起来,保存起来,再切换分支 未处理完的变更先保存到stash 把当前的工作隐藏起来 等以后恢复现场后继续工作
    • git stask list 查看暂存列表
    • git stash clear 删除全部暂存 git stash drop <stash@{ID}> 删除暂存
    • git stash 暂存
    • git stash save -a “message” 标识储藏记录
    • git stash pop <stash@{ID}> 恢复暂存改动 git stash apply 保留
      • git stash pop 可取出最近一次储藏的修改到工作区中,并同时将该储藏从储藏记录列表中删除
      • git stash pop stash@{数字n} 取回某次stash的变更
      • git stash apply stash@{index} 取出指定index的储藏的修改到工作区 不删除暂存记录
    • git stash drop stash@{index} 将指定index的储藏记录中删除

差异

  • git diff
    • git diff <commit ID><commit ID> 两个commit的差异
    • git diff [文件] 工作区和暂存区的差异 diff/[checkout]
    • git diff -cached [文件]
    • git diff -HEAD [文件] 工作区和本地仓库的差异 diff HEAD
  • git difftool 提交1 提交2 比较两个commit 差异
  • git rebase 变基
    • rebase操作可以把本地未push的分叉提交历史整理成直线;
    • rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

分支

  • git branch r/v/av/a m d 分支名

    • 查看分支 git branch 查看本地分支 -r(romte) 远程分支 -v 查看当前工作分支及本地分支 -av 查看本地分支和远端分支 -a 本地和远程分支

    • 重命名分支 git branch -m 旧分支 新分支 / git branch -M main 强制

    • 创建分支 git branch 分支名 创建分支 git branch 新分支 指定分支 (基于指定分支创建新分支 git branch 新分支 commit的id (基于某个commit创建分支)

      删除分支 git branch -d(delete) 分支名 / git branch -D 分支名 强行删除分支

    • git branch --set-upstream branch-name origin/branch-name 建立本地分支和远程分支的关联

  • git checkout -b 创建分支 分支名 切换分支

    • git checkout 切换分支 // git switch 切换分支
    • git checkoub -b(branch) 分支名 (创建并切换分支) // git switch -c创建切换分支
    • git checkout -b 本地分支 origin/远程分支 拉取远程分支并创建新分支
  • git merge 合并分支

    • git merge A分支 (A合并到当前分支) git merge A分支 B分支 (A分支合并到B分支)
    • 查看合并分支
      • 查看哪些分支与指定分支合并 git branch –merged
      • 查看哪些分支没有合并到当前分支 git branch –no-merged
  • git fetch 取回分支 远程仓库 => 本地仓库 将远程仓库内容更新到本地

    • git fetch -all 将远程仓库的所有更新取回本地
    • git fetch <remote> 取回远程仓库的所有更新
    • git fetch <远程仓库> <分支名> 取回远程仓库特定分支
    • git fetch origin <branch-name> <local-name> 取回远程仓库的特定分支到本地仓库的具体分支
    • git fetch --p 更新远程分支到本地仓库分支
  • git push vs git pull

    • git push 推送代码 git remote add gitee git
      • git push (-f强制) origin master
      • git push origin --delete(-d) <branch> 删除远程分支
      • git push <remote> <local-branch>:<remote-branch>推送本地分支到远程仓库不同名分支
      • git push github master / git push gitee master
    • git pull 拉取代码 类似 git fetch + git merge 远程仓库 => 工作区
      • git pull / git pull origin master:master origin的master合并到当前master
    • git pull –rebase origin master

撤销

  • git checkout 撤销工作区的修改 暂存区 => 工作区(暂存区没有 本地仓库到工作区) 暂存区暂存了文件 工作区

    • git checkout 文件名
    • git checkout 文件1 文件2 文件3 暂存区 => 工作区
  • git revert HEAD 撤销提交 首选方式,没有任何丢失代码的风险 只能抵消上一个提交,如果想抵消多个提交,必须在命令行依次指定这些提交

    • git revert [倒数第一个提交]【第二个】
  • git reset 丢弃提交 希望以前的提交在历史中彻底消失,而不是被抵消掉

  • git reset -hard HEAD git reflog

  • git reset 回滚 git

    • 暂存区 撤销
      • 本地仓库 => 暂存区
      • git revert// 版本号 // 回滚 到本地 不删除云端回滚记录
      • git reset –hard// 回滚 删除云端回滚记录
      • git reset –hard HEAD^ //下一个版本
      • git reset –hard 版本号 //版本号不用写
  • 替换上一次提交 git commit –amend -m “Fixes bug #42”

  • 从暂存区撤销文件 git rm –cached [filename]

标签 标签也是版本库的一个快照 发布一个版本时,我们通常先在版本库中打一个标签(tag)

  • git show <tagname> git show v0.1 v1.4 显示所有标签信息 / git show

  • git tag 列出所有标签 git tag -l “v1.4.2.*” 特定的搜索模式搜索

    • 两种标签
      • 轻量级标签
        • git tag <tagname v1.5>
        • git tag -a v1.4 -m “tag message” git tag -a <tagname> -m "标签信息"
      • 含附注(带有说明的标签)的 -a/-s -m
        • git tag -s v1.5 -m "tag message"用GPG来签署标签
    • git tag -v1.5 验证已签署的标签
    • git tag -d 删除本地标签
    • git push origin :refs/tags/v0.9 删除远程标签
  • git push origin 将标签推送到远程仓库

  • git push origin –tage 将本地所有标签推送到远程仓库

功能分支工作流 Github flow

  • 创建feature统一合并到maste

Gitflow WorkFlow

  • git pull
  • git checkout -b feat-login_2020 创建开发分支
  • git push 推送分支
  • 暂存 git stash 暂存 git stash pop 恢复
  • git status
  • git diff 查看文件diff文件修改
  • git add . / git add 文件
  • git commit . 提交本次修改 git commit –amend 将暂存区和当前commit合并创建一个新commit去替换当前commit
  • git fetch –all 拉取所有远程仓库代码
  • git merge origin/maste git merge origin/develop 如果是多人协作,merge同事的修改到当前分支(先人后己原则) 合并远程仓库
  • git push
  • git merge –no-ff origin/develop // 同事review code之后管理员合并origin/develop到远端主干origin/master
  • git rm 删除工作区文件,并且将这次删除放入暂存区

.gitignore git忽略文件

上一页
2022-09-01 00:00:00
下一页