Git 全方位

本地仓库

$ git checkout -- readme.txt

1.修改后未放至暂存区,回到和版本库一样的状态

2.修改后添加至缓存区,回到添加前的状态

总: 回到最近得 git add 或者 git commit 时的状态

$ git reset HEAD readme.txt

将缓存区的修改撤销(unstage)

$ git rm readme.txt

从版本库删除

远程仓库

$ ssh-keygen -t rsa -C "email@example.com"
$ cd ~/.ssh/id_rsa.pub
# 在 github / 个人 / SSH / Add SSH 填入密钥 

本地仓库与Github 仓库之间通过 SSH 加密

# origin 远程库名
# server-name 采用 github 则为 github.com
# path 用户名
# repo-name 仓库名
$ git remote add origin git@server-name:path/repo-name.git

在本地仓库里添加远程库

$ git clone git@server-name:path/repo-name.git

克隆远程库

# -u 关联相应分支
$ git push -u origin master

把本地库的所有内容推送到远程库

分支管理

HEAD指针不是指向提交,而是指向 master ,master 指向提交


# -b 创建并切换
$ git checkout -b dev

# 等价于两条
$ git branch dev
$ git checkout dev

创建并切换分支

# 当前分支 master
$ git merge dev

合并指定分支到当前分支

$ git branch -d dev

删除本地分支

$ git push --delete origin dev

删除远程分支

$ git branch -m develop dev

本地分支更名

冲突

人生八九不如意

$ git checkout -b feature1

# 修改 README.md 
# Creating a new branch is quick AND simple.
$ git add README.md
$ git commit -m "AND simple"

$ git checkout master

# 修改 README.md 
# Creating a new branch is quick & simple.
$ git add README.txt
git commit -m "& simple"

# 生成不同的两条线
# 目前在 master 分支上
$ git merge feature1

# CONFLICT!!!!!!!!!! 冲突
# vi README.md
$ git add README.md
$ git commit -m "conflict fixed"

冲突合并,修改

分支管理策略

$ git checkout -b dev
$ vi README.md
# ...
$ git add README.md
$ git commit -m "add merge"

# 切回 master
$ git checkout master

# --no-ff no Fast forward
$ git merge --no-ff -m "merge with no-ff" dev

默认使用 Fast forward 会丢掉分支消息,强制禁用增加参数 --no-ff

$ git log 00graph --pretty=oneline --abbrev-commit

用图形查看分支历史

分支策略

  • master 非常稳定、用来发布新版本
  • 在 dev 上开发
  • 每个人有自己的分支

Bug 分支

$ git stash

暂存工作现场

$ git checkout master
$ git branch -b issue-1
$ git add README.txt
$ git commit -m "fix bug 1"
$ git checkout master
$ git merge --no--ff -m "merged bug fix 1" issue-1
$ git branch -d issue-1

bug 修复

$ git checkout dev
$ git git stash pop

恢复现场

$ git stash list

查看暂存列表

$ git stash apply stash@{0}

恢复指定 stash

多人协作

队友操作

$ git clone git@github.com/KayorLien/lutu.git

$ git checkout -b dev orgin/dev
$ git add hello.js
$ git commit -m "add an comma"

自己操作

$ git add hello.js
$ git commit -m "Add coding: utf-8"

# REJECTED
$ git branch --set-upstream-to origin origin/kayor
$ git pull

# 解决冲突
$ git commit -m "merge & fix hello.js"

标签管理

# 打标签
# commit id: 283745
$ git tag -a v0.1 -m "version 0.1 released" [commit id]

$ git push origin tagname

# 推送所有未推过的标签
$ git push origin --tags

Git Cheat Sheet
Git Cheat Sheet
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,740评论 9 163
  • 1.git的安装 1.1 在Windows上安装Git msysgit是Windows版的Git,从https:/...
    落魂灬阅读 12,726评论 4 54
  • 本文参加#感悟三下乡,青春筑梦行#活动,本人承诺,文章内容为原创,且未在其他平台发表过。 早上起床稍稍...
    媛Unique阅读 154评论 0 1
  • 幸福的教学生活还有多远 雪 竹 幸福的教学生活离我们还有多远的距...
    xuezhu766阅读 249评论 0 0
  • 我默默地走 一步两步 笑着看远方的天空 我要去寻找一样东西 她经常出现在我梦中 笑脸?月亮?还是星空? 我摇摇头 ...
    周三临阅读 147评论 0 2