玩转Git三剑客

在这里插入图片描述

在这里插入图片描述

查看提交日志信息
  1. git log -n4(显示最近提交次数) --oneline --all --graph
  1. 创建并切换分支
    git checkout -b test(分支名)
  2. 查看分支
    git branch -v
  3. 修改文件名
    git mv
  4. git日志工具
    gitk

.git目录说明

  1. HEAD 指向当前分支的引用
    在这里插入图片描述

  2. config保存本地仓库的配置信息
    在这里插入图片描述
    在这里插入图片描述

  3. refs 中的heads和tag

    • heads信息
      在这里插入图片描述
    • tags目录文件存放标签信
      git cat-file -t/-p 1cal1924
      参数说明-t:查看类型;-p:查看内容
      在这里插入图片描述
  4. objects目录对象类型blog、tree、commit
    在这里插入图片描述

commit、tree和blob三个对象之间的关系

在这里插入图片描述
在这里插入图片描述

一次commit会产生多少tree/blog

  1. 新建仓库: git init swatch_git_objects
  2. 进入初始化仓库:cd swatch_git_objects
  3. 创建文件夹并进入:mkdir doc cd doc
  4. 创建文件并写入内容helloecho “hello,world” readme
  5. 添加到仓库:git add doc
  6. 提交:git commit -m “add remede”
  7. 查看.git/objects下生成的对象:find .git/objects -type -f
  8. 分别查看对象类型及内容:git cat-file -t/-p id号
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

分离头指针情况下的注意事项

  1. head 指向某个commit git checkout ee69111
  2. 修改文件:vi nacos/config/application.properties
  3. 提交文件:git commit -am “application file”
  4. 切换分支:git checkout master
  5. 分离指针文件并未关联任何文件
  6. 查看git 提交信息:gitk -all
  7. 创建新的分支关联commit:git branch fix_application ee69111
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

进一步理解HEAD和branch

  1. 基于fix_application创建fix_readme分支:git checkout -b fix_readme fix_application
  2. 查看切换分支与HEAD之间的关系:cat .git/HEAD
  3. 比较两次提交的不同:git diff commitId1 commitId2/head head^(代表head父亲)/head head~2(head爷爷)
  4. git diff 退出 q+enter键
    在这里插入图片描述
    在这里插入图片描述

怎么删除不需要的分支?

  1. 删除分支:git branch -d 分支名称
  2. 删除分支:git branch -D 分支名称
    在这里插入图片描述

修改commit的message

  1. 对最近一次提交commit的message做变更:git commit --amend

在这里插入图片描述

  1. 修改老旧commit的message
  • git rebase -i commitId的父id
  • 修改提交commitId的关键字如:pick、reword、edit、fixup、exec在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 怎样把连续的多个commit整理成一个
  • 找到要修改的最前一个要修改commitId的上一个commitId
    git rebase -i commitId(的上一个)
  • 将几个commitId的前面的关键字改为s
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

  1. 把间隔的几个commit整理成1个
  • 找到间隔commit最前面一个的父commitId: git rebase -i commitId
  • 最前面添加父pick commitId:pick commitId
  • 将间隔几个要修的的commit移动到父commitId后
  • 前面的pick改为s
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

比较暂存区、HEAD、工作区所含文件的差异

  1. 比较暂存区和HEAD的差异:git diff --cached
  2. 比较暂存区和工作区的差异:
    • 比较所有文件:git diff
    • 比较指定文件:git diff – fileName
  3. 暂存区恢复成和HEAD一样内容:git reset head
  4. 工作区的文件恢复为和暂存区一样:git checkout – fileName
  5. 取消暂存区部分文件的更改:git reset head – fileName
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

消除最近的几次提交

  1. 回退到某一版本的commit:git reset --head commitId
    在这里插入图片描述
  2. 看看不同提交的指定文件的差异:git diff master temp – fileName
    在这里插入图片描述
  3. 正确删除文件的方法:git rm fileName
    在这里插入图片描述
  4. 开发中临时加塞了紧急任务
    • 将任务放入存放起来:git stash
    • 查看存放情况:git stash list
    • 恢复存放,内容会保留备份:git stash apply
    • 回复存放,不会保留备份:git stash pop
      在这里插入图片描述
      在这里插入图片描述

.gitignore介绍

Java.gitignore

# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

将Git仓库备份到本地

  1. 哑协议备份:git clone --bare /f/git/git_learning/.git ya.git
  2. 智能协议备份:git clone --bare file:///git/git_learning/.git zhineng.git
  3. 添加远端协议:git remote add /f/git/git_learning/.git ya.git
  4. 将分支内容推向远端:git push --set-upstream zhineng master(分支名字)
    在这里插入图片描述

将GitHub配置公私钥匙

  1. 查看本地是否有公私钥匙:ls ~/.ssh
  2. 生成公私钥匙:ssh-keygen -t rsa -b 4096 -C “your_email@example.com”
  3. 将本地公钥匙拷贝到GitHub
    在这里插入图片描述
    在这里插入图片描述

本地仓库同步到GitHub

  1. 添加远端仓库:git remote add github git@github.com:dreamingyin/git_learning.git
  2. 查看远程分支:git remote -v
  3. 推送所有的内容:git push github --all
  4. 拉取远端master的分支内容: git fetch github master
  5. 合并远端master:git merge github/master
  6. 允许没有任何管理关系的master合并: git merge --allow-unrelated-histories github/master
  7. 向master分支推送内容:git push github master在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

不同人修改了不同文件

  1. 克隆分支:git clone git@github.com:dreamingyin/git_learning.git git_leanring_02
  2. 配置本仓库的用户名、邮箱:git config --local user.name ‘steven’、git config --local user.email ‘haoyeyin@gmail.com’
  3. 查看本仓库邮箱、用户名配置情况:git config --local --list
  4. 基于远端的分支创建新分支:git checkout -b feature/add_git_command origin/feature/add_git_command
  5. 切换新的仓库:cd …/git_learning
  6. 拉取远端分支:git fetch github(远端分支名称)
  7. 基于远端分支创建本地分支:git checkout -b feature/add_git_command github/feature/add_git_command
  8. 编辑index.html:vi index.html
  9. 添加到暂存区:git add index.html
  10. 提交信息:git commit -m’Add git command index’
  11. 切换目录修改readme.md:vim …/git_learning_02/readme.md
  12. 提交到暂存区:git add -u
  13. 提交信息:git commit -m’fix readme’
  14. 切换到git_leanring:cd …/git_learning
  15. 提交到远端:git push github
  16. 拉去远端分支:git fetch
  17. 合并分支:git merge github/feature/add_git_command
  18. 再次提交:git push github

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

不同人修改了同文件的不同区域

  1. 修改两个仓库中同一个文件的不同区域:vim index.html
  2. 分别提交:git commit -am’fix index’
  3. git_learning 提交到远端:git push github
  4. 切换到git_learning_02:cd …/git_leatning_02
  5. 拉取远端分支:git fetch
  6. 合并远端分支再次提交:git merge commitId、git push
    在这里插入图片描述

不同人修改了同文件的同一区域

  1. 两个工作区同时修改index.html的同一区域:vim index.html
  2. 切换到git_learning提交到本地仓库:git commit -am’Add stash and log commands’
  3. 提交到远端仓库:git push github
  4. 切换到git_learning_02并提交到本地仓库:cd …/git_learning_02、git commit -am’Add branch and pull’
  5. 提交远程仓库:git push
  6. 报错解决方案:git pull
  7. 合并远端分支:git merge 27b22e1
  8. 编辑冲突信息:vim index.html
  9. 提交到本地仓库:git commit -am’Add 4 commands of index’
  10. 提交到远端仓库:git push
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

同时变更了文件名和文件内容如何处理

  1. git_learning_02修改文件名:git mv index.html index.htm
  2. git_learning修改内容:vim index.html
  3. git_learning_02提交信息到本地仓库:git commit -am’mv index.html to index.htm’
  4. 提交到远程仓库:git push
  5. git_learning提交到远程仓库:git push github
  6. 从远端拉去最信息:git pull
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

把同一文件改成了不同的文件名如何处理

  1. 修改git_learning仓库中index.htm为index2.html:git rm index.htm index2.htm
  2. 提交到本地仓库:git commit -am’mv index to index2’
  3. 提交到远端仓库:git push
  4. 修改git_learning仓库中index.htm为index1.html:git rm index.htm index1.htm
  5. 提交到本地仓库:git commit -am’mv index to index1’
  6. 提交到远端仓库:git push
    出现文件冲突, 解决方案
  7. 拉取远端最新内容:git push
  8. 查看当前仓库文件:ls -al
  9. 比较冲突文件是否有差异:diff index1.htm index2.htm
  10. 删除冲突文件:git rm index2.htm index.htm
  11. 查看文件状态:git status
  12. 提交信息到本地仓库:git commit -am ‘Decide index to index1’
  13. 提交到远端仓库:git push github(远端分支名字默认为origin)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

禁止向集成分支执行push -f操作

  1. 版本回退:git reset --hard commitId
  2. 强制更新:git push origin feature/add_git_command
    禁止向集成分支执行变更历史的操作

GitHub核心功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值