git
- 分布式版本控制系统
- 底层C语言
- 按元数据方式存储,采用SHA-1哈希算法(内容完整性好)
- 结合GitHub,为开源项目免费提供Git存储
git config --global user.name "xxx" git config --global user.email "xxx@xxx.com"
Git 的工作就是创建和保存项目的快照及与之后的快照进行对比。
仓库,repository,git中最重要的概念。
存储概念及分支管理
- 工作区
- 暂存区:即stage,.git/index
- 版本库:.git/
Git提交代码流程: 工作区->暂存区->本地仓库->远程仓库
命令备忘
- git config --list:查看git配置
- git init dir-name:在dir-name目录下初始化.git目录
- git add:本地改动写入缓存区
- git commit:缓存区内容添加到仓库(-m "注释",-a 自动提交本地修改)
- git reset HEAD:取消已缓存的内容
- git status -s:查看项目当前状态,即与上次快照对比
- git diff:查看执行 git status 的结果的详细信息(显示已写入缓存与已修改但尚未写入缓存的改动的区别)
/*diff 命令*/ 尚未缓存的改动:git diff 查看已缓存的改动: git diff --cached 查看已缓存的与未缓存的所有改动:git diff HEAD 显示摘要而非整个 diff:git diff --stat
- git clone <repo> [<directory>]:克隆到指定目录
/*几种等效的clone命令*/ git clone http://github.com/CosmosHua/locate new git clone http://github.com/CosmosHua/locate.git new git clone git://github.com/CosmosHua/locate new git clone git://github.com/CosmosHua/locate.git new
- git mv:移动或重命名
- git rm:文件删除
git rm <file>:删除本地文件 git rm -f <file>:同时删除暂存区的文件 git rm --cached <file>:从暂存区删除,但本地保留
注意,git checkout慎用。
SourceTree
SourceTree回滚提交操作步骤
[1]. 已提交至暂存区未提交至远程分支情况:参考
- 选中目的回滚到的提交记录,右键-->将所在分支重置到这次提交->强行合并
[2]. 已提交至远程分支情况
- 需开启强制推送权限: Git --> Enable Force Push
- 选中历史某次提交,右键 重置当前分支到此次提交 ,选择 强行合并
- 选中最新一次提交,即待回滚的错误提交,右键 重置当前分支到此次提交 ,选择 软合并
- 正常填写comment并提交即可
注意,回退指的是内容的回退,而不是提交记录的回退, 具体参考。
问题解决
[1]. 在 SourceTree 客户端克隆码云分支时,遇到
Cloning into '本地路径xxx'... fatal: The remote end hung up unexpectedly error: RPC failed; curl 18 transfer closed with outstanding read data remaining
方法1:在userusername.gitconfig文件中新增配置
[http] postBuffer = 524288000
或直接执行:git config http.postBuffer 524288000
方法2:SourceTree 高级设置-克隆深度,改成非0
参考:https://blog.csdn.net/PHY1161460191/article/details/88656003
[2]. 提交时comment格式有误,需要修改Git的提交comment
在项目的当前.git目录右键启动git bash
- git commit --amend -m "新的comment" - git log 查看提交历史
[3]. sourcetree客户端卡顿情况
在sourcetree配置中忽略文件: */package-lock.json
svn
- 集中式版本控制系统
- 按文件存储
- 拥有全局的版本号