0%

Git 基础教程

初始设置

前提条件 - 电脑安装了 Git - 拥有一个 GitHub 账号

  1. 设置姓名和邮箱地址
    1
    2
    git config --global user.name "用户名"
    git config --global user.email "邮箱地址"
    之后可以在 .gitconfig 文件中看到这些信息

建议git config --global color.ui auto

  1. 配置 SSH key

    1
    2
    3
    4
    5
    $ ssh-keygen -t rsa -C "邮箱地址"
    Generating public/private rsa key pair.
    Enter file in which to save the key (~/.ssh/id_rsa): 按回车
    Enter passphrase (empty for no passphrase): 输入密码
    Enter same passphrase again: 再次输入密码

  2. 查看公钥内容

    1
    2
    $ cat ~/.ssh/id_rsa.pub
    ssh-rsa 公钥内容 邮箱地址

  3. 连接 GitHub 在 GitHub 的 Setting > SSH Keys 将公钥内容(以 ssh-rsa 打头)添加进去

  4. 测试是否已经连接成功

    1
    2
    3
    $ ssh -T git@github.com
    Enter passphrase for key 'C:\Users\WANG/.ssh/id_rsa': 输入密码
    Hi You've successfully authenticated, but GitHub does not provide shell access.

Git 基础操作

  1. 初始化仓库

    1
    git init

  2. 查看仓库状态

    1
    git status

  3. 向暂存区添加文件 添加单个文件git add 文件名 添加所有文件git add .

  4. 提交记录

    1
    git commit -m "提交信息"
    一般 commit 命令在 add 命令后使用,不过如果没有添加新文件只是修改原有文件可以直接用

1
git commit -am "提交信息"

如果想添加详细信息,直接用git commit打开编辑器

  1. 查看提交日志 详细版git log 简略版git log --pretty=short ID 版git log --pretty=oneline 显示文件最近一次提交和上次提交的改动git log -p (文件名)

  2. 查看区别 查看工作树和暂存区的差别git diff 查看工作树和最近一次提交的差别git diff HEAD 查看远程仓库和本地区别git diff origin/分支名

Git 分支操作

  1. 显示所有分支
    1
    git branch
    当前所在分支前有*标记

若在 branch 后加 -span 参数,可以同时显示远程仓库状态

  1. 创建分支或者获取远程分支
    1
    2
    创建:git branch -b 分支名
    获取:git checkout -b 分支名 origin/分支名
  2. 切换分支
1
git checkout 分支名

返回上一个分支

1
git checkout - 
4. 创建并切换分支

1
git checkout -b 分支名
  1. 合并分支进当前分支
1
git merge --no-ff 分支名

如果出现CONFILCT (content): Merge conflict in 文件名 就将该文件修改成你想要的样子,注意不能留下>>>>>>>和<<<<<<<

使用 --no-ff 参数能在历史记录中留下记录

1
2
git add 文件名
git commit -m '提交信息'
  1. 删除分支
1
git branch -D 分支名
  1. 图表形式查看分支
1
git log --graph

Git 回溯操作

  1. ==暂时==回到以前的提交状态

    1
    git checkout ID前六个字符
    注意这样操作会从原来分支中分离出来,不能长久停留,之后再用
    git checkout 分支名回到原来分支的最近一次提交状态

  2. 回溯历史版本

    1
    git reset --hard ID前六个字符
    这样做了等于回到了以前的版本,最近的所有提交被放弃

  3. 检出所有操作日志

    1
    git reflog
    记住git log只能检出以当前状态为终点的提交日志

  4. 修改上一次提交的提交信息

1
git commit --amend
  1. 压缩历史
1
git rebase -i HEAD^数字

数字代表显示前多少个记录,把要压缩的记录前的 pick 改成 fixup 之后保存关闭编辑器,这些记录就消失了

推送远程仓库

  1. 克隆仓库或者连接远程仓库

    1
    2
    克隆:git clone 仓库的链接
    连接:git remote add origin ssh链接

  2. 获取其他分支

    1
    git checkout -b 分支名 origin/分支名

  3. 推送分支

    1
    git push origin 分支名
    若在 push 后加 -u 参数,会将本地仓库当前分支的上游(upstream)设置成 origin 分支名分支,便于 pull 更新

  4. 更新分支

1
git pull origin 分支名

fork 的仓库更新

  1. 给原仓库设置名字
1
git remote add 名字 原仓库地址
  1. 获取最近数据
1
git fetch 原仓库名
  1. 更新
1
git merge 原仓库名/master

这样,当前分支就与原仓库的 master 合并了

GitHub URL 操作

  1. 查看分支间差别
1
仓库链接/分支名...另一分支名
  1. 查看分支几天前的差别
1
仓库链接/分支名@{7.day.ago}...分支名

可以用 day, week, month, year,区别太大则只会显示最近一部分

  1. 查看与指定日期的区别
1
仓库链接/分支名@{年-月-日}...分支名

差别太大无法显示

  1. 获取 pull request 的 diff 或 patch 文件
1
pull链接/编号.diff或pull链接/编号.patch

团队合作

  1. 用自己的账号 fork 仓库

  2. clone 自己账号下的仓库git clone 链接名

  3. 创建特性分支git checkout -b 分支名

  4. 上传特性分支git push origin 分支名

  5. 本地修改文件后提交git commit -am "提交信息"

  6. 申请合并 Pull Request

发送 Pull Request


2.


3.


4.


5.

接收 Pull Request

  1. clone 原仓库

  2. 设置发送者仓库为远程仓库

  3. fetch 发送者的仓库

  4. 创建用与检查的分支

  5. 把两分支合并

  6. 检查是否有问题

  7. 删除检查分支

您的打赏将会成为我前进的动力!!