git学习记录

1.集中式和分布式的区别

集中式版本控制系统(Centralized Version Control System,CVCS)是最早出现的版本控制工具,其中心化的版本库托管在一个中央服务器上,多个开发者通过网络连接到该服务器来协同工作。在CVCS中,所有的开发者都只能在本地工作副本上进行代码的修改和提交,当出现冲突时,需要通过中央服务器来解决。CVCS的典型例子是SVN(Subversion)。

分布式版本控制系统(Distributed Version Control System,DVCS)则是在CVCS的基础上发展起来的一种新型版本控制工具,它没有中央服务器的概念,而是每个开发者都拥有完整的代码库的副本,并且可以在本地进行提交、回滚等操作,从而极大地提高了开发者之间的独立性和灵活性。在DVCS中,每个开发者的代码库都是一个完整的代码库,它们之间可以相互同步,每个开发者可以在本地完成代码修改、提交、合并等操作,当需要更新代码时,只需与其他开发者同步即可。DVCS的典型例子是Git。

总结来说,CVCS与DVCS的主要区别如下:

中央服务器:CVCS有一个中央服务器,而DVCS没有中央服务器的概念,每个开发者都有自己的完整代码库。

协同方式:在CVCS中,多个开发者通过网络连接到中央服务器来协同工作;而在DVCS中,每个开发者都可以在本地工作副本上进行修改和提交,并可以相互同步。

处理冲突:在CVCS中,出现代码冲突时需要通过中央服务器来解决;而在DVCS中,每个开发者可以在本地解决代码冲突,并可以将自己的修改合并到其他开发者的代码库中。

分支管理:在CVCS中,分支管理需要在中央服务器上进行操作;而在DVCS中,每个开发者都可以在本地创建、合并和删除分支。

2.什么是git

Git可以跟踪代码的修改、保存历史版本,并且支持多个开发者协同开发。Git具有很多优点,例如支持离线工作、方便的版本控制、易于协作等

3.git 工作流程

创建仓库:开发者创建一个Git仓库,该仓库可以存储代码和其他相关文件。

添加文件:将需要版本控制的文件添加到仓库中。

创建分支:在仓库中创建一个或多个分支,用于开发新功能或修复错误。

提交更改:在开发过程中,开发者可以随时提交代码更改到本地的分支中。

合并分支:完成一个功能或修复一个错误后,开发者可以将分支合并到主分支(如master)中。

推送到远程仓库:开发者可以将本地的代码更改推送到远程仓库,使其他开发者可以访问和协作。

解决冲突:如果多个开发者对同一文件进行了更改,可能会发生冲突。在这种情况下,需要解决冲突并合并更改。

拉取更改:开发者可以从远程仓库中拉取最新的更改,以便在本地进行开发和测试。

3.在git中提交的命令是什么

git commit命令用于将更改提交到本地代码库。要提交更改,必须先使用git add命令将更改添加到暂存区,然后才能使用git commit命令将更改提交到本地代码库。
git commit -a 命令用于提交所有已跟踪文件的更改,而无需先使用git add命令将它们添加到暂存区。
-a选项表示提交所有已跟踪文件的更改,-m选项用于指定提交消息。

4.什么是git的裸存储库

在Git中,工作目录是指本地代码库在计算机文件系统中的副本,其中包含着实际的项目文件。当你在Git仓库中进行代码修改、提交等操作时,实际上是在工作目录中进行的。然而,Git裸存储库是一个没有工作目录的Git仓库。这意味着,裸存储库中只有Git版本控制所需的文件和元数据,而没有实际的项目文件。因此,在裸存储库中无法直接查看、编辑或运行代码。

Git的裸存储库(bare repository)是一个没有工作目录的Git仓库,只包含Git版本控制所需的内容,如.git目录、分支、标签等。与标准Git存储库不同,裸存储库不包含工作目录,因此不能直接在其中进行修改和提交。裸存储库通常用于共享代码和版本控制信息,以便多个开发人员可以访问和协作。它们通常位于服务器上,并通过Git协议、HTTP协议等方式进行访问。与普通存储库相比,裸存储库更轻量级,更适合在服务器上进行版本控制。

5.git语言是用什么来写的

Git是用C语言编写的,它的高效、简单、可移植等特点与C语言本身的特点非常吻合,使得Git成为了一个优秀的版本控制工具。

6.在git中,如何还原已经push并公开的提交

包括使用 revert 在内,有两种方法可以撤销提交操作:

git revert: 恢复 git 仓库的先前状态,并将更改反映在 git 日志中; $ git revert master b731901
git reset:删除上次提交。  如果想要彻底恢复错误的提交且不保留日志,可使用 git reset --soft HEAD~1
--soft 标志表示在运行 git reset 的时候修改的是 git 保存的日志。 如果想要将 git 存储库中的内容恢复到先前的状态,可使用 --hard 标志

7.git pull 和 git fetch 有什么区别?

git pull 和 git fetch 都是 Git 中用于从远程代码仓库更新本地仓库的命令
git fetch: 只是从远程仓库下载最新的提交历史,但是不会自动合并到本地分支
git pull: 是将远程仓库的最新提交历史拉取到本地仓库,并自动合并到当前分支。
git pull 其实是 git fetch 和 git merge 两个命令的组合
因此,如果你想了解远程代码库的最新状态,但不想影响你的本地代码,使用 git fetch。 如果你想立即更新本地代码库,并自动合并最新的代码,请使用 git pull。

git中的“staging area”或“index”是什么?

Staging area” 或 “index”是在 Git 中的一种概念,是一种暂存区域,允许用户在提交到 Git 仓库之前预览和编辑所做的更改。

什么是 git stash?

通常情况下,当你一直在处理项目的某一部分时,如果你想要在某个时候切换分支去处理其他事情,事
情会处于混乱的状态。问题是,你不想把完成了一半的工作的提交,以便你以后就可以回到当前的工
作。解决这个问题的答案是 git stash。
git add .
git commit -m ‘’
然后修改暂存区的文件内容,想要切换分支,这时候会提示需要将暂存区的文件提交到仓库中,可以使用git stash
再解释什么是git stash。stash 会将你的工作目录,即修改后的跟踪文件和暂存的更改保存在一堆未完成的更改中,你可以随时重新应用这些更改。
git stash会把所有
1.添加到暂存区的修改(staged changes)
2.Git跟踪的但并未添加到暂存区的修改(unstaged changes),用于后续恢复当前工作目录。
添加到暂存区的修改(staged changes):表示已经使用 git add 命令将修改添加到了 Git 的暂存区(也称为索引或缓存),这些修改将在下一次 git commit 命令时被提交到 Git 仓库中。可以使用 git diff --cached 命令查看这些修改。

Git 跟踪的但并未添加到暂存区的修改(unstaged changes):表示已经对文件进行了修改,但是这些修改还没有被添加到 Git 的暂存区。可以使用 git diff 命令查看这些修改。

什么是git stash drop?

如果要从隐藏项目列表中删除特定的存储项目,可以使用以下命令:
git stash list:它将显示隐藏项目列表,如:
stash@{0}: WIP on master: 049d078 added the index file
stash@{1}: WIP on master: c264051 Revert “added file_size”
stash@{2}: WIP on master: 21d80a5 added number to log
如果要删除名为 stash@{0} 的项目,请使用命令 git stash drop stash@{0}。

11.git如何找到特定提交中已更改的文件列表?

git config 的功能是什么?

git 使用你的用户名将提交与身份相关联。 git config 命令可用来更改你的 git 配置,包括你的用户
名。
git config –global user.name “Your Name”: 此命令将添加用户名。
git config –global user.email “Your E-mail Address”: 此命令将添加电子邮件ID。

13.git提交对象包含什么?

提交ID(commit ID): 一个SHA-1哈希值,用于唯一标识这个提交对象。

父提交ID(parent commit ID): 如果这不是第一次提交,则会记录前一个提交的ID。如果是一个合并提交,则可能会有多个父提交。

作者(author): 提交的作者,包括姓名和电子邮件地址。

提交者(committer): 提交的实际执行者,也包括姓名和电子邮件地址。

提交时间戳(timestamp): 提交的时间戳,记录了提交的时间。

提交信息(commit message): 对这个提交的简短描述,可以包含多行。

快照(snapshot): 提交时的工作目录快照,

Git的工作区域

工作区:表示新增或修改了某个文件,但还没有提交保存;
暂存区:表示把已新增或修改的文件,放在下次提交时要保存的清单中;
本地仓库:文件已经被安全地保存在本地仓库中了。

15.判断分支是否已合并为master,你可以通过什么手段知道?

要知道某个分支是否已合并为master,你可以使用以下命令:
git branch –merged 它列出了已合并到当前分支的分支。
git branch –no-merged 它列出了尚未合并的分支。

16.什么是SubGit?

SubGit是一个用于实现Subversion(SVN)和Git之间双向同步的工具

17. 如何把本地仓库的内容推向一个空的远程仓库

首先确保本地仓库与远程之间是连同的。如果提交失败,则需要进行下面的命令进行连通:

git remote add origin XXXX

注意:XXXX是你的远程仓库地址。 如果是第一次推送,则进行下面命令:

git push -u origin master

注意:-u 是指定origin为默认主分支 之后的提交,只需要下面的命令:

git  push origin master

18.描述一下你所使用的分支策略?

功能分支(Feature Branch)
功能分支是指为了开发某个特定的功能或者解决某个问题而创建的分支。通常情况下,开发者会在主分支(通常是 master 或 main)上创建一个功能分支,然后在这个分支上进行开发、测试和调试。一旦功能开发完成,开发者可以将这个分支合并回主分支,然后删除该功能分支。

任务分支(Task Branch)
任务分支是指为了完成某个特定任务而创建的分支,它与功能分支类似,但更加细粒度。任务可以是一个新功能的开发,也可以是一个 bug 的修复,甚至可以是一些代码重构。任务分支的创建和管理方式与功能分支类似,但任务分支的生命周期通常比功能分支更短,任务完成后可以删除。

发布分支(Release Branch)
发布分支是指为了发布新版本而创建的分支。通常情况下,开发者会在主分支的基础上创建一个发布分支,然后在这个分支上进行测试、修复 bug、文档编写等工作。一旦发布分支准备就绪,开发者可以将这个分支合并回主分支,并打上一个新的标签,以便区分不同的版本。发布分支通常会被长期保留,以便对该版本进行修复和维护

19.Git 工作区、暂存区和版本库

工作区(Working Directory)
工作区是指你在电脑上能看到的目录,它是你进行开发工作的目录。在工作区中,你可以添加、修改、删除文件。

暂存区(Staging Area/Index)
暂存区是一个文件,它保存了即将提交到版本库的文件列表以及它们的内容变化。当你修改了工作区的文件之后,你需要将这些修改过的文件添加到暂存区,以便进行下一步的提交操作。

版本库(Repository)
版本库是 Git 存储所有提交历史的地方。当你执行一次提交操作时,Git 会将暂存区中的文件内容提交到版本库中。版本库中包含了完整的历史记录,包括每个提交的作者、时间、提交信息等。

20.打标签

git tag -a 2.2 -m "release version 20220306"

git push origin --tags 是将本地的所有标签(tags)推送到名为 origin 的远程仓库的命令。
详解:git tag 是命令
-a 0.1.3是增加 名为0.1.3的标签
-m 后面跟着的是标签的注释

你可能感兴趣的:(git,学习,服务器)