# git_command_summary **Repository Path**: yaolifeng0529/git_summary ## Basic Information - **Project Name**: git_command_summary - **Description**: Git 命令简易网页版查询工具。(仅供个人学习使用!!!) - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: https://yaolifeng0529.gitee.io/git_summary/ - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-11-23 - **Last Updated**: 2025-05-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### `Git Cheat Sheet` ### `Git 工作流程?` [Git 工作流程](./assets/git_flow_chart.png) - 工作区分布: - `Workspace`: 工作区 - `Index/Stage`:暂存区 - `Repository`: 仓库区(或本地仓库) - `Remote`:远程仓库 - `Workspace`: 工作区:本地项目存放文件的位置 - `Index/Stage`:暂存区:暂时存放文件的地方,通过 `add` 命令将工作区中的文件添加到缓冲区 - `Repository`: 仓库区(或本地仓库): 使用 `commit` 命令将暂存的缓冲区的文件添加到本地仓库 - `Remote`:远程仓库:使用 `push` 命令将本地仓库的最新修改上传到远程仓库。例如 :`github、gitee、gitea、bitbucket、gitlab、GitCafe 等等` ### `Git 常用命令` [Git 常用命令](./assets/git_command.webp) - **`add`**:将工作区修改的内容提交到暂存区,由 git 管理。 [git add command](./assets/git_add_command.png) | 命令 | 描述 | | :-----------------: | :------------------------------: | | **git add .** | 添加当前目录的所有文件到暂存区 | | **git add [dir]** | 添加指定目录到暂存区,包括子目录 | | **git add [file1]** | 添加指定文件到暂存区 | - **`commit`**:将暂存区的内容提交到本地仓库,并使得当前分支 HEAD 向后移动一个提交点。 [git commit command](./assets/git_commit_command.png) | 命令 | 描述 | | :---------------------------------: | :---------------------------------------: | | **git commit -m [message]** | 提交暂存区到本地仓库,message 代表说明信息 | | **git commit [file1] -m [message]** | 提交暂存区的指定文件到本地仓库 | | **git commit --amend -m [message]** | 使用一次新的 commit,替代上一次提交 | - **`branch`**:分支,分支操作有:展示分支,切换分支,创建分支,删除分支 [Git branch command](./assets/git_branch_command.png) | 命令 | 描述 | | :--------------------------------------------: | :----------------------------------------: | | **git branch** | 列出所有本地分支 | | **git branch -r** | 列出所有远程分支 | | **git branch -a** | 列出所有本地分支和远程分支 | | **git branch [branch-name]** | 新建一个分支,但依然停留在当前分支 | | **git checkout -b [branch-name]** | 新建一个分支,并切换到该分支 | | **git branch --track [branch][remote-branch]** | 新建一个分支,与指定的远程分支建立追踪关系 | | **git checkout [branch-name]** | 切换到指定分支,并更新工作区 | | **git branch -d [branch-name]** | 删除分支 | | **git push origin --delete [branch-name]** | 删除远程分支 | | | - **`mergbe`**:把不同的分支合并起来 [Git branch command](./assets/git_merge_command.png) - 可能会出现 `confilct`,需要针对冲突情况,手动解决冲突,主要是因为两个用户修改了统一文件的同一块 区域 | 命令 | 描述 | | :--------------------: | :--------------------------------: | | **git fetch [remote]** | merge 之前先拉一下远程仓库最新代码 | | **git merge [branch]** | 合并指定分支到当前分支 | - **`reset`**:把当前分支指向另一个位置,并且相应的变动工作区和暂存区 [Git reset command](./assets/git_reset_command.png) | 命令 | 描述 | | :---------------------------: | :----------------------------------------------------: | | **git reset —soft [commit]** | 只改变提交点,暂存区和工作目录的内容都不改变 | | **git reset —mixed [commit]** | 改变提交点,同时改变暂存区的内容 | | **git reset —hard [commit]** | 暂存区、工作区的内容都会被修改到与提交点完全一致的状态 | | **git reset --hard HEAD** | 让工作区回到上次提交时的状态 | - **`revert`**: 用一个新提交来消除一个历史提交所做的任何修改 [Git revert command](./assets/git_revert_command.jpg) - **`revert 和 reset 的区别`** [Git revert or reset difference](./assets/git_revert_or_git_reset_difference.jpg) - git revert 是用一次新的 commit 来回滚之前的 commit,git reset 是直接删除指定的 commit。 - 在回滚这一操作上看,效果差不多。但是在日后继续 merge 以前的老版本时有区别。因为 git revert 是用 一次逆向的 commit“中和”之前的提交,因此日后合并老的 branch 时,导致这部分改变不会再次出现,减少 冲突。但是 git reset 是之间把某些 commit 在某个 branch 上删除,因而和老的 branch 再次 merge 时, 这些被回滚的 commit 应该还会被引入,产生很多冲突。关于这一点,不太理解的可以看这篇文章。 - git reset 是把 HEAD 向后移动了一下,而 git revert 是 HEAD 继续前进,只是新的 commit 的内容和要 revert 的内容正好相反,能够抵消要被 revert 的内容。 ### `文件暂存` [Git stash command](./assets/git_stash_command.webp) ### `分支命名` [Git branch manager](./assets/git_branch_manager.webp)