Git学习

Git 工作流程图及Git 命令速查表

Git 工作流程图解:

pgsql 复制代码
                git clone
  ┌──────────────────────────┐
  │     Remote Repository    │ ←──────────────┐
  │        (e.g. GitHub)     │                │
  └────────────┬─────────────┘                │
               │                              │
           git pull                           │ git push
               │                              │
  ┌────────────▼─────────────┐        ┌───────┴──────────────┐
  │     Local Repository     │◄───────┤     Remote Changes   │
  │     (git commit 保存)     │        └─────────────────────┘
  └────────────┬─────────────┘
               │
           git commit
               │
  ┌────────────▼─────────────┐
  │     Staging Area (Index) │  ←─── git add
  └────────────┬─────────────┘
               │
        Modified/Tracked Files
               ▲
       ┌───────┴────────┐
       │ Working Dir.   │
       │  (本地工作目录)  │  
       └────────────────┘

完整数据流:

典型工作流程示例:

Git 初始化与配置

命令 作用
git init 初始化本地仓库
git config --global user.name "你的名字" 设置用户名
git config --global user.email "你的邮箱" 设置邮箱
git config --global core.editor vim 设置默认编辑器
git config --list 查看当前 Git 配置
  • 创建一个版本库:
  1. 选择一个合适的地方,创建一个空目录:
bash 复制代码
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
  1. 通过git init命令把这个目录变成Git可以管理的仓库(版本库又名仓库-Repository)。
bash 复制代码
git init
Initialized empty Git repository in /Users/michael/learngit/.git/
  1. 执行完毕后,当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见
  • 注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

基本工作流程

命令 作用
git status 查看状态
git add <文件> 添加到暂存区
git add . 添加所有修改
git commit -m "说明" 提交到本地仓库
git log 查看提交历史
git diff 查看修改内容
bash 复制代码
 git add file1.txt
 git add file2.txt file3.txt
 git commit -m "add 3 files."

Q:输入git add readme.txt,得到错误:fatal: not a git repository (or any of the

parent directories)。 A:Git命令必须在Git仓库目录内执行(git init除外),在仓库目录外执行是没有意义的。

Q:输入git add readme.txt,得到错误fatal: pathspec 'readme.txt' did not match

any files。

A:添加某个文件时,该文件必须在当前目录下存在,用ls或者dir命令查看当前目录的文件,看看文件是否存在,或者是否写错了文件名。

分支操作

命令 作用
git branch 查看所有本地分支
git branch <名称> 创建分支
git checkout <分支> 切换分支
git checkout -b <名称> 创建并切换新分支
git merge <分支> 合并分支到当前分支
git branch -d <名称> 删除分支

远程仓库

命令 作用
git remote -v 查看远程仓库地址
git remote add origin <地址> 添加远程仓库
git push -u origin master 第一次推送
git push 推送本地提交
git pull 拉取远程更新
git clone <地址> 克隆远程仓库

其他常用命令

命令 作用
git reset --hard <版本号> 回退到指定版本
git stash 暂存当前修改
git stash pop 还原暂存的修改
git tag <标签名> 打标签
git show <标签名> 查看标签信息

远程仓库

1.自行注册GitHub账号

2.生成新的 SSH 密钥(所有系统通用)

本地Git仓库和GitHub仓库之间的传输是通过SSH加密的;GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议;

GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。

  1. 打开终端(Windows 使用 Git Bash 或 PowerShell)
  2. 执行密钥生成命令(推荐使用更安全的 Ed25519 算法)
bash 复制代码
ssh-keygen -t rsa -C "youremail@example.com"
ssh-keygen -t ed25519 -C "your_email@example.com"
  • 出现提示时按回车使用默认路径(~/.ssh/id_ed25519)
  • 可以设置密码(推荐)或直接回车留空
    在用户主目录下,将有.ssh目录,这个目录下有id_rsa和id_rsa.pub这两个文件。
  1. 验证生成结果
bash 复制代码
ls ~/.ssh  # 应该看到 id_ed25519(私钥)和 id_ed25519.pub(公钥)

3.各系统复制公钥的方法

macOS

bash 复制代码
pbcopy < ~/.ssh/id_ed25519.pub  # 自动复制到剪贴板

Linux(需要安装 xclip)

bash 复制代码
sudo apt install xclip  # Ubuntu/Debian
xclip -sel clip < ~/.ssh/id_ed25519.pub

Windows(Git Bash)

bash 复制代码
cat ~/.ssh/id_ed25519.pub | clip

Windows(PowerShell)

bash 复制代码
type $env:USERPROFILE\.ssh\id_ed25519.pub | clip

4.GitHub 添加密钥步骤

  1. 登录 GitHub → 点击右上角头像 → Settings
  2. 左侧菜单选择 SSH and GPG keys
  3. 点击 New SSH key 按钮
  4. 填写信息:
    Title :标识密钥用途(如 "My MacBook Pro")
    Key type :保持默认 Authentication Key
    Key:粘贴剪贴板中的公钥内容(以 ssh-ed25519 开头)
  5. 点击 Add SSH key 完成

5.测试 SSH 连接

bash 复制代码
ssh -T git@github.com

正常应该返回:Hi username! You've successfully authenticated...

6.多密钥管理(适用于多设备)

  1. 创建配置文件
bash 复制代码
touch ~/.ssh/config
chmod 600 ~/.ssh/config
  1. 编辑配置(示例)
bash 复制代码
# 默认账号
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519

# 公司账号
Host github-company
  HostName github.com
  User git
  IdentityFile ~/.ssh/company_key
  1. 使用时替换地址
bash 复制代码
git clone git@github-company:company/project.git

7.可视化流程

相关推荐
nyf_unknown1 小时前
(vue)将文件夹打成tar包, Git Bash(推荐)具体使用
vue.js·git·bash
Brookty1 小时前
【Java学习】锁、线程死锁、线程安全2
java·开发语言·学习·java-ee
兔老大RabbitMQ1 小时前
Git Revert 特定文件/路径的方法
git
HalvmånEver7 小时前
在 C++ :x86(32 位)和 x64(64 位)的不同
开发语言·c++·学习
艾伦~耶格尔11 小时前
【数据结构进阶】
java·开发语言·数据结构·学习·面试
Janspran12 小时前
嵌入式linux学习 -- 进程和线程
linux·运维·学习
rannn_11113 小时前
【Javaweb学习|黑马笔记|Day1】初识,入门网页,HTML-CSS|常见的标签和样式|标题排版和样式、正文排版和样式
css·后端·学习·html·javaweb
lingggggaaaa14 小时前
小迪安全v2023学习笔记(六十一讲)—— 持续更新中
笔记·学习·安全·web安全·网络安全·反序列化
不太可爱的叶某人15 小时前
【学习笔记】Java并发编程的艺术——第6章 Java并发容器和框架
java·笔记·学习
yi.Ist16 小时前
图论——Djikstra最短路
数据结构·学习·算法·图论·好难