# 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 ~~~ ### 命令表 ![命令表](pictures/图片1.png) ## sourceTree 概念:图形化操作显示 图示 #### 标签 可以进行版本发布,压缩下载 ![](pictures/图片4.png))