查看提交日志信息
- git log -n4(显示最近提交次数) --oneline --all --graph
- 创建并切换分支
git checkout -b test(分支名) - 查看分支
git branch -v - 修改文件名
git mv - git日志工具
gitk
.git目录说明
-
HEAD 指向当前分支的引用
-
config保存本地仓库的配置信息
-
refs 中的heads和tag
- heads信息
- tags目录文件存放标签信
git cat-file -t/-p 1cal1924
参数说明-t:查看类型;-p:查看内容
- heads信息
-
objects目录对象类型blog、tree、commit
commit、tree和blob三个对象之间的关系
一次commit会产生多少tree/blog
- 新建仓库: git init swatch_git_objects
- 进入初始化仓库:cd swatch_git_objects
- 创建文件夹并进入:mkdir doc cd doc
- 创建文件并写入内容helloecho “hello,world” readme
- 添加到仓库:git add doc
- 提交:git commit -m “add remede”
- 查看.git/objects下生成的对象:find .git/objects -type -f
- 分别查看对象类型及内容:git cat-file -t/-p id号
分离头指针情况下的注意事项
- head 指向某个commit git checkout ee69111
- 修改文件:vi nacos/config/application.properties
- 提交文件:git commit -am “application file”
- 切换分支:git checkout master
- 分离指针文件并未关联任何文件
- 查看git 提交信息:gitk -all
- 创建新的分支关联commit:git branch fix_application ee69111
进一步理解HEAD和branch
- 基于fix_application创建fix_readme分支:git checkout -b fix_readme fix_application
- 查看切换分支与HEAD之间的关系:cat .git/HEAD
- 比较两次提交的不同:git diff commitId1 commitId2/head head^(代表head父亲)/head head~2(head爷爷)
- git diff 退出 q+enter键
怎么删除不需要的分支?
- 删除分支:git branch -d 分支名称
- 删除分支:git branch -D 分支名称
修改commit的message
- 对最近一次提交commit的message做变更:git commit --amend
- 修改老旧commit的message
- git rebase -i commitId的父id
- 修改提交commitId的关键字如:pick、reword、edit、fixup、exec
- 怎样把连续的多个commit整理成一个
- 找到要修改的最前一个要修改commitId的上一个commitId
git rebase -i commitId(的上一个) - 将几个commitId的前面的关键字改为s
- 把间隔的几个commit整理成1个
- 找到间隔commit最前面一个的父commitId: git rebase -i commitId
- 最前面添加父pick commitId:pick commitId
- 将间隔几个要修的的commit移动到父commitId后
- 前面的pick改为s
比较暂存区、HEAD、工作区所含文件的差异
- 比较暂存区和HEAD的差异:git diff --cached
- 比较暂存区和工作区的差异:
- 比较所有文件:git diff
- 比较指定文件:git diff – fileName
- 暂存区恢复成和HEAD一样内容:git reset head
- 工作区的文件恢复为和暂存区一样:git checkout – fileName
- 取消暂存区部分文件的更改:git reset head – fileName
消除最近的几次提交
- 回退到某一版本的commit:git reset --head commitId
- 看看不同提交的指定文件的差异:git diff master temp – fileName
- 正确删除文件的方法:git rm fileName
- 开发中临时加塞了紧急任务
- 将任务放入存放起来: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仓库备份到本地
- 哑协议备份:git clone --bare /f/git/git_learning/.git ya.git
- 智能协议备份:git clone --bare file:///git/git_learning/.git zhineng.git
- 添加远端协议:git remote add /f/git/git_learning/.git ya.git
- 将分支内容推向远端:git push --set-upstream zhineng master(分支名字)
将GitHub配置公私钥匙
- 查看本地是否有公私钥匙:ls ~/.ssh
- 生成公私钥匙:ssh-keygen -t rsa -b 4096 -C “your_email@example.com”
- 将本地公钥匙拷贝到GitHub
本地仓库同步到GitHub
- 添加远端仓库:git remote add github git@github.com:dreamingyin/git_learning.git
- 查看远程分支:git remote -v
- 推送所有的内容:git push github --all
- 拉取远端master的分支内容: git fetch github master
- 合并远端master:git merge github/master
- 允许没有任何管理关系的master合并: git merge --allow-unrelated-histories github/master
- 向master分支推送内容:git push github master
不同人修改了不同文件
- 克隆分支:git clone git@github.com:dreamingyin/git_learning.git git_leanring_02
- 配置本仓库的用户名、邮箱:git config --local user.name ‘steven’、git config --local user.email ‘haoyeyin@gmail.com’
- 查看本仓库邮箱、用户名配置情况:git config --local --list
- 基于远端的分支创建新分支:git checkout -b feature/add_git_command origin/feature/add_git_command
- 切换新的仓库:cd …/git_learning
- 拉取远端分支:git fetch github(远端分支名称)
- 基于远端分支创建本地分支:git checkout -b feature/add_git_command github/feature/add_git_command
- 编辑index.html:vi index.html
- 添加到暂存区:git add index.html
- 提交信息:git commit -m’Add git command index’
- 切换目录修改readme.md:vim …/git_learning_02/readme.md
- 提交到暂存区:git add -u
- 提交信息:git commit -m’fix readme’
- 切换到git_leanring:cd …/git_learning
- 提交到远端:git push github
- 拉去远端分支:git fetch
- 合并分支:git merge github/feature/add_git_command
- 再次提交:git push github
不同人修改了同文件的不同区域
- 修改两个仓库中同一个文件的不同区域:vim index.html
- 分别提交:git commit -am’fix index’
- git_learning 提交到远端:git push github
- 切换到git_learning_02:cd …/git_leatning_02
- 拉取远端分支:git fetch
- 合并远端分支再次提交:git merge commitId、git push
不同人修改了同文件的同一区域
- 两个工作区同时修改index.html的同一区域:vim index.html
- 切换到git_learning提交到本地仓库:git commit -am’Add stash and log commands’
- 提交到远端仓库:git push github
- 切换到git_learning_02并提交到本地仓库:cd …/git_learning_02、git commit -am’Add branch and pull’
- 提交远程仓库:git push
- 报错解决方案:git pull
- 合并远端分支:git merge 27b22e1
- 编辑冲突信息:vim index.html
- 提交到本地仓库:git commit -am’Add 4 commands of index’
- 提交到远端仓库:git push
同时变更了文件名和文件内容如何处理
- git_learning_02修改文件名:git mv index.html index.htm
- git_learning修改内容:vim index.html
- git_learning_02提交信息到本地仓库:git commit -am’mv index.html to index.htm’
- 提交到远程仓库:git push
- git_learning提交到远程仓库:git push github
- 从远端拉去最信息:git pull
把同一文件改成了不同的文件名如何处理
- 修改git_learning仓库中index.htm为index2.html:git rm index.htm index2.htm
- 提交到本地仓库:git commit -am’mv index to index2’
- 提交到远端仓库:git push
- 修改git_learning仓库中index.htm为index1.html:git rm index.htm index1.htm
- 提交到本地仓库:git commit -am’mv index to index1’
- 提交到远端仓库:git push
出现文件冲突, 解决方案 - 拉取远端最新内容:git push
- 查看当前仓库文件:ls -al
- 比较冲突文件是否有差异:diff index1.htm index2.htm
- 删除冲突文件:git rm index2.htm index.htm
- 查看文件状态:git status
- 提交信息到本地仓库:git commit -am ‘Decide index to index1’
- 提交到远端仓库:git push github(远端分支名字默认为origin)
禁止向集成分支执行push -f操作
- 版本回退:git reset --hard commitId
- 强制更新:git push origin feature/add_git_command
禁止向集成分支执行变更历史的操作