Repository(仓库): Git仓库是存储代码和版本历史的地方。它可以是本地仓库(位于本地计算机上)或远程仓库(位于网络上)。
Commit(提交): 提交是Git中的一个基本概念,表示对代码的一次更改。每个提交都有一个唯一的标识符(SHA哈希值)和相关的作者、日期、提交消息等信息。
Branch(分支): 分支是基于主分支(通常是"master"或"main")的独立开发路径。它允许团队成员在不干扰主线开发的情况下并行开发新功能、修复错误等。
Merge(合并): 合并是将两个不同的分支中的更改合并为一个新的提交的过程。它可以将一个分支的更改合并到另一个分支中。
Pull(拉取): 拉取是从远程仓库获取最新代码的过程。它会将远程仓库的更改合并到本地仓库中。
Push(推送): 推送是将本地仓库的更改上传到远程仓库的过程。它将本地的提交推送到远程仓库,使得其他开发人员可以访问和更新代码。
Remote(远程): 远程是指位于网络上的Git仓库,它可以是中央仓库或其他开发人员的仓库。常见的远程仓库是GitHub、GitLab和Bitbucket。
Clone(克隆): 克隆是指从远程仓库复制完整的代码库到本地计算机上,创建一个相同的仓库副本。
Fork(分叉): 分叉是在自己的GitHub账号下创建一个项目的副本,以便可以独立开发和修改代码,而不会影响原始项目。
Pull Request(拉取请求): 拉取请求是在GitHub上发起的一种协作机制,用于将自己的代码更改合并到原始项目中。其他开发人员可以审查代码并提供反馈。
git clone <repository>:克隆(下载)一个远程仓库到本地。
git add <file>:将文件添加到暂存区,准备提交。
git commit -m "<message>":提交暂存区的文件到本地仓库,-m 后面是提交的说明信息。
git status:查看当前仓库的状态,显示已修改、已暂存等文件信息。
git diff:查看当前文件与暂存区或本地仓库中文件的差异。
git branch:列出所有分支,当前分支前面会有一个 * 号。
git checkout <branch>:切换到指定分支。
git merge <branch>:合并指定分支到当前分支。
git reset <commit>:撤销提交,将 HEAD 指针移动到指定的提交。
git revert <commit>:撤销指定的提交,并创建一个新的提交来反转更改。
git remote add <name> <url>:关联远程仓库,指定一个名字和 URL。
git rebase: 将一个分支的修改应用到另一个分支上,可以用于合并分支或修改提交历史。
git stash: 保存当前工作目录的临时更改,以便切换到其他分支或处理紧急情况后再恢复。
git cherry-pick: 选择性地将一个或多个提交应用到当前分支,可以从其他分支中选择特定的提交进行合并。
git reflog: 查看所有分支的操作历史,包括已删除的提交,可以用来恢复误删除的分支或提交。
git bisect: 用二分法来查找引入问题的提交,特别适用于调试和定位bug。
git submodule: 用于管理项目中的子模块,可以将其他Git仓库作为当前仓库的子目录。
git filter-branch: 重写历史,用于修改提交的内容、合并多个仓库、移除敏感信息等。
git blame: 显示每行代码是谁在何时提交的,可以用于查找代码贡献者或定位问题。
git log: 查看提交历史,可以使用不同的参数和选项来定制输出格式和范围。
git grep: 在代码库中搜索特定的文本模式,可以用于查找函数、变量名等。
下面是使用 Git 进行代码提交、拉取、推送以及解决冲突的一般流程和相关命令:
在拉取或推送代码时,如果发生冲突,Git 会提示有冲突的文件
注意:上述命令中的 <远程仓库名> 是远程仓库的名称(如 origin),<远程分支名> 是远程分支的名称(如 master),<本地分支名> 是本地分支的名称。
在传统的版本控制系统(如SVN)中,存在一个中央服务器,所有开发人员都从该服务器获取最新代码,并将自己的更改提交到服务器。这种架构被称为集中式版本控制系统。
而Git是一种分布式版本控制系统,它不仅有一个中央服务器,还在每个开发人员的本地计算机上都有一个完整的代码仓库副本。每个开发人员可以独立地对代码仓库进行操作,包括提交更改、创建分支、合并代码等。这意味着每个开发人员都有完整的项目历史记录和所有代码的备份。
分布式版本控制系统的主要特点是在本地进行快速和独立的操作,不需要频繁地与中央服务器进行通信。开发人员可以在没有网络连接的情况下继续工作,并且可以在本地进行版本控制和管理,而不受中央服务器的限制。
当开发人员想要共享自己的更改时,他们可以将本地的代码仓库推送(Push)到中央服务器上,或者从中央服务器拉取(Pull)其他人的更改。这种方式使得团队成员之间的协作更加灵活和高效。
分布式版本控制系统的优势包括更好的性能、灵活的工作流程、本地化的版本控制和容错性(即即使中央服务器发生故障,每个开发人员仍然可以继续工作)。Git作为一种分布式版本控制系统,具备了这些优势,并成为了软件开发领域中最受欢迎的版本控制系统之一。
在Git中,暂存区(或称为索引)是一个中间状态,用于存储将要提交的文件更改。当你对代码进行修改后,使用git add命令将修改的文件添加到暂存区。暂存区充当了一个缓冲区,你可以在提交之前对修改的文件进行检查和确认。
暂存区的存在是为了帮助你对代码更改进行精细的控制和管理。通过使用暂存区,你可以选择性地将某些文件添加到提交中,而不是一次性提交所有更改。