grf920

博客园 首页 新随笔 联系 订阅 管理

Git

定义:是一种分布式版本控制系统。

git中的一些概念名词:

Repository(仓库): Git仓库是存储代码和版本历史的地方。它可以是本地仓库(位于本地计算机上)或远程仓库(位于网络上)。

Commit(提交): 提交是Git中的一个基本概念,表示对代码的一次更改。每个提交都有一个唯一的标识符(SHA哈希值)和相关的作者、日期、提交消息等信息。

Branch(分支): 分支是基于主分支(通常是"master"或"main")的独立开发路径。它允许团队成员在不干扰主线开发的情况下并行开发新功能、修复错误等。

Merge(合并): 合并是将两个不同的分支中的更改合并为一个新的提交的过程。它可以将一个分支的更改合并到另一个分支中。

Pull(拉取): 拉取是从远程仓库获取最新代码的过程。它会将远程仓库的更改合并到本地仓库中。

Push(推送): 推送是将本地仓库的更改上传到远程仓库的过程。它将本地的提交推送到远程仓库,使得其他开发人员可以访问和更新代码。

Remote(远程): 远程是指位于网络上的Git仓库,它可以是中央仓库或其他开发人员的仓库。常见的远程仓库是GitHub、GitLab和Bitbucket。

Clone(克隆): 克隆是指从远程仓库复制完整的代码库到本地计算机上,创建一个相同的仓库副本。

Fork(分叉): 分叉是在自己的GitHub账号下创建一个项目的副本,以便可以独立开发和修改代码,而不会影响原始项目。

Pull Request(拉取请求): 拉取请求是在GitHub上发起的一种协作机制,用于将自己的代码更改合并到原始项目中。其他开发人员可以审查代码并提供反馈。

git常用命令

git init:在当前目录初始化一个新的 Git 仓库。

git clone <repository>:克隆(下载)一个远程仓库到本地。

git add <file>:将文件添加到暂存区,准备提交。

git commit -m "<message>":提交暂存区的文件到本地仓库,-m 后面是提交的说明信息。

git status:查看当前仓库的状态,显示已修改、已暂存等文件信息。

git diff:查看当前文件与暂存区或本地仓库中文件的差异。

git branch:列出所有分支,当前分支前面会有一个 * 号。

git checkout <branch>:切换到指定分支。

git merge <branch>:合并指定分支到当前分支。

git pull:拉取远程仓库的最新代码并合并到当前分支。

git push:推送本地仓库的代码到远程仓库。

git log:查看提交历史记录。

git reset <commit>:撤销提交,将 HEAD 指针移动到指定的提交。

git revert <commit>:撤销指定的提交,并创建一个新的提交来反转更改。

git remote add <name> <url>:关联远程仓库,指定一个名字和 URL。

高级命令和技巧:

当涉及到Git的高级命令和技巧时,以下是一些常用的示例:

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 status

将修改的文件添加到暂存区,使用命令:

git add <文件名> 或者

git add .(添加所有修改的文件)

提交暂存区的文件到本地仓库,使用命令:

git commit -m "提交描述"

如果需要,重复步骤 2 和 3 来提交其他修改的文件

拉取代码的流程:

拉取远程代码到本地分支,使用命令:

git pull <远程仓库名> <远程分支名>

推送代码的流程:

推送本地代码到远程仓库,使用命令:

git push <远程仓库名> <本地分支名>

解决代码冲突的流程:

在拉取或推送代码时,如果发生冲突,Git 会提示有冲突的文件

打开冲突文件,根据提示找到冲突的部分

根据需要,手动修改代码以解决冲突

提交解决冲突后的文件,使用命令:

git add <冲突文件名> 或者

git add .

继续执行提交流程,使用命令:

git commit -m "解决冲突描述"

如果有必要,再次拉取和推送代码,确保冲突已解决

注意:上述命令中的 <远程仓库名> 是远程仓库的名称(如 origin),<远程分支名> 是远程分支的名称(如 master),<本地分支名> 是本地分支的名称。

疑问解答

1,解释什么是分布式版本控制系统,为什么要使用git

在传统的版本控制系统(如SVN)中,存在一个中央服务器,所有开发人员都从该服务器获取最新代码,并将自己的更改提交到服务器。这种架构被称为集中式版本控制系统。

而Git是一种分布式版本控制系统,它不仅有一个中央服务器,还在每个开发人员的本地计算机上都有一个完整的代码仓库副本。每个开发人员可以独立地对代码仓库进行操作,包括提交更改、创建分支、合并代码等。这意味着每个开发人员都有完整的项目历史记录和所有代码的备份。

分布式版本控制系统的主要特点是在本地进行快速和独立的操作,不需要频繁地与中央服务器进行通信。开发人员可以在没有网络连接的情况下继续工作,并且可以在本地进行版本控制和管理,而不受中央服务器的限制。

当开发人员想要共享自己的更改时,他们可以将本地的代码仓库推送(Push)到中央服务器上,或者从中央服务器拉取(Pull)其他人的更改。这种方式使得团队成员之间的协作更加灵活和高效。

分布式版本控制系统的优势包括更好的性能、灵活的工作流程、本地化的版本控制和容错性(即即使中央服务器发生故障,每个开发人员仍然可以继续工作)。Git作为一种分布式版本控制系统,具备了这些优势,并成为了软件开发领域中最受欢迎的版本控制系统之一。

2,什么是暂存区

在Git中,暂存区(或称为索引)是一个中间状态,用于存储将要提交的文件更改。当你对代码进行修改后,使用git add命令将修改的文件添加到暂存区。暂存区充当了一个缓冲区,你可以在提交之前对修改的文件进行检查和确认。

暂存区的存在是为了帮助你对代码更改进行精细的控制和管理。通过使用暂存区,你可以选择性地将某些文件添加到提交中,而不是一次性提交所有更改。

posted on 2023-08-17 13:44  Mostary  阅读(8)  评论(0编辑  收藏  举报