git 极简教程

git 极简教程

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 <file_name>

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

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

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

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

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

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

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

版本回退与文件恢复

  • 恢复上一次提交到索引 git reset HEAD <file>
  • 恢复索引到工作目录 git checkout -- <file>
  • 版本回退 git reset --hard <commit_id> | 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 git@github.com
    

本地仓与远程仓关联

本地先有
  • 在 github 新建仓库
  • 本地与远程建立关联
    git remote add origin git@github.com:username/rep_name.git # 建立关联
    git remote # 查看与之关联的远程仓
    git remote remove origin # 取消与远程仓的关联
    
远程先有
git clone git@github.com:username/rep_name.git # 默认 clone master 分支
git clone -b <branch_name> <address> # clone 指定分支

本地与远程的同步

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

其它

git branch -r # 查看远程分支

gitignore 规则

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

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

git 别名

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

[user]
	email = daibingh@gmail.com
	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 教程

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值