Git是什么?
1.git简介
Git是一个分布式版本控制系统,用于跟踪文件和项目的变化。它可以帮助开发人员在多人协作的项目中管理代码,记录每一次修改,并且能够方便地回退到任何历史版本。Git还提供了分支管理功能,使得开发人员能够同时处理多个功能或修复不同的 bug,而不会相互干扰。
2.目前世界上最先进的分布式版本控制系统
版本控制系统是一种记录和管理文件或项目的变化的工具。它允许开发人员追踪文件的每一次修改、添加或删除,并记录这些变化的详细信息,包括时间、作者和具体修改内容等。 版本控制系统使得文件或项目的修改和协作变得更加有序、可追溯和高效。
假设你正在编写一个文本文件,并使用版本控制系统进行管理。
你开始编写一个名为 “example.txt” 的文件,内容是 “Hello, World!”。你将这个文件添加到版本控制系统中,并提交它。
接下来,你修改了该文件的内容,将其改为 “Hello, Universe!”。你再次将修改后的文件添加到版本控制系统,并提交。
现在,假设你意识到之前的修改有问题,你想回退到初始状态。通过版本控制系统,你可以轻松地切换回之前的版本,即 “Hello, World!”。
如果有其他人与你协作在同一个项目中,版本控制系统可以帮助你合并彼此的修改。如果你的合作者将文件内容改为了 “Hello, Galaxy!”,你可以使用版本控制系统将两个不同的修改整合在一起,得到最新的版本。
总结来说,版本控制系统可以帮助你跟踪和管理文件的变化,并允许你在需要时轻松地切换、合并和恢复不同版本的文件。
3.git的诞生
Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件,作为开源软件,全世界的人都可以参与编写,管理linux的代码就成为一个重要的事情了;
在那个时候,Linux 内核开发团队使用一个名为 BitKeeper 的商业版本控制系统来管理代码。然而,由于某些原因,BitKeeper 的免费使用权被撤销,迫使 Linux 内核开发团队需要寻找一个新的版本控制系统。
遇到问题,大佬们的做法真就是那么简单粗暴,大佬亲自出手, 花了两周时间, 用C写了一个分布式版本控制系统 ,于是,Git就此诞生了,Git 的开发历时约两周左右的时间完成初版。Linus Torvalds 在2005年4月7日开始编写 Git 的原型,并在两周后的4月19日发布了第一个公开版本 ;
大佬们的世界就是不一样,很佩服,膜拜!!!!!!!!!!!!!!!
4.集中式与分布式版本控制系统的区别
集中式版本控制系统(Centralized Version Control System,简称 CVCS)和分布式版本控制系统(Distributed Version Control System,简称 DVCS)是两种不同的代码管理工具。
在集中式版本控制系统中,存在一个中央服务器,所有开发者都通过客户端连接到这个中央服务器来获取最新的代码版本,并将自己的修改提交到中央服务器。开发者之间的协作都是通过与中央服务器进行交互完成的。典型的 CVCS 包括 SVN(Subversion)和 CVS(Concurrent Versions System)。
而分布式版本控制系统则没有中央服务器的概念,每个开发者都拥有完整的代码仓库副本。开发者可以在本地进行代码修改、提交和版本管理的操作,同时也可以将自己的修改推送给其他开发者,实现分布式的协作。常见的 DVCS 包括 Git 和 Mercurial。
简单来说,集中式版本控制系统的核心是中央服务器,所有操作都需要与中央服务器进行交互;而分布式版本控制系统允许每个开发者都拥有完整的代码副本,并且可以在本地进行操作,方便离线工作和并行开发。
举个通俗易懂的例子,可以将集中式版本控制系统比作图书馆,每个人需要去图书馆借书并归还,大家必须通过图书馆来查找和管理图书,而分布式版本控制系统就像是每个人都有自己的图书库,可以独立地借阅和归还书籍,同时也可以互相分享自己的书籍。这样的话,即使图书馆关闭了,每个人仍然可以在自己的图书库中继续阅读和管理书籍。
Git的安装
Git可以在Linux、Unix、Mac和Windows等安装运行
在Linux上安装Git
Debian或Ubuntu Linux
sudo apt-get install git
其他Linux版本,通过源码安装,先从Git官网下载源码,然后解压,依次输入:./config
,make
,sudo make install
这几个命令即可
在windows上安装
直接官网安装包,下载安装,成功安装后,做以下操作:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
在使用 Git 进行版本控制的过程中,配置用户姓名和电子邮件是非常重要的步骤。这样做的目的是为了标识代码的提交者,并为项目的历史记录提供准确的身份信息。 global参数: 通过配置全局用户姓名和电子邮件,您无需每次都手动输入这些信息,而是在首次设置后自动应用于所有的 Git 仓库和操作中。这样可以节省时间并确保一致性。
创建版本库
什么是版本库?
版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
创建步骤:
创建 Git 版本库的步骤如下:
初始化版本库:打开命令行终端或 Git Bash,导航到您希望创建版本库的目录中。然后运行以下命令初始化一个新的 Git 版本库:
git init
初始化后有个隐藏的 .git 目录, 这个目录是Git来跟踪管理版本库的 ,非必要不要修改它,乱了的话会破坏git仓库
添加文件到版本库:将要跟踪和管理的文件添加到版本库中。可以使用以下命令将文件添加到暂存区:
git add <文件名>
或者使用以下命令将所有修改的文件添加到暂存区:
git add .
提交更改:当您已经将文件添加到暂存区后,可以使用以下命令提交更改到版本库:
git commit -m "提交描述"
将 “提交描述” 替换为简洁明了的提交描述信息,用于说明此次提交的目的和内容。
可选步骤:关联远程仓库(如果需要):如果您打算将代码托管到远程仓库(如 GitHub、GitLab等),则可以执行以下操作关联远程仓库:
git remote add origin <远程仓库地址>
将 “<远程仓库地址>” 替换为实际的远程仓库地址。
将代码推送到远程仓库(如果需要):如果您已经关联了远程仓库,并且想要将本地代码推送到远程仓库,可以使用以下命令:
git push origin <分支名称>
将 “<分支名称>” 替换为要推送的分支名称(通常是 “master” 或 “main”)。
至此,已经成功创建了一个 Git 版本库,并将文件添加、提交到版本库中。根据需要,还可以执行其他操作,如创建和切换分支,合并分支等,以充分利用 Git 的强大功能。
Git配置ssh
1 生成SSH密钥对:
ssh-keygen -t rsa -C "your_email@example.com"
2 添加SSH密钥到代理(可选):
可以将SSH密钥添加到代理中以方便使用。运行以下命令来启动SSH代理:
eval "$(ssh-agent -s)"
将私钥添加到代理:
ssh-add ~/.ssh/id_rsa
3将公钥添加到Git托管平台:
打开使用的Git托管平台(如GitHub、GitLab等),到个人设置或账户设置页面。找到SSH密钥的选项。将公钥(位于~/.ssh/id_rsa.pub
文件中)复制并粘贴到该页面的适当位置。保存并添加该SSH密钥。
4 测试SSH连接
ssh -T git@github.com
#成功则显示
Hi {username}! You've successfully authenticated, but GitHub does not provide shell access.
Git已经配置为使用SSH进行身份验证。当你克隆或推送存储库时,Git将使用SSH密钥进行认证。这样,可以安全地与Git托管平台进行交互,而无需每次都输入用户名和密码。
Git终端模拟过程
Welcome to the Git Terminal Simulator!
Type 'help' to see a list of available commands.
> help
Available commands:
- git init: Create a new Git repository/创建一个新的 Git 仓库
- git add [file]: Add a file to the staging area/将文件添加到暂存区
- git commit -m [message]: Commit changes with a message/提交带有消息的更改
- git status: Show the current status of the repository/显示仓库当前状态
- git log: Show the commit history/显示提交历史记录
- git checkout [commit hash]: Switch to a specific commit/切换到特定的提交
- git branch: List all branches in the repository/列出仓库中的所有分支
- git branch [branch name]: Create a new branch/创建一个新的分支
- git branch -d [branch name]: Delete a branch/删除一个分支
- git merge [branch name]: Merge a branch into the current branch/将一个分支合并到当前分支
- git remote add [remote name] [remote URL]: Add a remote repository/添加一个远程仓库
- git push [remote name] [branch name]: Push changes to a remote repository/将更改推送到远程仓库
- git pull [remote name] [branch name]: Pull changes from a remote repository/从远程仓库拉取更改
- exit: Exit the simulator
> git init
Initialized empty Git repository.
> git add file.txt
Added file.txt to the staging area.
> git commit -m "Initial commit"
Committed changes with message: Initial commit.
> git status
On branch master
No uncommitted changes.
> git log
Commit 4eeb3a9 (HEAD -> master): Initial commit
Author: User <user@example.com>
Date: Mon Jul 25 11:41:35 2023 +0000
> git branch feature
Created branch 'feature'.
> git branch
* master
feature
> git checkout feature
Switched to branch 'feature'.
> git add new_file.txt
Added new_file.txt to the staging area.
> git commit -m "Add new_file.txt"
Committed changes with message: Add new_file.txt.
> git merge feature
Merged branch 'feature' into 'master'.
> git remote add origin https://github.com/user/repo.git
Added remote repository 'origin' at https://github.com/user/repo.git.
> git push origin master
Pushed changes to remote repository 'origin' in branch 'master'.
> exit
Goodbye!
Git常用命令
以下是一些常用的Git命令及其功能的简要介绍:
git init:在当前目录初始化一个新的Git代码库。
git clone \
:从远程仓库克隆一个完整的副本到本地。 git add \
:将文件添加到暂存区,准备提交。 git commit -m “\
“:将暂存区的文件提交到本地仓库,并附带一条描述性消息。 git status:查看工作区、暂存区和本地仓库的状态。
git log:查看提交历史记录。
git pull:从远程仓库拉取最新的更改。
git push:将本地仓库的更改推送到远程仓库。
git branch:列出所有分支。
git checkout \
:切换到指定分支。 git merge \
:将指定分支合并到当前分支。 git remote add \
\ :将远程仓库关联到本地仓库。 git remote -v:查看远程仓库的详细信息。
git diff:查看当前工作区与暂存区之间的差异。
git reset \
:从暂存区中移除文件,但保留本地修改。 git rm \
:从版本控制系统中删除文件。
Git进阶命令
一些进阶的Git命令和技巧:
- git branch -d \
:删除指定的分支。 - git checkout -b \
:创建一个新的分支并切换到该分支。 - git merge –no-ff \
:执行非快进合并,保留分支的历史记录。 - git stash:将当前未提交的修改暂存起来,以便可以在其他分支上切换。
- git remote show \
:查看远程仓库的详细信息,包括分支、标签等。 - git fetch:从远程仓库下载最新的提交,但不进行合并。
- git rebase \
:将当前分支的提交应用到目标分支上,产生线性的提交历史。 - git cherry-pick \
:选择一个或多个提交,并将其应用到当前分支上。 - git tag \
:创建一个标签,并将其关联到当前的提交。 - git blame \
:显示文件的每一行是由谁提交的。 - git reset –hard \
:将当前分支的HEAD指针重置到指定的提交,并将工作区和暂存区同步。 - git revert \
:创建一个新的提交,撤销指定的提交。 - git log –graph:以图形化的方式展示提交历史。
- git config:配置Git的各种选项,如用户名、邮箱等。
- git grep \
:在版本库中搜索匹配指定模式的文件和行。
结语
Git是一个强大而受欢迎的版本控制系统,无论你是个人开发者还是团队,都可以受益于它的功能和特性。通过使用Git,你可以更好地管理和追踪项目的代码变更,轻松地协作开发,并且能够回溯和恢复历史状态。 使用Git能够更好地管理代码、提升开发效率,并且享受到Git带来的诸多好处 ~~