是一个软件管理器,分布式,有一个本地仓库,中心服务器,代码提交到本地仓库再推送到中心服务器上,保障工作可以一直是正常执行,即使中心服务器挂
git init 之后会产生一个.git自己的本地仓库,一是与中心服务器产生连接,更新最新代码到自己的git仓库,二是将一个已经存在的项目克隆到自己的木灵成为自己的git仓库 config就是配置文件 有中心服务器和分支信息,logs目录是相关操作产生的日志,日志是我们操作的唯一凭证 HEDA文件指向当前的分支 object存储的是所有的数据,也就是快照,refs目录里存贮的是数据提交对象的指针
远程仓库 中心服务器 本地仓库 暂存区 工作目录 git init 暂存区,和本地仓库 存数据
git所存储的是一系列的文件快照,,发现哪个文件快照有变化,就会提示你需要添加到暂存区,或是提交到仓库,来保证工作目录是干净的 被跟踪的,未被跟踪的 git status
存储的是key-value键值对,根据key来查找value 根据指针寻址 commit tree bolb
blob对应的就是文件快照种发生变化的文件内容 tree记录了文件快照中各个目录和文件的结构关系 指向了被跟踪的快照 commit 记录了每次提交到本地仓库的文件快照 tree commit 每次提交都有一个commit对象来记录 有一个指针指向上一次提交的commit对象 形成一个链表 可以找到对应版本并恢复 HEAD对象指向的是最后一个commit对象 即使最后一个版本
git add将项目从工作目录添加到缓存区 git rm删除 git commit - m"一些说明信息" 将项目从缓存区提交到本地仓库 git rm --cached 删除 git commit -a将项目从工作目录提交到本地仓库 git push将项目从本地仓库提交到远程仓库 git pull / git fetch 从远程仓库转移到本地仓库 git checkout 从缓存区下载到工作目录 git checkout HEAD 从本地仓库下载到工作目录 git diff 比较版本,缓存区与工作目录之间的比较 git diff --cached 比较版本 本地仓库与缓存区之间的比较 git diff HEAD比较本地仓库与工作目录的不同
git status 可以指引该做什么 工作目录是否干净 git log 列出操作产生的日志 还有提交后的commit的对象的id git show +对象名
创建分支 git branch developer(分支名) git branch git checkout master切换到主分支 git marge developer 合并分支
git branch -D dedveloper 将分支删除 git branch查看分支
主分支 分布重大版本 日常开发 Developer 临时性分支 功能 feature 预发布 release 修补 bug 可以修建一个自己的分支 git branch -a -是详细的意思 全部展示出来
git branch -a查看已有分支 git checkout -b <:>切换到已有分支 git branch <:> 创建分支 git checkout <:> 切换分支 git checkout -b <:> 创建并切换分支 { git checkout master 先切换到master分支 git merge fenzhi 合并分支 } 需要先切换然后才能合并 git branch -d <:> 删除本地分支 git push origin --delete <> 删除远程分支 git branch <分支名称> <提交号> git log可以查出提交号 git log --grapch 查看分支图 git log --graph --pretty=哦呢line-- abbrev-commit 查看简明的分支图 git branch -m <当前分支名> <新的分支名> 修改名字
stash
git stash 保存已写的代码 保存未commit的代码 git stash save "备注的内容" git stash list 理出stash中的所有内容 git stash clear 删除stash的所有记录 git stash apply 应用最近一次的stash git stash pop 应用最近一次的stash 随后删除该记录 git stash drop 删除最近的一次stash git stash apply stash@{1} 应用第二条记录
reset--soft
git rest --soft HEAD^ 恢复最近一次commit git reset --soft commit号 直接rest该版本号之后的所有commit
cherry-pick
git cherry-pick 首先需要获得想要复制的commitHash 然后切换分支,执行命令 进行复制 git cherry-pick 多个版本号,,一次性转移多个提交 git cherry-pick commmit^1..commit2 一个区间的commit都应用到当前分支,和上面的命令类似 git cherry-pick --abort 在代码冲突后,放弃或者退出流程 git cherry-pick --quit 退出cherry-pick
revert
git revert 就是撤回某一个特定的提交 普通提交 git revert -m 1 <comitHash> 合并提交是两条分支的交集节点,而git不知道撤销的是哪一分支,所以会报错,-m后面加上1 就是保留主分支的commit
reflog
rest到b 就 git reset --hard (b commitHah) git reflog 找到全局日志 即找该commit的Hash git reset --hard commitHah 即可恢复该commit