
1 、集中式VCS的特点
- 有集中的版本管理服务器
- 具备文件版本管理和分支管理能力
- 集成效率有明显地提高
- 客户端必须时刻和服务器相连
2、分布式VCS特点
- 服务端和客户端都有完整的版本库
- 脱离服务端,客户端照样可以管理版本
-
查看历史和版本比较等多数操作都不需要访问服务器,比集中式VCS更能提高版本管理效率
image.png
3、Git特点
- 最有的存储能力
- 非凡的性能
- 开源
- 备份简单
- 可离线操作
- 易定制工作流程
4、Git安装
https://git-scm.com官网下载,傻瓜式安装
单人本地
三个区(工作区,暂存区,版本管理区)
三个状态 ()
单人远程
多人协作
5、Git的简单配置
$ git config --global user.name "John Doe"//配置用户名
$ git config --global user.email johndoe@example.com//配置邮箱
$ git config --list//查询配置项
$ git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"//配置编辑器的命令
6、Git起步
git help//查找git命令的用法
git help --web log//通过浏览器查看某个命令的详细说明
git fetch -h //查找子命令的用法
- 1 初始化git仓库
git init//初始化一个空目录为git仓库,或者将一个已有项目改为git仓库
- 2 获取远端仓库
git clone 仓库地址(既可以是远端的,也可以是本地的)
git remote -v 查看克隆仓库的源仓库信息
- 3 添加忽略文件(定义某些文件不必被git管理)
在工作区更目录下新建.gitignore文件,如下方:
image.png
- 4 修改文件名
git mv a b//将a文件重命名为b
- 5 .git下的HEAD与config
cat .git/HEAD//树的头信息
cat .git/config//git仓库配置文件,可编辑
git config --local --list//查看本地配置信息
git config --local user.name //查看用户名
git config --local user.name xxxx//设置用户名
- 6 .git目录下究竟存放了些什么
//HEAD目录下存放的refs里的引用
cd refs
cd ./heads
cat master
git cat-file -t 哈希//查看类型
git cat-file -p 哈希//查看文件内容
//objects里存放真正的文件快照
- 7 git删除一个文件
git rm file.xx//彻底从git树上删除文件,无法检出,如果手动删除的话,使用git checkout -- file还可以检出该文件
- 8 .git目录中文件的查看
git cat-file -t 哈希值//查看对应哈希值的类型
git cat-file -p 哈希值//查看对应哈希值的内容
- 9 一个commit究竟包含哪些内容
git log//查看每个commit的哈希
git cat-file -p 哈希//查看提交的内容
//每个commit对应着一个tree
//该tree里存放文件快照或者嵌套的tree
//暂存区有了修改以后查看objects目录下的内容
find .git/object -type f
- 10 分离头指针
//基于某个commit就分离了头指针,此后的修改就不基于分支了
git checkout (commit哈希)
//分离头指针后再切换分支,刚才做的修改会被丢掉
//除非基于新提交再做分支
git branch 分支名 提交哈希
- 11 集中回退或撤销的骚操作
git commit --amend --allow-empty//覆盖前一次的提交的message(偷偷提交)
git reset HEAD filename//取消某文件的暂存
git checkout -- filename//从版本区检出某文件
- 12 修改提交说明
//修改最近一次的提交说明
git commit --amend //覆盖前一次的提交的message
//修改老的commit的提交说明(只推荐在未被合并到其他分支的分支进行)
git rebase -i 哈希//(待变提交的父提交的哈希id)
//两次交互
- 13 将多个commit合并为一个
git rebase -i 哈希//父提交 然后选择s选项
- 14 重命名文件*
git mv filenameA filenameB//将文件A 重命名为文件B
- 15 查看提交历史
git log//详细罗列所有的提交历史
git log --oneline //将提交历史中的节点浓缩到一行
git log -n//数字 查看最近几次的提交
git log --all //查看所有分支的提交历史
git log --all --graph //查看所有分支的提交历史并且以简略图画区分不同分支的提交历史
- 16 图形界面gitk
gitk//会弹出图形界面详细罗列当前仓库的版本情况且可以做相应操作

- 17 git的三个工作区
.git目录中的objects目录存放着每次提交的文件
查看顺序如下:
(1)git cat-file -p ed13a716
(2)git cat-file -p abab72caf
(3)git cat-file -p 52cfcc97
一个文件对应一个blob对象
image.png


- 18 比较缓存区与仓库异同
git diff --cached
- 19 比较工作区与暂存区
git diff
- 20 取消暂存区部分文件的修改
git reset HEAD -- url
- 21 删除提交
git reset --hard 父提交哈希id
- 22 创建分支*
git checkout -b branchname//创建一个叫branchname的分支
git checkout -b branchname [头指针] //从某个commit节点创建一个叫做branchname的分支
git branch -b 分支 源/分支 //基于远端的某分支创建一个本地分支
git branch -v //查看本地分支
git branch -va //查看本地和远端所有分支
git merge 源/分支 //将某源上的某分支合并到当前分支
- 23 远程分支
git clone //将远程克隆到本地
git push [别名(origin) 分支(master)]//将本地推送到远程
git pull [别名(origin) 分支(master)]//将远程拉取到本地并合并
git fetch <shortname|origin>//从远程仓库拉取(但不会自动合并到你的分支)
git pull <shortname|origin>//从远程仓库拉取并自动合并到你的仓库(保证是fast-words的)
git clone url//从远程仓库克隆内容,Git会给你克隆的仓库服务器一个默认的名字origin
git remote -v//查看git的远程仓库
git remote add <shortname> <url>//手动指定一个远程仓库
//为确保远程和本地提交内容一致,先git pull 再git push
- 24 暂存工作区未完成工作
//如果工作区中有一些未完成的修改,不能commit,也不值得add,怎么办?
git stash//暂存工作区中不成熟的修改
git stash apply//恢复暂存的未完成工作
git stash pop//恢复工作区中暂存的不成熟修改(并清空stash List)
- 25 将git仓库备份到本地
git clone
git remote
- 26 配置github账号的ssh
https://docs.github.com/cn/github/authenticating-to-github/connecting-to-github-with-ssh
- 27 将本地仓库同步到远端
git remote -v//查看和本地仓库链接的远程仓库
git remote add 别名 仓库地址
git fetch 源 分支//将远端对应源的对应分支拉到本地
- 28 图形界面
gitk
gitk --all
- 29 合并冲突
(1)快速合并
(2)不同人修改不同文件
(3)不同人修改了不同文件的不同地方
(4)不同人修改了不同文件的相同地方
(5)变更文件名
网友评论