笔者自学git的一些小心得,如有不对欢迎斧正

68 阅读8分钟

初见并学习使用git(初见教程)

git是一个分布式版本控制系统。可以帮你智能管理代码文件所有修改历史的工具,可以随时回退到任意一个历史版本。

核心概念(理解就好了)

  • 仓库(Repository / Repo): 你的项目目录,里面包含了项目文件以及git用来管理这些文件历史记录的隐藏目录(.git)本地仓库在你的电脑上,远程仓库在服务器上。
  • 本地仓库(Local Repository): 你在本地电脑上的仓库,用来存储项目文件的历史记录。
  • 远程仓库(Remote Repository): 你在服务器上的仓库,用来存储项目文件的历史记录。你可以与其他开发者共享你的项目,或者从其他开发者那里获取最新的代码。
  • 工作区(Working Directory): 你在本地电脑上的项目目录,用来编辑和管理项目文件。
  • 暂存区(Staging Area): 一个中间区域,用来暂存你要提交的文件。你可以在暂存区中添加、删除或修改文件,然后一次性提交到本地仓库。
  • 提交(Commit): 一个操作,用来将暂存区中的文件永久保存到本地仓库的历史记录中。每个提交都有一个唯一的标识符(哈希值),用来表示该提交的状态。
  • 分支(Branch): 一个指针,指向本地仓库中的一个提交。你可以在不同的分支上工作,而不会影响到其他分支。
  • 远程分支(Remote Branch): 一个指针,指向远程仓库中的一个提交。你可以使用远程分支来与其他开发者共享你的项目,或者从其他开发者那里获取最新的代码。
  • 远程(Remote): 一个服务器,用来存储远程仓库。你可以使用远程来与其他开发者共享你的项目,或者从其他开发者那里获取最新的代码。
  • 克隆(Clone): 一个操作,用来从远程仓库中复制项目到本地仓库。你可以在本地仓库中工作,而不会影响到远程仓库。

开始使用git(准备进入git的世界啦)

安装git

访问官网(https://git-scm.com/install/)下载对你操作系统的安装程序
运行安装程序,可以一路next下去
安装完成后,打开终端(在 Windows 上是 Git Bash 或命令提示符 CMD/PowerShell;在 macOS/Linux 上是 Terminal)。
输入 git --version 来检查安装是否成功。如果安装成功,会显示 git 的版本号

配置git(第一次的配置总是格外的繁琐)

打开终端 (Terminal) (在 Windows 上是 Git Bash 或命令提示符 CMD/PowerShell;在 macOS/Linux 上是 Terminal)。
输入 git config --global user.name "Your Name" 来配置你的用户名。
输入 git config --global user.email "your.email@example.com" 来配置你的邮箱。
    *   --global 表示全局配置,会影响到所有的 git 仓库。如果要为某个特定的仓库配置,去掉 --global 即可。

基础git命令工作流程(初见git)

1.初始化仓库:
    首先先进入项目目录,然后告诉git开始管理这个目录
    cd /path/to/your/project    #切换到项目目录(替换为你的项目目录路径)
    git init                    #初始化git仓库
2.查看状态
    git status                  #查看当前仓库状态
        *   它会显示哪些文件被修改了但还没暂存 (Untracked files 或 Changes not staged for commit)。
        *   哪些文件已经暂存了准备提交 (Changes to be committed)。
3.暂存文件
    git add <文件名>             #暂存指定文件(替换为你要暂存的文件路径)
    git add .                   #暂存所有修改过的文件
    git add *.txt               #暂存所有txt文件(替换为你要暂存的文件类型)
        *   运行 git status 来查看暂存区的状态,确认你想要暂存的文件。
4.提交文件
    git commit -m "Commit message"  #提交暂存的文件,-m 后面是提交信息(替换为你自己的提交信息)
        *   -m "...":后面紧跟一个简洁清晰的提交信息,说明这次提交做了什么修改。非常重要!!! 
            例如 git commit -m "添加用户登录功能" 或 git commit -m "修复首页图片无法加载的问题"。
        *   运行 git status 会提示工作区是干净的(没有要暂存或提交的修改)。
        *   每次提交后,都可以运行 git log 来查看提交历史,确认提交是否成功。
5.查看提交历史 
    git log                     #查看提交历史
        *   会显示提交的哈希值 (一串唯一ID)、作者、日期和提交信息。
        *   按 q 键退出查看。
        *   常用选项:
        *   git log --oneline   #简洁的一行显示。
        *   git log -p          #显示每次提交具体修改了哪些内容(diff)。
        *   git log --graph     #以图形化方式显示分支信息(更直观)。

与远程仓库协作(来点进阶的)

6.添加远程仓库
    git clone <远程仓库地址> [本地文件夹名] #添加远程仓库(替换为你自己的远程仓库URL)
        *   origin 是远程仓库的默认名称,你可以根据需要自定义。
        *   运行 git remote -v 来查看已添加的远程仓库。
        *   例如:git clone https://github.com/username/project.git
        *   如果你省略 [本地文件夹名],Git 会默认创建一个和远程仓库同名的文件夹。
        *   这个命令自动为你添加了一个叫 `origin` 的远程地址指向你克隆的仓库。
7.查看远程仓库信息
    git remote -v #查看关联的远程仓库地址(上文提到的origin)
        *   会显示远程仓库的 URL 和名称。
        *   例如:origin https://github.com/username/project.git (fetch)
        *   origin https://github.com/username/project.git (push)
        *   这表示你可以从 origin 拉取代码(fetch),也可以向 origin 推送代码(push)。
8.拉取远程更新
    git pull origin <分支名> #拉取远程分支的更新(替换为你要拉取的分支名)
        *   先执行 git fetch 来获取远程分支的最新状态,然后再执行 git merge合并到当前分支
        *   例如:git pull origin main 会拉取 origin 仓库的 main 分支的更新。
        *   在开始工作前和推送前,先养成git pull 的习惯,避免与别人的工作发生冲突
9.推送本地提交
    git push origin <分支名> #推送本地分支的提交到远程仓库(替换为你要推送的分支名)
        *   例如:git push origin main 会将当前分支的提交推送到 origin 仓库的 main 分支。
        *   第一次推送时,需要加上 -u 选项来设置默认推送分支:git push -u origin main。
        *   后续推送时,就可以直接使用 git push 了。

分支操作简化版本 (大的要来力)

10.创建新分支
    git branch <分支名>         #创建新分支(替换为你自己的分支名)
    git checkout <分支名>       #切换到新创建的分支(替换为你自己的分支名)
    git checkout -b <分支名>    #创建并切换到新分支(替换为你自己的分支名)
        *   例如:git branch feature/login 会创建一个名为 feature/login 的新分支。
        *   运行 git branch 来查看所有分支,当前所在分支会有一个星号 (*) 标记。
11.查看分支 
    git branch                  #查看所有分支
        *   会显示所有分支的列表,当前所在分支会有一个星号 (*) 标记。
    git branch -a               #查看所有分支(包括远程分支)
        *   会显示所有分支的列表,包括本地分支和远程分支。
        *   远程分支会显示在 origin/ 前缀下。
12.切换分支
    git checkout <分支名>       #切换到指定分支(替换为你要切换的分支名)
        *   例如:git checkout main 会切换到 main 分支。
        *   运行 git branch 来查看所有分支,当前所在分支会有一个星号 (*) 标记。
    git switch <分支名>         #切换到指定分支(替换为你要切换的分支名) #git 2.23+的新命令,作用同上。
13.合并分支(将另一个分支的更改合并到当前分支)
    git checkout main          # 先切换到要合并到的目标分支(如 main)
    git merge feature-login    # 将 feature-login 分支的改动合并到当前分支 (main)
        *   例如:git merge feature/login 会将 feature/login 分支的更改合并到当前分支。
        *   运行 git log 来查看合并历史,确认合并是否成功。
        *   如果合并时文件有冲突,Git 会提示你。你需要手动编辑那些有冲突的文件(文件里会有 `<<<<<<<`, `=======`, `>>>>>>>` 标记冲突部分),解决冲突后,执行 `git add <解决冲突的文件>`,然后 `git commit` 来完成合并。
13.5 冲突提示
    git diff                       # 查看工作区与暂存区的差异(未 add 的改动)
    git diff --staged              # 查看暂存区与最后一次提交的差异(已 add 的改动)
    git diff <commit1> <commit2>   # 查看两次提交之间的差异
14.删除分支(本地)
    git branch -d <分支名>  # 删除已合并的分支(安全)
    git branch -D <分支名>  # 强制删除分支(即使没合并,谨慎使用)
        *   例如:git branch -D feature/login 会强制删除 feature/login 分支(无论是否合并)。