我总结了关于Git的内容
Git的好处
1. 分布式版本控制系统
Git是一种分布式版本控制系统,因此可以轻松进行多人协作和远程开发。此外,通过在本地拥有存储库,即使在没有互联网连接的环境下,也可以进行开发。
2. 履历管理方便
Git能够记录文件的变更履历,因此履历管理方便。同时,还可以反向操作变更履历。通过这一功能,在进行代码修复或功能添加等操作时,可以安全进行工作。
Git是一种通过使用分支功能来管理多个版本的工具。通过这种方式,可以在多人协作开发或同时开发多个功能时,避免混乱并顺利进行工作。
4. 与远程存储库的协作方便
Git使得与远程存储库的协作变得简单。你可以将代码上传到远程存储库,也可以获取其他开发者的代码。
Git是一款开源软件,任何人都可以自由使用。同时,它也得到了众多开发者的参与,不断有bug修复和新功能添加等持续进行。
目录
初始化git
配置git
Git的暂存区
提交git
git状态
.git忽略
起点
添加远程起点
推送git
拉取git
克隆git
git分支
git合并
git变基
git切换
强制重置git
软重置git
互动变基
初始化一个git仓库
git init 是一个用于创建Git仓库的命令。Git仓库会被放置在Git来管理的项目的根目录中。当执行git init命令时,Git会将当前目录初始化为一个仓库,并创建必要的默认文件。通过执行该命令,完成了用于管理Git历史记录的初始设置。通过执行git init命令,可以创建一个新的Git仓库,并开始使用Git进行版本控制。
git init
git配置
git config是用于管理Git设置的命令。您可以设置与Git操作相关的设置,例如设置Git用户名和电子邮件地址,设置默认编辑器等。您还可以配置远程仓库的URL以及有关分支合并方式的设置。
git config命令可以进行全局设置和本地设置。全局设置是应用于整个系统的设置,可以使用–global选项进行设置。而本地设置是仅适用于特定存储库的设置,可以使用–local选项进行设置。
在使用存储库之前,您需要设置提交用户名和电子邮件地址。以下是一个设置步骤的示例。
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
通过这样的方式,新的Git存储库被初始化并准备好进行提交。
Git的暂存区
Git的暂存区(也称为stage或index)是Git中用于版本控制文件的中间区域。在Git中,我们把文件的修改添加到暂存区,然后选择要包含在提交中的修改。
通过使用「暂存区域」,Git可以实现以下流程。
1. 修改文件。
2. 使用git add命令将修改添加到暂存区。
3. 使用git commit命令将暂存区的修改提交。
通过使用暂存区,可以一次包含多个文件的修改提交。此外,可以将文件的修改内容细分为不同的提交,以便于查看历史记录。
将文件添加到暂存区后,文件的快照将保存在存储库的.git/index文件中。
创建一个名为example.txt的新文件,并使用git add命令将文件添加到暂存区。然后,使用git commit命令提交更改,并添加提交信息”Initial commit”。
创建新文件
$ touch example.txt
2. 初始化Git存储库
$ git init
Initialized empty Git repository in /path/to/repo/.git/
3. 文件暂存
$ git add example.txt
4. 创建提交
$ git commit -m "Initial commit"
[master (root-commit) 08248c5] Initial commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 example.txt
提交git
git commit 命令是用于将更改提交到Git仓库的命令。通过使用git commit命令,您可以将已添加到暂存区的更改永久保存到Git仓库的历史记录中。
执行git commit命令后,将会打开提交消息的编辑器。您可以在该编辑器中提供关于要包含在提交中的更改的详细信息。请尽量详细地描述变更内容、目标和修复的问题等。这样可以使未来的开发者更容易理解代码。
通过使用git commit命令的选项,你可以直接指定提交信息。例如,通过使用-m选项,像git commit -m “Initial commit”这样,你可以直接指定提交信息。
使用git commit命令创建提交后,将生成提交ID(SHA-1哈希),并永久保存在Git仓库中。提交ID将用于将来识别该次提交。同时,可以使用git log命令浏览仓库的历史提交记录。
查看git状态。
git status 是一个用于在Git版本控制系统中显示当前工作目录状态的命令。当在Git仓库中进行工作时,可以查看哪些文件已被修改,哪些文件已被暂存,以及当前所在的分支等信息。此外,它还能列出当前工作目录中的变更点,包括冲突、文件删除和添加等。
git状态命令的输出
当前分支名称
已添加到暂存区的文件
在Git管理下但未添加到暂存区的文件(如果有更改,还会显示更改内容)
如果有未提交的更改,将显示这些更改的摘要。
在执行git status命令时显示的示例
On branch main
Your branch is up to date with 'origin/main'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file1.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
new_file.txt
no changes added to commit (use "git add" and/or "git commit -a")
目前显示当前分支为main。还显示了file1.txt已被修改,还存在未提交的更改。同时,也显示了new_file.txt是未跟踪的文件。最后一行展示了如何提交更改。
.gitignore 的中文翻译为:忽略.git文件
.gitignore 是一个用于指定Git应忽略的文件的文件。在Git存储库中,除了代码外,可能还包含许多其他文件。例如,可执行文件、日志文件、临时文件和备份文件等。通过使用.gitignore文件来指定这些文件,使Git不会跟踪它们。
.gitignore文件会放置在仓库的根目录下。文件格式中,每行描述一个模式。这些模式包括不需要追踪的文件名、文件夹名、扩展名等信息。例如,可以进行如下描述。
# コメントは # で始める
*.log # .log ファイルを無視する
/tmp # tmp ディレクトリを無視する
此外,您还可以使用通配符和正则表达式来指定复杂的模式。与.gitignore文件中所述的模式匹配的文件和目录将被Git忽略,并从提交中排除。
通过使用.gitignore文件,可以减小Git仓库的大小,并避免跟踪不相关的文件。此外,在共同协作时,开发者可以共享要忽略的文件和目录。
起源
origin 是远程存储库的默认名称。在执行 git push 或 git pull 等与远程存储库的交互操作时,通常会使用 origin 作为名称。
在添加远程仓库时,可以使用git remote add命令添加远程仓库的URL。在此过程中,可以指定远程仓库的名称。通常情况下,第一个添加的远程仓库的名称会默认为origin。
你也可以更改远程仓库的名称,但是由于 origin 一般被用作默认名称,所以如果需要更改,需要谨慎操作。
添加远程 origin
git remote add 命令是用于向存储库添加远程存储库的命令。通过使用git remote add命令,可以为当前存储库注册远程存储库的引用名称和URL。
在git中添加远程库使用`git remote add`命令,需指定一个名称用于引用远程库。通常这个名称被称为origin,但也可以使用其他任意名称。接下来,需要指定远程库的URL。例如,要添加GitHub上的库,可以执行如下命令。origin是远程库的引用名称,URL是GitHub上库的URL。执行该命令后,远程库将以引用名称origin和指定的URL注册。
git remote add origin https://github.com/<ユーザー名>/<リポジトリ名>.git
如果要将在GitHub上创建的远程存储库添加到本地的Git存储库中,可以使用以下步骤来将远程存储库添加为“origin”的名称。
git remote add origin https://github.com/username/repo.git
通过这个操作,一个名为”origin”的远程仓库将会被添加,它将与”https://github.com/username/repo.git”这个URL相关联。以后,可以使用”origin”作为参数进行推送、拉取等操作来操作这个远程仓库。
使用git remote add命令可以将多个远程仓库添加到仓库中。另外,可以使用git remote -v命令查看已注册在仓库中的远程仓库列表。
git remote -v的一个示例
git remote -v
执行此命令后,将显示当前Git存储库中设置的远程存储库列表。
输出例子
origin https://github.com/username/repo.git (fetch)
origin https://github.com/username/repo.git (push)
在这个示例中,我们可以看到一个名为”origin”的远程存储库已经被设置为”https://github.com/username/repo.git”的URL。同时,我们还可以看到”fetch”和”push”这两个关键词,它们表示用于获取和发送远程存储库的协议。
提交到git
git push命令是用于将本地提交同步到远程仓库的命令。换句话说,您可以使用该命令将在本地所做的更改上传到远程仓库。要执行git push命令,请输入以下命令。
git push origin main:main
通过执行此命令,本地主分支的更改内容将同步到远程主分支。
git push命令可以将更改内容上传到远程仓库,以便与其他开发者共享更改内容。此外,如果多个开发者向同一远程仓库推送更改,可能会出现冲突,因此需要执行合并或拉取请求等步骤。
进行代码拉取
git pull 命令是用来从远程仓库获取最新提交并将其同步到本地仓库的命令。换言之,它可以将远程仓库中存在的最新更改合并到本地仓库中。
要执行git pull命令,请按照以下方式输入命令。
git pull <リモート名> <リモートブランチ>
在这里,<远程名称> 指定了远程仓库的名称。通常,远程仓库的名称被称为 origin。 <远程分支> 指定了要获取的远程分支的名称。
举个例子,如果要从远程的主分支获取最新的更改,可以输入以下命令。
git pull origin main
通过执行此命令,将最新的远程仓库主分支的更改内容同步到本地仓库。
git pull 表示执行 git fetch 命令和 git merge 命令。git fetch 命令从远程仓库获取最新信息,并同步到本地仓库。然后,git merge 命令将本地分支和远程分支的更改内容合并。换句话说,git pull 命令可以从远程仓库获取最新更改内容并自动合并。
克隆存储库
git clone 命令是用于将远程仓库克隆到本地机器的命令。换句话说,它允许将远程仓库的所有文件和历史记录复制到本地机器上。
要执行git clone命令,需要输入以下命令。
git clone <リモートリポジトリURL>
在这里,<远程仓库URL> 指定了要复制的远程仓库的URL。
举个例子,如果要克隆GitHub上的存储库,可以按照以下方式输入命令。
git clone https://github.com/<ユーザー名>/<リポジトリ名>.git
执行此命令将把远程仓库的所有文件和历史复制到本地机器。并且本地机器将以”origin”的名称注册远程仓库。
通过使用 git clone 命令,您可以在本地机器上操作其他开发人员创建的存储库。另外,如果有多个开发人员需要访问同一个存储库,则可以使用 git clone 命令,让所有开发人员都能操作相同的远程存储库。
Git 分支
git branch命令是用于创建、显示和删除分支的命令。在Git中,可以使用多个分支同时进行不同的开发任务和版本的开发。
要执行git branch命令,请按照以下方式输入命令。
git branch <ブランチ名>
在这里,<分支名称>指定了新分支的名称。创建了新分支后,需要切换到该分支。
通过使用git branch命令,我们可以在不同的分支上进行不同版本的开发,并独立地推进开发工作。此外,根据开发任务的需求,例如实现新功能或修复错误,我们可以创建新的分支。
git branch命令的示例
git branch
执行此命令可以显示当前分支的列表。
输出示例。
main
* feature-branch
bugfix-branch
在这个例子中,我们可以看到有三个本地分支,分别是”main”、”feature-branch”和”bugfix-branch”。此外,在”feature-branch”之前有一个”*”,表示它是当前活动的分支(当前分支)。通过运行”git branch -a”命令,我们可以显示包括远程分支在内的所有分支。
合并git
git 合并(merge)命令是用于将两个不同的分支合并的命令。当需要切换到另一个版本进行开发,或者多个分支需要合并时(比如团队成员分别进行工作),可以使用该命令。
要使用git merge命令,首先要切换到目标合并的分支,然后输入以下命令。
git merge <統合元のブランチ>
在这里,<统合元的分支> 指定了作为统合元的分支的名称。执行这个命令后,统合元分支的更改将被反映到统合目标分支中。
此外,您可以使用 –no-ff 选项来保留分支的历史记录。如果不指定此选项,则会进行快速合并,并且历史记录将不保留。
使用git merge命令,可以将不同分支的更改内容合并在一起。然而,在多人同时进行工作的情况下,可能会发生冲突,因此在进行合并操作时需要注意。
Git rebase (变基)
git rebase(变基)命令用于重新构建两个分支的历史记录。与git merge(合并)命令类似,它可以将不同的分支合并在一起,但是git rebase命令可以将源分支的更改移动到目标分支的开头。
具体而言,可以按照以下步骤使用 git rebase 命令。
使用git checkout命令可以切换到要合并的分支。
git checkout feature/my-feature-branch
使用git rebase命令可以将更改移动到集成源分支上。
git rebase 「main<統合元のブランチ>」
如果存在竞争,将解决竞争问题。
将冲突已解决的文件加入到暂存区。
继续执行git rebase操作。
删除源分支。
使用git rebase命令可以整理分支的历史记录。但是,如果集成源分支有大量的提交,可能会花费较长的时间进行变基,因此需要注意。此外,由于可能发生冲突,因此需要在集成过程中注意。
切换到 Git 分支
git checkout命令用于切换分支、恢复提交、恢复文件等,用于切换代码仓库状态的命令。
如果要切换到另一个分支,请使用git checkout命令。输入以下命令:
git checkout <ブランチ名>
在这里,<分支名> 是指定您想要移动的分支的名称。另外,如果要恢复提交,则需要指定提交的哈希值。
此外,您还可以使用git checkout命令来恢复特定的文件或目录。请按照以下命令输入:
git checkout <ファイル名>
在这里,<文件名>是指定要恢复的文件的名称。另外,如果要恢复目录,则需要使用-f选项,强制恢复目录。
通过使用git checkout命令,您可以轻松切换分支、恢复提交以及恢复文件等,以便快速切换存储库的状态。但请注意,由于此命令会更改存储库的状态,因此使用时需要谨慎。
以中文自然地重述如下:在Git中,执行命令”git reset –hard”。
git reset –hard 命令可以撤消到指定提交之前的历史记录,并将工作树和索引恢复到指定提交的状态。由于此命令会完全丢弃正在进行的更改,请谨慎使用。
通过使用 “–hard” 选项,可以将工作目录和索引还原到指定提交的状态。换句话说,指定提交之后的所有更改都将被丢弃。因此,在执行之前需要仔细确认。
用中文本地化的方式重述以下命令,只给出一种选项:
git reset –soft
使用git命令撤销最新的提交,并保留更改。
使用git reset –soft命令,可以通过指定想要重置的提交来撤消到该提交为止的历史记录,而不改变工作目录和索引,只修改提交历史记录。
执行git reset –soft <提交ID> 可以将代码库回溯到指定提交ID的前一个状态,但工作树和索引状态将保持不变。这样一来,您可以重新将需要的更改添加到暂存区并进行提交。
git reset –soft命令可以用于修改过去的提交消息。例如,如果最新的提交消息有错误,可以使用git reset –soft HEAD~1命令返回到上一个提交,并使用git commit –amend命令来修改为新的消息。
交互式变基
rebase -i 是 Git 的一個命令選項,用於進行互動式的基於最新提交的操作。
通常情况下,在进行变基操作时,需要首先切换到当前分支的目标分支,然后执行变基操作来合并分支的历史记录。但是,使用rebase -i命令时,可以在执行变基操作之前,在可编辑的文本编辑器中查看修改的历史记录。
具体而言,通过执行git rebase -i <rebase目标分支>命令,可以打开一个可编辑的文本编辑器。在这里,您可以查看变更历史,对每个提交进行修改、跳过或改变提交顺序。
在整理多个提交或更改提交消息时,交互式 rebase 命令非常方便。此外,它还可以用于整理提交历史记录。请注意,由于要修改提交历史记录,因此需要谨慎使用。