廖雪峰git学习笔记

Posted 卷の掌门

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了廖雪峰git学习笔记相关的知识,希望对你有一定的参考价值。

学习了廖雪峰老师的Git教学之后,将每一节的指令在这里做一个汇总。方便以后使用的时候随时查阅。

Git使用什么语言开发的?
C语言。

Windows安装Git

# 第一步Git官网下载Git傻瓜式安装,可以打开git bash即为成功。
# 第二步、设置参数
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

创建仓库(repository)

# 第一步、创建一个空目录
$ mkdir learngit
# 第二步、进入目录,将它变成Git可以管理的仓库
$ git init

文件提交至仓库

# 文件添加至暂存区
$ git add <file>
# 暂存区内容提交至时间线
$ git commit -m <message>

查看当前仓库状态

# 时刻掌握仓库当前的状态
$ git status
# 具体某文件修改
$ git diff <file>

版本回退

# 查看日志
$ git log
# 日志简洁输出
$ git log --pretty=oneline
# 日志时间线视图形式输出
$ git log --graph
# Git中,用HEAD表示当前版本,上一个版本是HEAD^,上上一个版本是HEAD^^
# 往上100个版本是HEAD~100
$ git reset --hard HEAD^
# 若又想找回怎么办
# 先查找commit id
$ git reflog
# 使用id切换版本
$ git reset --hard commit_id

撤销修改

# 丢弃工作区的修改
$ git checkout -- file
# 已经进入暂存区的修改撤销,重新放入工作区
$ git reset HEAD <file>
# 已经提交至版本库,版本回退

删除文件

# 一般情况下,在文件管理器或使用rm删除文件。这个时候需要将操作提交至暂存区
$ git rm <file>
# 接着commit
# 还有一种情况是误删,但是版本库中还是保存了旧版本可以恢复
$ git checkout -- file
# git checkout实际上是使用时间线上一个版本中的内容将现工作区替换

远程仓库(github或者gitee)

# 第一步创建SSH Key。
$ ssh-keygen -t rsa -C "youremail@example.com"
#然后可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个文件就是SSH Key的密钥对,一个是私钥,一个是公钥。
# 第二步,登录网站,添加上自己的公钥密钥

添加远程库

# 首先在Github建立空的远程仓库,接着将本地仓库与之关联
$ git remote add origin git@github.com:michaelliao/example.git
# origin的名称可以更改,是本地仓库终端操作时,保存的远程仓库的本地命名
# 本地仓库所有内容推送
$ git push -u origin master
# 实际上是将当前分支master推送,第一次需加-u参数,将本地的master与远程的新的master相关联
# 本地修改提交
$ git push origin master

从远程库克隆

# 现有远程库,我们本地从零开发
# 克隆本地库
$ git clone git@github.com:michaelliao/gitskills.git
# 将Git库的地址进行更换,执行后便可以在本地克隆库

创建和合并分支

# 创建一个叫dev的新分支
$ git checkout -b dev
# 加上-b,表示创建并切换。相当于
$ git branch dev
$ git checkout dev
# 查看分支情况
$ git branch
# 若dev上做了很多工作,现在dev合并到master
$ git checkout master
$ git merge dev
# 合并后dev的工作就全部保存至master,可以放心删除
$ git branch -d dev
# swich,新的分支操作命令。
# 创建并切换
$ git switch -c dev
# 切换至master
$ git switch master
# 普通模式下合并分支,不加参数,Git会自动使用Fast forward模式合并,删除分支后,不会保留此处合并分支的信息。普通模式则会生成一个commit
$ git merge --no-ff -m "merge with no-ff" <branch>

Bug分支

# 遇到bug,先保存当前工作现场
$ git stash
# 现在工作区将是最开始那样,干净的。
# 确定在哪个分支上面修复Bug,假设在master上面修复
$ git checkout master
$ git checkout -b issue-101
......
# 修复完成,合并分支
$ git merge --no-ff -m "merged bug fix 101" issue-101
$ git branch -d issue-101
# 回到之前的分支
$ git switch dev
# 查询之前储存的现场
$ git stash list
# 第一种恢复,stash需删除命令
$ git stash apply
$ git stash drop
# 第二种,恢复并删除
$ git stash pop
# 可以多次stash,然后恢复指定的
$ git stash apply stash@{0}
# 现在的bug是在master上面修复的,别的分支
$ git cherry-pick <commit>
#复制一个特定的提交至当前分支

Feature分支

# 开发一个新的feature,最好新建一个分支
# 如果要舍弃一个没有被合并过的分支,需要强行删除
$ git branch -D <name>

多人协作

# 当从远程仓库克隆时,实际上Git自动把本地的master和远程的master分支相对应
# 查看远程库信息
$ git remote
$ git remote -v
# 推送分支,把该分支的所有本地提交推送至远程库
$ git push origin master
# 创建本地和远程对应的分支
$ git checkout -b dev origin/dev
# 远程推送的提交出现冲突
# 建立本地分支和远程分支的关联
$ git branch --set-upstream-to=origin/dev dev
# 抓取合并
$ git pull

Rebase

# 可以把本地未push的分支提交历史整理未直线
$ git rebase

以上是关于廖雪峰git学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

廖雪峰Git教程学习笔记

廖雪峰Git教程学习笔记

廖雪峰Git教程学习笔记

廖雪峰Git教程学习笔记

廖雪峰的git学习笔记

《Git教程-廖雪峰》学习笔记