git基础

git运行原理示意图:
git基础_第1张图片

个人总结的常用命令如下:
本地搭建仓库:

  1. git init

分支的创建

  1. git commit :提交一个快照

  2. git branch 新分支名 : 提交一个分支

  3. git checkout 新分支名 : 切换到新分支

  4. git checkout -b 新分支名 : 创建并切换到新分支

  5. git merge 分支名: 合并分支名到当前分支

  6. git rebase fix: 合并分支名到当前分支(fix分支并不会改变,只是将当前分支转移到fix分支树下方,与merge核心作用相同)

  7. cat .git/head 如果指向一个引用,可以用 git symbolic-ref HEAD 查看其指向

  8. git log : 查看提交记录的哈希值

分支移动

  1. git checkout master~ :向master上方移动一个提交记录;

    git checkout master~3:向master上方移动3个提交记录;

    git checkout master^ : 移动到master的父节点;

    git checkout master^^:移动到master父节点的父节点;

    git checkout HEAD^:移动到head的父节点。

  2. git branch -f master HEAD~3 : 将 master 分支强制指向 HEAD 的第 3 级父提交。

    -f : 强制移动

分支回退

  1. git reset HEAD~1 : 回退一个分支(改写历史,对远程分支无效)

    git revert HEAD : 建立一个新的分支,新分支与退回后的分支相同

分支拉取

  1. git checkout feature-1.1.0RELEASE :切换到开发分支
  2. git pull : 拉取分支(更新本地分支)
  3. git status :检查本地修改的文件
  4. git add 上面检出的被需要修改的文件 : 添加需要提交的修改的文件
  5. git commit -m ‘提交信息’ :提交代码
  6. git push : 推送到远程仓库

分支高级

  1. git cherry-pick c2 c4 : 将多个分支合并到当前分支下
  2. git rebase -i HEAD~4 :在ui界面打开交互,然后按自定义的顺序复制选中分支(从当前分支开始往上的4个分支)
  3. git rebase main bugFix : 将bugFix分支合并到main分支
  4. git commit --amend : 提交只存在于本地的时候使用
  5. git tag v1 c1 : 将c1命名成v1(1.0版本,锚点)
  6. git describe main : 描述距离main分支当前分支最近的锚点
  7. git bisect : 查找产生bug的提交

分支链式操作

  1. git checkout HEAD^22 :
    git基础_第2张图片
  2. git checkout -b bugWork HEAD~^2~ : 新建并切换,然后移动分支
  3. git branch bugWork HEAD~^2~ : 新建并切换,然后移动分支

远程分支

  1. git clone 地址 : 拉取地址中的远程分支到本地
  2. git fetch : 下载远程分支最新分支数据到本地分支(分支的历史树下载)
  3. git pull : 下载远程分支,并与本地分支合并(git fetch + git merge)
  4. git push: 提交分支到远程分支
  5. git pull --rebase :下载远程分支,并与本地分支合并(git fetch + git rebase 让分支树看上去更为简洁)

如何关联远程分支

  1. local branch “main” set to track remote branch “o/main” :git自动配置,将本地分支与远程分支关联
  2. git checkout -b totallyNotMain o/main : 创建分支totallyNotMain 并关联远程分支o/main
  3. git branch -u o/main foo : 将foo分支关联远程分支o/main
  4. git branch -u o/main : 将当前分支分支关联远程分支o/main
  5. git push origin foo : 将本地foo分支push到远程分支的foo分支(对foo分支做push?)
  6. `git push origin foo^:main : 将本地分支的上一个分支push到远程分支的main分支
  7. git fetch origin foo : 将远程分支poo 下载到本地的o/foo分支下
  8. git fetch origin foo~1:bar : 将远程分支poo的上一个分支 下载到本地的bar分支下
  9. git push origin :side :删除远程分支side(push空到远程分支就会删除)
  10. git fetch origin :bugFix :在本地新建一个分支bugFix
  11. git pull origin … :相当于以上命令加一个merge或者rebase
  12. git pull origin develop :将远程分支develop pull到本地当前分支

git本地配置信息

  1. 修改全局用户名
git config  --global user.name
  1. 修改全局邮箱
git config  --global user.email
  1. 修改当前项目用户名
git config user.name
  1. 修改当前项目邮箱
git config user.email
  1. 查看系统config
git config --system --list
  1. 查看当前用户(global)配置
git config --global  --list
  1. 查看当前仓库配置信息
git config --local  --list

git进阶

  1. git commit --no-verify -m “信息” :绕过检查直接提交
  2. git push --set-upstream origin dev :在远程创建dev分支,并将本地dev分支push上去
  3. git branch -D localBranchName :删除本地分支
  4. git push origin --delete remoteBranchName :删除远程分支
  5. git checkout . 取消所有修改

本地分支回退

  1. git log 查看日志(得到hash值)
  2. git reset --hard hash值(硬回退。回退到hash值的提交位置,清空所有修改)
  3. git reset --soft hash值 (软回退,回退到hash值的提交位置,保留之前所有变更,可以重新add,commit)

在非目标分支进行的改动,如何移到目录分支?

利用入栈和出栈操作,
将改动进行入栈操作,然后在指定分支进行出栈即可
参考文档: https://blog.csdn.net/qq_38530648/article/details/115166520

待续…

如果重置忽略文件

//1. 重置所有缓存
git rm -r --cached .
//2. 重新添加
git add .
//3. 提交
git commit -m ".gitignore is now working"

忽略某个具体缓存

git rm --cached .idea/misc.xml 

git commit -m "untrack .idea/misc.xml"

目录被识别成了文件怎么解决

删除被错误识别目录下的git文件夹

git沙漠模拟:https://oschina.gitee.io/learn-git-branching/?demo

你可能感兴趣的:(在学习java的道路上越走越远,git)