一、版本控制
备份和记录
1)本地版本控制系统
优点:
简单
2)集中化版本控制系统
优点:
解决了开发协同问题
缺点:
单点故障
3)分布式版本控制系统
Git、Mercurial、Bazaar以及Darcs等
二、Git文件的三种状态与工作模式
状态 | 描述 |
---|
已提交(committed) | 已提交表示数据已经安全的保存在本地数据库中 |
已修改(modified) | 已修改表示修改了文件,但还没保存到数据库中 |
已暂存(staged) | 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中 |
分类 | 描述 |
---|
工作区 | 简单的理解为在电脑里能看到的目录,比如自己创建 的本地项目目录 |
暂存去 | Git的版本库里存了很多东西,其中最重要的就是称为stage (或者叫index)的暂存区,还有Git自动创建的第一个分支master,以及指向master的一个指针叫HEAD |
Git仓库 | 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库 |
基本的Git工作流程描述:
在工作区中修改某些文件。
对修改后的文件进行快照,然后添加到暂存区。
提交更新,将保存在暂存区域的文件快照永久转储到Git仓库中
三、创建版本库并提交文件
选定文件夹
打开git,输入git init进行初始化
git add xxx.txt
get status
git commit '第一次提交'
git commit -m '第一次提交'
git commit -am xxx.txt
git log
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/21a7908f1e7bdf162a4285ed36cc205a.png)
四、文件修改、提交、移除、回退、删除
git diff HEAD -- xxx.txt 变动前后的区别
git restore ---staged xxx.txt 从暂存去移除
git reset HEAD xxx.txt 从暂存去移除,只取消上一次的操作
git reset --hard HEAD^ 回退到上一个版本
git reset --hard HEAD~n 回退n个版本
git reset --hard xxx(唯一标识)回退到具体的某个版本
git reflog 查看所有版本日志
git ls-files 查看git仓库的文件
git commit -m '删除xxx.txt' 删除仓库文件
git rm xxx.txt 删除仓库文件和本地仓库文件
五、远程仓库(GitHub 码云)
git clone https://xxx.xxx.xxx//xxxx 下载
上传到远程仓库:
1. 需要有远程仓库
2. 绑定远程仓库:git remote add origin ******(远程仓库地址)
3. 推到远程主干:git push -u origin master
六、Git分支操作
1)本地分支操作(创建、合并、重命名与删除)
命令 | 描述 |
---|
git branch | 查看当前分支 |
git checkout branch | 切换到指定分支 |
git checkout -b new_branch | 新建分支并切换到新建分支 |
git branch -d branch | 删除指定分支 |
git branch | 查看所有分支,并且*号标记当前所在分支 |
git merge branch | 合并分支 |
git branch -m/-M oldbranch new branch | 重命名分支,如果newbranch名字分支已经存在,则需要使用-M强制重命名,否则,使用-m进行重命名 |
2)远程分支操作(Push和Pull操作)
命令 | 描述 |
---|
git branch -a | 查看本地与远程分支 |
git push origin branch_name | 推送本地分支到远程 |
git push origin :remote_branch | 删除远程分支(本地分支还在保留) |
get checkout -b local_branch origin/remote_branch | 拉取远程指定分支并在本地创建分支 |
3)分支操作冲突出现与解决
1. 本地分支冲突
按需解决
2. 多人协同操作冲突
谁发现冲突谁解决
先拉取,再推送
七、标签管理
命令 | 描述 |
---|
git tag tag_name | 新建标签,默认为HEAD |
git tag tag_name xxx(唯一标识) | 给指定操作新建标签 |
get tag -a tag_name -m ‘xxx’ | 添加标签并指定标签描述信息 |
get tag -a tag_name -m ‘xxx’ xxx | |
git tag | 查看所有标签 |
git tag -d tag_name | 删除一个本地标签 |
git push origin tag_name | 推送本地标签到远程 |
git push origin --tags | 推送全部未推送过的本地标签到远程 |
git push origin :refs/tags/tag_name | 删除一个远程标签(保留本地标签) |