git教程(Mac)超详细

目录

一、什么是git

1、什么是集中式与分布式:

2、git的优势:

3、git的安装

二、git如何使用

1、git init创建仓库

2、删除仓库

3、git clone克隆仓库

4、git的工作区域和文件状态

4.1、工作区域:

4.2、文件状态:

 5、git reset回退版本

三种回退方式:

(1、git reset --soft:

(2、git reset --hard :

(3、git reset --mixed :

 6、git diff查看差异

6.1查看工作区、暂存区、本地仓库之间的差异

6.2查看不同版本之间的差异

7、从版本库中删除文件

三、git 分支

1、什么是git 分支

2、基本语法

2.1、查看分支

2.2、创建分支

2.3、切换分支

2.4、合并分支

2.5、删除分支

3、远程分支

四、如何使用gitHub或者gitee等远程仓库

1、配置SSH公钥

2、连接本地仓库与远程仓库

git push

git pull 


一、什么是git

git是一个开源的分布式版本控制系统(VCS),用于敏捷高效地处理任何项目,可以对代码不断进行修改,版本控制系统能记录到每次代码的变化,方便回到之前某个版本。

1、什么是集中式与分布式:

集中式只有一个中央服务器存储所有版本,只能在中央服务器上下载最新版本,添加或修改一些内容,然后将修改过后的版本上传到中央服务器。

优点:使用简单

缺点:如果中央服务器出现故障或者网络连接出现问题,那么所有人都无法工作。

分布式:每个人的电脑上都有一个完整的版本库,可以在本地进行修改,不需要考虑其他问题,与中央服务器互不影响,当我们需要把自己的修改内容分享给其他人的时候,只需要将仓库同步一下就可以了。

2、git的优势:

分布式:与 集中式版本(SVN)不同,git分布式意味着每个参与项目开发的开发者本地电脑上都有完整的代码仓库副本,包含了项目完整的历史记录、所有分支等信息。

高效的分支管理:多个开发者可以同时开发不同的功能,提高开发效率,可以创建、切换、合并分支。

3、git的安装

git下载官网:Git中文网 官网

这里有好多种下载方式,选择一个来安装git ,下载完毕后可以用 git --version指令来查看git 的版本号,来检验是否安装成功。

二、git如何使用

1、g it init创建仓库

打开终端

step1 :创建一个空白目录,并进入到该目录下:

mkdir demoGit
cd demoGit

step2 :初始化本地仓库:

git init

这个目录就从一个普通的文件夹变成了一个可以被 Git 管理的仓库

step3 :查看该目录下有没有.git目录:

注意:.git目录是一个隐藏目录,需要ls -a来查看

ls
ls -a

如果出现.git 这时就成功将该目录初始化为git仓库。chule

.git目录存放了git仓库所有的数据,可以查看一下:

cd .git
ls -altr

除了使用 git init 创建仓库,我们也可以直接使用 git init < 目录名称 >这个指令创建仓库,与git init 直接创建仓库的区别是,git init 在指定目录下执行该命令。

git init demoGit

2、删除仓库

在git管理的目录下使用指令删除git,删除以后该目录不再被git管理,是一个普通的目录,运行 ls -a 指令也不会看到.git文件了。

\rm -rf .git

 3、git clone克隆仓库

可以从gitHub或者gitee这种远程服务器上来克隆一个已经存在的仓库

git clone + 仓库地址

 可以将这个远程仓库的文件直接克隆到本地

4、git的工作区域和文件状态

4.1、工作区域:

 (1、工作区 : 本地工作目录,实际操作的目录,包含了项目的所有文件和子目录。可以在其中查看、编辑、和创建文件。用于开发者进行日常开发工作,修改代码、添加新功能等。

(2、暂存区 :临时存储区域,用于保存即将提交到git仓库的修改内容 

(3、本地仓库 : 保存了项目的版本历史,是git存储代码和管理信息的主要位置

通过git init 命令创建的那个仓库,包含了完整的项目历史和元数据

git add //将工作区的文件添加到暂存区
git commit //将暂存区的文件添加到本地仓库里

4.2、文件状态:

未跟踪Untrack:新创建的还没有被git管理的文件

未修改Unmodified:已经被git管理,但还没修改

已修改Modified:已经修改,但还没有添加到暂存区的文件

已暂存Staged:已经修改,并添加到暂存区的文件

git status:查看文件状态

git add : 将工作区的文件添加到暂存区

git commit :将暂存区的文件添加到本地仓库

git log / git reflog 查看详细的提交记录

git log --oneline:查看简洁的提交记录

演示:

我们用echo 指令创建一个新的文件后,用git status 查看文件状态,这个新创建的文件

 此时这个新创建的文件是一个未跟踪状态,当我们执行 git add   可以这个文件添加到暂存区,文件状态发生变化,此时该文件是一个Staged状态,可以被提交到本地仓库。

当工作区内有许多个文件,我们可以使用 git add . 来提交所有的文件到暂存区

也可以使用 git add *.txt 这样的通配符指令只提交某种类型的文件

 这时我们就可以执行git commit -m "提交信息" 将暂存区的文件提交到本地仓库

git commit只能提交暂存区的文件到本地仓库

用-m参数来指定提交的信息,会被记录到仓库中

如果不使用-m,那么git commit命令会进入一个交互式的界面,默认会使用vim来编辑提交信息

 5、git reset回退版本

每当我们用git commit提交以后,git会存储所有的提交版本

当我们错误的提交后,需要撤销这个操作(回退到某一个版本),这时我们就可以用 git reset 来回退版本,撤销提交

5.1、三种回退方式:

git reset --soft:回退到某一个版本,并且保留工作区和暂存区的所有修改内容

git reset --hard:回退到某一个版本,并且丢弃工作区和暂存区的所有修改内容

git reset --mixed:回退到某一个版本,只保留工作区的修改内容,丢弃暂存区的修改内容

演示:

echo "第二个文件的内容" > file2.txt //创建第二个文件
git add .    //添加到暂存区
git commit -m "第二次提交"   
echo "第三个文件的内容" > file3.txt。//创建第三个文件
git add .  
git commit -m "第三次提交"
git reflog   //查看仓库提交历史记录

 将demoGit复制三份,进行不同的操作

5.2、git reset --soft:

用git reset --soft 回退到第二次提交:

 退回后提交记录里就没有了第三次提交

此时我们查看工作区的内容:

查看暂存区的内容:

可见工作区和暂存区中都还保存着file3.txt这个文件 ,这时候我们就可以重新修改file3文件的内容并将file3重新提交了。

5.3、git reset --hard :

用git reset --hard 回退到第二次提交:

 查看工作区和暂存区:

这两个区域都没有的file3文件,也就是file3不存在了 

5.4、git reset --mixed :

用git reset --mixed 回退到第二次提交:

并查看工作区和暂存区,发现工作区存在file3,暂存区没有file3了

 6、git diff查看差异

当目录中某个文件被修改,我们可以用该指令查看修改前后的差异

6.1查看工作区、暂存区、本地仓库之间的差异

git diff <id> HEAD  :比较工作区和本地仓库之间的差异

git diff --cached : 比较工作区和本地仓库之间的差异

6.2查看不同版本之间的差异

git diff HEAD~ HEAD :比较当前 HEAD(当前分支所指向的最新提交)与它的前一个提交之间的差异。

7、从版本库中删除文件

方法一:

rm file 只删除了工作区的文件,没有删除暂存区的内容

可以使用git add . 告诉告诉已经将哪个文件删除,需要更新暂存区

方法二: 

使用git rm命令

同时删除了工作区和暂存区的文件

删除完记得提交 ,这样那个文件才能从版本库中删除

如果只删除版本库里的文件,而不删除本地文件,可以加上 --cached

三、git 分支

1、什么是git 分支

分支是 Git 中非常重要的一个概念。它允许你从主代码线(通常是master分支,不过现在也有推荐使用main分支)分离开来,进行独立的开发工作,而不会影响主分支的稳定性。例如,当你要开发一个新功能或者修复一个 bug 时,你可以创建一个新的分支来进行这些工作。

2、基本语法

2.1、查看分支

git branch :该命令用于查看本地仓库中的所有分支。当前所在分支会以星号(*)标记出来。

2.2、创建分支

git branch <branch - name> :创建一个新的分支,新分支会从当前所在分支的相同提交点(commit point)开始。 

2.3、切换分支

git checkout <branch - name>:用于切换到指定的分支。在这里所做的任何修改、提交都不会直接影响到master分支。

git checkout -b <branch - name>:创建新的分支并切换到它

2.4、合并分支

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

注意:

合并冲突:如果在两个分支对同一部分代码进行了不同的修改,合并时就可能会出现冲突。Git 会在文件中标记出冲突的部分,需要手动解决这些冲突。需要我们编辑文件,决定保留哪些代码,删除这些冲突标记后,再进行提交来完成合并。 

2.5、删除分支

git branch -d <branch - name>:用于删除已经合并到其他分支的本地分支。

注意:

强制删除分支:如果分支还没有合并,使用-d选项会删除失败。如果确实想要删除未合并的分支,可以使用-D选项

3、远程分支

除了本地分支,Git 还支持远程分支。远程分支是存储在远程仓库(如 GitHub、GitLab 等)中的分支。

git branch -r :查看远程仓库中的所有分支

git push <remote - name> <branch - name>:推送本地分支到远程

git pull <remote - name> <branch - name>:拉取远程分支到本地

四、如何使用gitHub或者gitee等远程仓库

以gitee为例 :  Gitee - 基于 Git 的代码托管和研发协作平台

注册并登陆账号 

在使用 Git 时,我们需要从远程仓库(如 GitHub、GitLab、Gitee 等)拉取(git pull)或推送(git push)代码。如果不使用 SSH 公钥,每次进行这些操作时,都需要输入用户名和密码来进行身份验证。这在频繁操作时会非常繁琐。

在此之前,我们先配置一下ssh公钥

1、配置SSH公钥

cd //回到根目录
cd .ssh.  //进入到ssh目录下
ssh-keygen -t rsa -b 4096        // 生成ssh密钥

此时会在ssh目录下生成一个id_rsa的密钥文件

如果是第一次:就回车输入密码

如果不是第一次,输入一个新的文件名(test)后回车

在.ssh目录下 ls -ltr查看文件名

会看到新生成了两个文件,一个test ,一个test.pub

其中test.pub就是公钥文件,复制内容,在gitee中配置公钥

进入gitee设置,找到SSH公钥,把刚才复制的内容粘贴到公钥那一栏中,标题输入任意的名字

这个时候我们的SSH公钥就配置好了

如果我们想要当访问gitee.com的时候,指定使用SSH下的test密钥,我们需要增加一步配置

1. 检查SSH配置文件是否存在

首先,查看是否已经存在SSH配置文件(~/.ssh/config),可以通过以下命令在终端中查看:

ls -al ~/.ssh/config

如果文件不存在,你可以使用文本编辑器(比如nano、vim等)创建该文件,例如使用nano创建的命令如下:

nano config创建config文件并配置路径

nano ~/.ssh/config

2. 在SSH配置文件中添加配置内容

在打开的~/.ssh/config文件(如果是新建则直接开始编辑内容)中,添加如下类似的配置信息,来指定针对Gitee相关域名使用对应的SSH私钥(与你配置到Gitee上公钥对应的私钥):

Host gitee.com HostName gitee.com IdentityFile ~/.ssh/your_private_key_file

这里的your_private_key_file需要替换成你实际的SSH私钥文件名(比如id_rsa等,如果你在生成密钥对的时候没有指定特殊文件名,默认就是id_rsa,对应的公钥就是id_rsa.pub)。

配置完成后,保存并关闭文件(在nano编辑器中按Ctrl + X,然后按Y确认保存,再按回车确认文件名即可退出)。

3. 测试配置是否生效

可以在终端中尝试通过SSH连接Gitee来测试配置是否生效,执行如下命令:

ssh -T git@gitee.com

如果看到类似如下提示信息,就说明配置成功了:

Hi [你的Gitee用户名]! You've successfully authenticated, but Gitee.com does not provide shell access.

通过以上设置后,后续你在操作Gitee项目(比如克隆、推送、拉取等使用Git基于SSH协议的操作)时,就会默认使用你配置好的SSH密钥对进行认证交互了。

问题:如果配置好了SSH。git push的时候扔提示输入用户名和密码:

原因一:远程仓库 URL 使用的是 HTTPS 协议而非 SSH 协议

  • **解释**: 即使你在本地配置了 SSH 密钥,如果远程仓库在你克隆或者添加远程仓库时设置的是基于 HTTPS 的 URL(形如 https://gitee.com/your_username/your_repository.git),那么 git 在进行推送等操作时,会按照 HTTPS 方式去验证,自然就会要求输入用户名和密码。而 SSH 协议对应的 URL 应该是形如 git@gitee.com:your_username/your_repository.git 的格式。
  • **解决办法**:

origin https://gitee.com/your_username/your_repository.git (fetch) origin https://gitee.com/your_username/your_repository.git (push)

2. 如果看到地址是 `https` 开头的,就需要修改为 `git` 开头的 SSH 协议地址。可以使用以下命令来修改远程仓库地址(假设远程仓库别名是 `origin`,如果不是 `origin` 请替换成实际的别名):

git remote set-url origin git@gitee.com:your_username/your_repository.git

修改完成后,再次执行 git remote -v 确认远程仓库地址已经变成了 SSH 协议对应的正确格式。

2、连接本地仓库与远程仓库

我们在gitee创建一个新的仓库后,会出现以下界面

 我们需要配置git ,打开终端,开始配置你的用户名和邮箱

git config --global user.name "petrel"
git config --global user.email "14012394+zhao-hai-yan@user.noreply.gitee.com"

保存用户名和邮箱

git config --global credential.helper store

查看git配置信息,检验是否配置 成功

git config --global --list

git push

将本地仓库上传到远程仓库

在我们已经创建好本地仓库的情况下

git remote add <远程仓库别名> <远程仓库地址>
git push -u <远程仓库别名> <分支名>

git pull 

从远程仓库(gitee、gitHub)中将项目文件拉取到本地

git pull <远程仓库别名>

### 使用 Git on Mac OS 对于希望在 macOS 上使用 Git 的开发者来说,有多种方法可以安装并配置 Git。一种常见的途径是通过 Homebrew 安装最新版本的 Git[^2]。 #### 安装 Git 如果尚未安装 Homebrew,则需先完成此工具的设置。之后可以通过命令 `brew upgrade git` 来更新已有的 Git 版本至最新发布版。当然,如果是首次安装 Git,应使用如下命令: ```bash brew install git ``` 这会下载并安装最新的稳定版 Git 到操作系统中。 #### 验证安装 为了确认 Git 是否成功安装以及查看当前使用的 Git 版本号,可以在终端执行下面这条指令: ```bash git --version ``` 该操作返回的结果应当显示所安装的具体 Git 版本信息。 #### 初始化仓库 当准备好开始一个新的项目或是想要把现有的文件夹转换成 Git 仓库时,在目标目录下运行初始化命令即可创建新的本地存储库: ```bash cd /path/to/your/project git init ``` 上述动作会在指定路径建立 `.git` 文件夹来跟踪项目的变更历史记录。 #### 远程仓库连接 为了让团队成员能够协作开发同一个软件项目,通常还需要关联远程服务器上的共享资源库。假设已经在 GitHub 或其他服务商处建立了在线仓库地址,那么就可以利用以下方式将其绑定到本地环境中: ```bash git remote add origin https://github.com/user/repo.git ``` 此处替换实际存在的 URL 地址以匹配个人情况。 #### 日常工作流 日常工作中经常涉及的操作包括但不限于提交更改、拉取远端更新、推送本地改动等。这些都可以借助简单的 Git 命令实现高效管理源码变动的过程。 - 添加新修改准备提交: ```bash git add . ``` - 提交所有待处理的变化项,并附带描述性的消息说明此次修订原因: ```bash git commit -m "Your descriptive message here" ``` - 获取来自上游分支的新数据并与之同步: ```bash git pull origin main ``` - 将最近一次成功的提交推送到云端备份位置保存起来供他人访问查阅: ```bash git push origin main ``` 以上就是基本覆盖了大部分场景下的 Git 工作流程介绍;而对于更复杂的任务需求则可能涉及到更多高级特性和技巧的应用领域之外的知识点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值