git 极简教程

git 极简教程

文章目录

  • git 极简教程
    • git 学习资源
    • 核心理解
      • 三个区域
      • 提交
      • HEAD
      • 合并
    • 本地常用操作
      • 本地新建、添加、提交
      • 查看、删除暂存区文件
      • 分支新建、切换、删除、合并、重命名
      • 移动 HEAD 到指定提交、分支、标签(切换)
      • 版本回退与文件恢复
      • 修改提交(覆盖提交)
    • 与远程仓(github)交互
      • 建立 ssh 连接
      • 本地仓与远程仓关联
        • 本地先有
        • 远程先有
      • 本地与远程的同步
      • 其它
    • gitignore 规则
    • git 别名
    • github pages 教程

git 学习资源

  • Git-book
  • Git 图解

核心理解

三个区域

  • 工作目录
  • 索引(暂存区)
  • 历史

提交

git的提交是文件历史状态的快照 ,Git 中的分支,其实本质上仅仅是个指向 commit 对象的可变指针。Git 会使用 master 作为分支的默认名字。在若干次提交后,你其实已经有了一个指向最后一次提交对象的 master 分支,它在每次提交的时候都会自动向前移动。

HEAD

Git 是如何知道你当前在哪个分支上工作的呢?其实答案也很简单,它保存着一个名为 HEAD 的特别指针。它是一个指向你正在工作中的本地分支的指针(译注:将 HEAD 想象为当前分支的别名)。每次提交后 HEAD 随着当前分支一起向前移动 。切换到哪个分支,哪个分支就成为自动向前移动的指针HEAD。 HEAD^ 代表上一次提交的版本,HEAD^^ 代表上上次提交的版本,HEAD~100 表示上 100 次提交的版本

合并

合并分两种情况,fast-forward(快进),分叉合并。前者中两个分支是直系亲属,后者,没有直系关系,但是有共同的祖先。

本地常用操作

本地新建、添加、提交

mkdir rep_name
cd rep_name
git init # 本地仓初始化
...
git add . # 添加到索引
git commit -m 'xxx' # 提交到历史
git status # 查看状态
git log --graph --pretty=oneline --abbrev-commit # 查看提交、合并历史

查看、删除暂存区文件

git ls-files # 查看
git rm -r --cached 

分支新建、切换、删除、合并、重命名

git branch # 查看分支列表
git branch  # 新建分支
git checkout  # 切换分支
git branch -b  # 新建分支并切换
git branch -d  # 删除分支

# 切换到 master 分支,与另一个分支合并
git checkout master
git merge 
git branch -m   # 分支重命名

移动 HEAD 到指定提交、分支、标签(切换)

每一次提交都是一个历史节点,而 HEAD、分支、标签分布在部分历史节点之上。

git checkout | | # 移动 HEAD 到指定分支、标签、提交(索引和工作目录同步改变)

git checkout HEAD~ # 将head指向上一次提交的节点,同时恢复索引和工作目录,分支指向不动

版本回退与文件恢复

  • 恢复上一次提交到索引 git reset HEAD
  • 恢复索引到工作目录 git checkout --
  • 版本回退 git reset --hard | HEAD^ 注: 与切换分之不同
    • 重新回到回退之前版本,使用 git reflog 找到对应的 commit id

修改提交(覆盖提交)

git commit --amend
git commit --amend --no-edit

与远程仓(github)交互

建立 ssh 连接

  • 本地安装 git
  • 产生密钥
     ssh-keygen -t rsa
     # 之后输入三个回车
    
  • C:\Users\Administrator\.ssh\id_rsa.pub 中的公钥添加到 github 个人账户
  • 测试
     ssh -T [email protected]
    

本地仓与远程仓关联

本地先有

  • 在 github 新建仓库
  • 本地与远程建立关联
    git remote add origin [email protected]:username/rep_name.git # 建立关联
    git remote # 查看与之关联的远程仓
    git remote remove origin # 取消与远程仓的关联
    

远程先有

git clone [email protected]:username/rep_name.git # 默认 clone master 分支
git clone -b  
# clone 指定分支

本地与远程的同步

git fetch origin  # 下载远程分支到本地
git pull origin  # 下载远程分支到本地,并与当前分支合并
git push origin  # 上传当前分支,并与远程仓指定分支合并

其它

git branch -r # 查看远程分支

gitignore 规则

新建 .gitignore 文件,在其中添加 git 命令忽略的目录。但是,.gitignore 只能忽略那些原来没有被 track 的文件,如果某些文件已经被纳入了版本管理中,则修改 .gitignore 是无效的,解决办法:

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

git 别名

建议直接复制更改 .gitconfig 文件

[user]
	email = [email protected]
	name = daibingh
[alias]
	st = status
	co = checkout
	ci = commit
	br = branch
	lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit

github pages 教程

  • github pages 基础
  • 自定义 github pages

你可能感兴趣的:(git)