|
@@ -0,0 +1,172 @@ |
|
|
|
|
|
# GIT |
|
|
|
|
|
|
|
|
|
|
|
### Git的概念 |
|
|
|
|
|
|
|
|
|
|
|
开源的分布式版本控制系统管理 |
|
|
|
|
|
|
|
|
|
|
|
### 三个区域的概念 |
|
|
|
|
|
|
|
|
|
|
|
**工作区**:在电脑中可以看到的目录 |
|
|
|
|
|
|
|
|
|
|
|
**暂存区**:临时存储区域,保留文件快照,提交之前保存在此。 |
|
|
|
|
|
|
|
|
|
|
|
~~~ |
|
|
|
|
|
git add filename # 将单个文件添加到暂存区 |
|
|
|
|
|
git add . # 将工作区中的所有修改添加到暂存区 |
|
|
|
|
|
git status # 查看哪些文件在暂存区中 |
|
|
|
|
|
git commit -m "name" |
|
|
|
|
|
~~~ |
|
|
|
|
|
|
|
|
|
|
|
**版本库**:每次提交都会保存新的快照,不可变。存放 在.git目录下index文件 |
|
|
|
|
|
|
|
|
|
|
|
### 仓库的概念 |
|
|
|
|
|
|
|
|
|
|
|
* 存放所有文件和历史记录 |
|
|
|
|
|
|
|
|
|
|
|
### 节点的概念 |
|
|
|
|
|
|
|
|
|
|
|
- (提交commit)是仓库中项目某个事件点快照,生成40位哈希值 |
|
|
|
|
|
|
|
|
|
|
|
### 分支的概念 |
|
|
|
|
|
|
|
|
|
|
|
- 开发过程中独立的分流线,本质是一个指向某个可提交的移动指针 |
|
|
|
|
|
- 通过创建分支实现功能开发,然后进行合并 |
|
|
|
|
|
|
|
|
|
|
|
**最好不要在主分支上直接操作** |
|
|
|
|
|
|
|
|
|
|
|
~~~ bash |
|
|
|
|
|
git branch name #创建分支 |
|
|
|
|
|
git checkout name #切换分支 |
|
|
|
|
|
或/ |
|
|
|
|
|
git switch name |
|
|
|
|
|
|
|
|
|
|
|
git merge new_name #合并分支 |
|
|
|
|
|
git rebase new_name #衍合并分支 |
|
|
|
|
|
~~~ |
|
|
|
|
|
|
|
|
|
|
|
#### marge |
|
|
|
|
|
|
|
|
|
|
|
1. 将目标分支的所有提交**打包为单个新的合并**提交 |
|
|
|
|
|
2. 保留原始分支的完整历史记录 |
|
|
|
|
|
3. 创建**新的合并节点**(commit),这个节点有两个父节点 |
|
|
|
|
|
|
|
|
|
|
|
#### rebase |
|
|
|
|
|
|
|
|
|
|
|
1. 将当前分支的所有提交**按顺序重演**到目标分支的最新提交之后 |
|
|
|
|
|
2. **修改提交历史**:创建全新的提交序列 |
|
|
|
|
|
3. 不会产生合并提交节点 |
|
|
|
|
|
|
|
|
|
|
|
* 只对**本地**未推送的分支使用rebase |
|
|
|
|
|
* 个人分支与主分支同步 |
|
|
|
|
|
|
|
|
|
|
|
出现冲突选择保留与剔除 |
|
|
|
|
|
|
|
|
|
|
|
#### 分支操作 |
|
|
|
|
|
|
|
|
|
|
|
~~~ bash |
|
|
|
|
|
#相关操作 |
|
|
|
|
|
git branch #查看分支 |
|
|
|
|
|
git branch name #创建分支 |
|
|
|
|
|
git checkout name #切换分支 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 设置上游分支(第一次推送时) |
|
|
|
|
|
git push -u origin 分支名 |
|
|
|
|
|
|
|
|
|
|
|
# 之后就可以简化命令 |
|
|
|
|
|
git pull |
|
|
|
|
|
git push |
|
|
|
|
|
|
|
|
|
|
|
#再次此之前贮藏暂存文件防止冲突 |
|
|
|
|
|
git stash |
|
|
|
|
|
~~~ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 其他 |
|
|
|
|
|
|
|
|
|
|
|
#### 回退版本 |
|
|
|
|
|
|
|
|
|
|
|
##### |
|
|
|
|
|
|
|
|
|
|
|
~~~ bash |
|
|
|
|
|
git status |
|
|
|
|
|
|
|
|
|
|
|
git status 哈希值 #回退节点 |
|
|
|
|
|
~~~ |
|
|
|
|
|
|
|
|
|
|
|
#### 贮藏(Stash)更改(拉取更新时使用) |
|
|
|
|
|
|
|
|
|
|
|
~~~ bash |
|
|
|
|
|
# 贮藏所有修改(包括未跟踪文件) |
|
|
|
|
|
git stash -u |
|
|
|
|
|
|
|
|
|
|
|
# 查看贮藏列表 |
|
|
|
|
|
git stash list |
|
|
|
|
|
|
|
|
|
|
|
# 应用最近贮藏(保留贮藏记录) |
|
|
|
|
|
git stash apply |
|
|
|
|
|
# 应用指定贮藏 |
|
|
|
|
|
git stash apply stash@{1} |
|
|
|
|
|
|
|
|
|
|
|
# 应用并删除贮藏(常用) |
|
|
|
|
|
git stash pop |
|
|
|
|
|
|
|
|
|
|
|
# 删除贮藏 |
|
|
|
|
|
git stash drop stash@{0} |
|
|
|
|
|
~~~ |
|
|
|
|
|
|
|
|
|
|
|
#### 编写忽略文件(.gitignore) |
|
|
|
|
|
|
|
|
|
|
|
~~~ bash |
|
|
|
|
|
# 忽略单个文件 |
|
|
|
|
|
config.ini |
|
|
|
|
|
|
|
|
|
|
|
# 忽略整个目录 |
|
|
|
|
|
.vscode/ |
|
|
|
|
|
node_modules/ |
|
|
|
|
|
|
|
|
|
|
|
# 忽略特定类型文件 |
|
|
|
|
|
*.log |
|
|
|
|
|
*.tmp |
|
|
|
|
|
|
|
|
|
|
|
# 忽略特定文件但包含例外 |
|
|
|
|
|
!important.log |
|
|
|
|
|
~~~ |
|
|
|
|
|
|
|
|
|
|
|
#### 标签 |
|
|
|
|
|
|
|
|
|
|
|
~~~ bash |
|
|
|
|
|
# 创建轻量标签(无注释) |
|
|
|
|
|
git tag v1.0.0 |
|
|
|
|
|
#删除标签 |
|
|
|
|
|
git tag -d v1.0.0 |
|
|
|
|
|
|
|
|
|
|
|
# 创建附注标签(推荐) |
|
|
|
|
|
git tag -a v1.2.0 -m "稳定版本发布" |
|
|
|
|
|
|
|
|
|
|
|
# 为历史提交打标签 |
|
|
|
|
|
git tag -a v0.9.0 commit_hash -m "历史版本" |
|
|
|
|
|
|
|
|
|
|
|
# 推送标签到远程 |
|
|
|
|
|
git push origin --tags |
|
|
|
|
|
~~~ |
|
|
|
|
|
|
|
|
|
|
|
### 命令表 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
## sourceTree |
|
|
|
|
|
|
|
|
|
|
|
概念:图形化操作显示 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<img src="pictures/图片2.png" alt="图示" style="zoom:60%;" /> |
|
|
|
|
|
|
|
|
|
|
|
#### 标签 |
|
|
|
|
|
|
|
|
|
|
|
可以进行版本发布,压缩下载 |
|
|
|
|
|
|
|
|
|
|
|
) |
|
|
|
|
|
|