Git 的正确使用姿势与最佳实践 | 青训营

95 阅读6分钟

Git是一个分布式版本控制系统,用于跟踪文件和代码的变化。Git的主要目标是有效地管理项目的版本历史,使多人协作更加容易,并且可以轻松地回溯和恢复以前的代码状态。本文将以GitHub远程仓库为例演示Git的使用方式。

1.初始化Git仓库

在开始一个新项目时,在项目目录下右键打开Git Bash,使用 git init 命令初始化一个空的 Git 仓库。这将创建一个隐藏的 .git 目录,用于存储 Git 的相关信息和配置。

2.配置相关信息

在尝试提交代码前,需要对用户的信息(姓名、邮箱)进行配置,建议直接配置全局用户信息

$ git config --global user.name "Your Name" 
$ git config --global user.email "your.email@example.com"

若要查看全局配置,可以使用如下指令

$ git config --global -l

注意如果使用了系统代理,访问如Github等外网就会从代理端口进行访问,因此需要在git中配置代理信息。

git config --global http.proxy http://127.0.0.1:xxx

3.配置SSH密钥

在GitHub上配置SSH(Secure Shell)密钥可以在与远程仓库进行通信时更加安全和方便。以下是配置SSH密钥的步骤:

  1. 生成SSH密钥:通过以下命令可以在本地生成一个新的SSH密钥对。

    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    

    之后系统会提示是否修改文件名以及是否设置密码,由于比较麻烦,这里就一路回车了

  2. 获取公钥:打开生成的公钥文件(通常是~/.ssh/xxx.pub),并将其内容复制。

  3. 在GitHub上添加SSH密钥:登录到GitHub帐户,然后按下图所示添加SSH密钥:

image.png

4.Git 基本操作

git add:添加文件到暂存区

```
# 添加某个文件到暂存区,后面可以跟多个文件,以空格区分
git add xxx
# 添加当前更改的所有文件到暂存区。
git add .
```

git commit:提交到本地仓库

```
# 提交暂存的更改,会新开编辑器进行备注编辑
git commit 
# 提交暂存的更改,不会打开编辑器,-m即备注信息
git commit -m "you message"
```

git status:检查工作目录的状态。它会显示已修改但尚未暂存的文件、已暂存但尚未提交的文件,以及其他相关信息。

git push:把本地的提交推送到与当前分支关联的远程分支上,例如:

git push https://github.com/xxx/xxx.git master

git pull:从远程仓库拉取代码并合并到本地

# git pull 等同于 git fetch && git merge 
git pull <远程主机名> <远程分支名>:<本地分支名>

git fetch:仅仅只会拉取远程的更改,不会自动进行 merge 操作

# 获取远程仓库特定分支的更新
git fetch <远程主机名> <分支名>
# 获取远程仓库所有分支的更新
git fetch --all

5.Git 分支

  1. 主分支(Main Branch): 主分支通常是项目的稳定版本,也被称为"master"。它包含了已经发布或即将发布的版本的代码。主分支通常被认为是项目的主要线路,它的更改要经过严格的测试和审查。

  2. 开发分支(Development Branch): 用于整合各种功能和修复的分支。开发人员在这个分支上进行日常的开发工作,将不同的特性合并到开发分支中进行整合和测试。

  3. 特性分支(Feature Branches): 特性分支用于开发单个功能、特性或任务。每个特性分支都从开发分支派生,然后开发人员在这个分支上进行相关工作。一旦功能开发完成,特性分支会被合并回开发分支。

  4. 发布分支(Release Branches): 在准备发布一个新版本时,可以从开发分支创建一个发布分支。在发布分支上进行最后的测试、修复和准备工作。一旦准备就绪,发布分支可以合并回主分支以及开发分支,确保主分支和开发分支都包含了新的发布。

  5. 修复分支(Hotfix Branches): 当主分支上出现紧急的bug或问题需要修复时,可以创建一个修复分支。修复分支从主分支分离,用于修复问题。一旦修复完成,修复分支会合并回主分支和开发分支。

  6. 实验性分支(Experimental Branches): 有时,开发人员可能需要在不影响主要开发线路的情况下进行实验性的更改。这些实验性分支允许开发人员尝试新想法、功能或技术,而不会影响主要的开发流程

    # 新建本地分支,但不切换
    git branch <branch-name> 
    # 查看本地分支
    git branch
    # 查看远程分支
    git branch -r
    # 查看所有分支,包括本地和远程分支
    git branch -a
    # 删除本地分支
    git branch -D <branch-nane>
    # 重新命名分支
    git branch -m <old-branch-name> <new-branch-name>
    

6.Git 远程仓库操作

  1. 克隆远程仓库: 如果想获取远程仓库的代码副本,可以使用以下命令来克隆远程仓库到本地:

    git clone <repository_url>
    

    <repository_url>是远程仓库的URL,通常是以httpsgit协议开头的。

  2. 添加远程仓库: 如果您想将一个远程仓库与本地仓库关联起来,可以使用以下命令添加远程仓库:

    git remote add <remote_name> <repository_url>
    

    <remote_name>是一个用于引用远程仓库的名称,例如origin是默认的远程仓库名称。

  3. 推送代码: 当您在本地进行了代码修改并提交后,您可以使用以下命令将这些更改推送到远程仓库:

    git push <remote_name> <branch_name>
    

    这会将本地指定分支的更改推送到远程仓库。

  4. 拉取更新: 如果其他人对远程仓库进行了更改,您可以使用以下命令将这些更新拉取到本地仓库:

    git pull <remote_name> <branch_name>
    

    这会将远程指定分支的更新合并到您的本地仓库。

  5. 获取远程分支列表: 您可以使用以下命令查看远程仓库中的分支列表:

    git branch -r
    

    这将显示远程分支的列表。

  6. 克隆特定分支: 如果您只想克隆远程仓库的特定分支,可以使用以下命令:

    git clone -b <branch_name> <repository_url>
    
  7. 删除远程分支: 要删除远程仓库中的分支,可以使用以下命令(谨慎使用,这将永久删除分支):

    git push <remote_name> --delete <branch_name>
    

7. 版本回退

  1. 查看提交历史:

    在您的项目目录中,打开终端(命令行界面)并输入以下命令:

    bashCopy code
    git log
    

    这将显示项目的提交历史。每个提交都有一个唯一的哈希值(commit hash)。

  2. 选择要回退到的提交:

    git log 输出中,找到您要回退到的特定提交。复制该提交的完整哈希值(通常是一串字符,例如abcdef1)。

  3. 执行回退操作:

    在终端中,使用以下命令执行回退操作,将代码库回退到指定的提交状态:

    bashCopy code
    git reset --hard <commit_hash>
    

    <commit_hash> 替换为您要回退到的提交的实际哈希值。