廖雪峰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学习笔记的主要内容,如果未能解决你的问题,请参考以下文章