Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。总结一下 Git 的工作流程和基本的操作命令。

Git 命令行基本操作

本地库初始化

1
git init

注意:生成的 .git 目录中存放的是本地库相关文件,不要删除。

设置签名

作用:区分不同开发人员身份。

辨析:这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关系。

  • 项目(仓库)级别:仅在当前本地库有效

    1
    2
    git config user.name xxx
    git config user.email xxx@xx.com

    信息保存位置:.git 目录下的 config 文件中

  • 系统用户级别:在当前登录的操作系统用户有效

    1
    2
    git config --global user.name xxx
    git config --global user.email xxx@xx.com

    信息保存位置:~/.gitconfig(根目录下的 .gitconfig 文件中)

优先级别项目级别 > 系统级别

状态查看

查看工作区、暂存区状态:

1
git status

modified 为红色,说明工作区和暂存区内容不一致;modified 为绿色,说明暂存区和本地库内容不一致。

添加到暂存区和取消添加到暂存区

将工作区的新建或修改添加到暂存区:

1
git add [file name]

取消添加到暂存区命令:

1
git rm --cached [file name]

提交到本地库

将暂存区内容提交到本地库:

1
git commit -m "commit message" [file name]

查看历史记录

1
2
3
4
5
git log 
git reflog
git log --graph
git log --pretty=oneline
git log --oneline

说明:HEAD@{移动到当前版本需要多少步}

版本前进后退

  • 基于索引值(推荐

    1
    git reset --hard [局部索引值]
  • 使用 ^ 符号(只能后退

    1
    git reset --hard HEAD^

    注意:几个 ^ 表示后退几步

  • 使用 ~ 符号(只能后退

    1
    git reset --hard HEAD~n

    注意:表示后退 n 步

reset 的三个参数比较

  • soft:
    • 仅本地库移动 HEAD 指针
    • 暂存区和工作区没有修改
  • mixed:
    • 在本地库移动 HEAD 指针
    • 重置暂存区 ,使其与本地库一致
  • hard:
    • 在本地库移动 HEAD 指针
    • 重置暂存区,使其与本地库一致
    • 重置工作区,使其与本地库一致

文件差异比较

  • 将工作区中的文件和暂存区进行比较:

    1
    git diff [文件名]
  • 将工作区中的文件和本地库历史记录比较:

    1
    git diff [本地库中历史版本] [文件名]
  • 不带文件名则比较多个文件

分支管理

分支操作

  • 创建分支:

    1
    git branch 分支名
  • 查看分支:

    1
    git branch -v 
  • 切换分支:

    1
    2
    git checkout 分支名
    git checkout -b 分支名
  • 合并分支:

    1
    git merge [有新内容分支]

    注意:先切换到接受修改的分支(被合并,增加新内容)上再合并。

  • 删除分支:

    1
    git branch -d 分支名

解决冲突

  1. 编辑,删除特殊标记 <<< ===
  2. 修改到满意位置,保存退出
  3. 添加到缓存区 git add 文件名
  4. 提交到本地库 git commit -m '日志信息' 注意:后面一定不能带文件名

Git & GitHub

查看当前所有远程地址别名

1
git remote -v

创建远程库地址别名

1
git remote add [别名] [远程地址]

推送

1
git push [别名] [分支名]

克隆

1
git clone <-b 分支名> [远程地址] <本地目录名>

<>表示可选,默认克隆 master 分支,本地目录名称与版本库同名。

拉取

pull = fetch + merge

1
2
3
git fetch [远程库地址别名] [远程分支名]
git merge [远程库地址别名/远程分支名]
git pull [远程库地址别名] [远程分支名]

解决冲突

如果不是基于远程库最新版做的修改不能推送,必须先 pull 下来按照分支冲突办法解决。

SSH 免密登录

  1. ssh-keygen -t rsa -C [GitHub 邮箱地址]
  2. cd .ssh
  3. cat id_rsa.pub
  4. 登录 GitHub Settings –> SSH and GPG keys –> New SSH Key 粘贴

参考