svn
集中式管理,版本库放在中央服务器。
git
分布式版本控制系统,每个人的电脑就是完整的版本库。
Git工作流程
- 在工作目录中添加、修改文件
- 将需要进行版本管理的文件放入暂存区域
- 将暂存区域的文件提交到Git仓库
实战
- 建立文件夹
mkdir git_project
- 初始化
git init
输出
生成 .git 文件目录
- 编写说明文件
touch README.md
vim README.md
写入如下内容
This is a big project!
- 将README.md文件加人暂存区并提交到仓库
git add README. md # 加入暂存区
git commit -m "add a readme file" #提交到仓库
输出如下:
- 查看状态
git status
- MIT 版权协议
vim LICENS
内容如下:
Copyright (C) <year> <copyright holders>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- 此时再次查看状态
git status
加入暂存区git add LICENS
,后再次查看状态git status
:
此时可以使用git restore HEAD
移除上一步的暂存区:
再次重新提交licese文件
git add LICENS
git commit -m "add a licens file"
- 修改仓库中的文件
vim LICENS
使用git checkout -- LICENS
使用暂存区的文件把修改的文件覆盖掉。 - 修改仓库中的文件
vim LICENS
,使用git add LICENS
放入暂存区
此时再次修改vim LICENS
需要将修改后的文件再次add后commit
git add LICENS
git commit -m "add licens file"
- 查看历史提交
git log
- reset指令
git reset HEAD~ # ~表示上一个快照,~~上连个快照
git rest --mixed HEAD~
- 移动HEAD的指向,将其指向上一个快照
- 经HEAD移动后指向的快照回滚到暂存区域
git reset --soft HEAD~
- 移动HEAD的指向,将其指向上一个快照(相当于撤销一个commit指令)
git reset --hard HEAD~
- 移动HEAD的指向,将其指向上一个快照
- 经HEAD移动后指向的快照回滚到暂存区域
- 将暂存区域的文件还原到工作目录
- 回滚指定快照
git reset id号
- 回滚某个文件
git reset id号 文件名/路径
- diff 指令
新建项目
mkdir git_project2
cd git_project2
vim README.md #内容自己写
vim test.cpp #自定义
git add README.md test.cpp
git commit -m "word game"
修改README.md 和 test.cpp文件内容
使用 git diff
比较文件内容
使用 git diff 快照ID1 快照ID2
比较两个历史快照
-
修改最后一次提交,提交文件,但保留最后一次的提交说明
git commit --amend
修改提交说明 -
删除文件
git rm <file>
git reset --soft HEAD~
-
重命名文件
git mv <old_file> <new_file>
git branch <分支名称>
创建分支
git checkout <分支名称>
切换分支
- 使用
git checkout
可以进入匿名分支,在这里面可以进行任何操作,commit 后可以使用git checkout master
返回主分支,之前做的任何修改都不会被保存。