Git操作——廖雪峰Git教程
这个笔记主要记录的命令,用来翻查命令使用。
学习了一部分,剩下的部分后续更新o( ̄▽ ̄)ブ
廖雪峰的Git教程
零散的命令:
- 显示当前目录——pwd
- 显示隐藏目录——ls -ah
- 查看文件 —— cat + <文件名>
创建版本库
- 创建空目录,并进入该目录
- 通过***git init***命令把这个目录变成Git可以管理的仓库
把文件添加到版本库
用命令***git add***把文件添加到仓库
用命令***git commit***把文件提交到库
-m 后面输入的使本次提交的说明
可以多次**add不同文件,在commit一次性上传多个文件
$git add readme.txt $git add file1.txt file2.txt $git commit -m "add 3 files"
时光机穿梭
运行***git status***命令查看仓库当前的状态,文件是否修改,是否添加入库否
使用***dit diff*** + 文件名 命令查看文件修改
git diff 查看到的是工作区和暂存区的不同
git diff --cached 查看到的是暂存区和HEAD的不同
版本回退
使用 git log 命令显示从最近到最远的提交日志,查看提交历史,以便确定回退到哪个版本
–pretty=oneline 输出信息简洁化, 输出的一段神奇的数字是commit id(版本号)
使用 git reset --hard HEAD^ (几个^,往上回退几个版本)回退(n)个版本
也可以写成 git reset --hard HEAD~n (个数)
使用 git reset --hard <版本号> 在各个版本穿梭
使用 git reflog 查看命令历史,以便要回到未来的哪个版本
工作区和暂存区
工作区(Working Directoty): 电脑能看到的目录
版本库(Repository): 工作区有一个隐藏目录*.git*,是Git的版本库
git add 命令实际上是把要提交的所有修改放在暂存区(Stage),然后执行 git commit 可以一次性把暂存区的所有修改提交到分支(master)
管理修改
使用 git diff HEAD – <文件名> 查看工作区和版本库里最新版本的区别
每次修改,如果不用 git add 到暂存区,那就不会加入到 commit 中。
撤销修改
使用 git checkout --<文件名> 可以丢弃工作区的修改
使用 git reset HEAD <文件名> 可以把暂存区的修改撤销*(unstage)*,重新放回工作区
使用 git reset HEAD^ <文件名> 回退到上个版本
如果提交到远程库就没办法了
删除文件
- 从版本库删除该文件
- 使用 git rm <文件名> 删除该文件,并且 git commit
- 恢复本地误删文件
- 本地误删后,使用 git checkout – <文件名> 从版本库恢复误删文件
远程仓库
本地Git仓库和gitHub仓库建立连接
创建SSH key
ssh-keygen -t rsa -C "youremail@example. com"
一路回车,使用默认值,但是记得设置***passphrase***密码,这是后面要用的!
登录GitHub,打开***setting***界面,然后打开***SSH and GPG keys***界面。
点击***New SSH key***, title随意, key框中粘贴 用户主目录/.ssh目录/***id_rsa.pub***文件中的内容
添加远程库
登录Github, 创建新的仓库(Create a new repository)
把本地仓库的内容推送到GitHub仓库
①本地仓库与gitHub建立的仓库相连接
$ git remote add origin git@github.com:<自己的用户名>/<仓库名>.git
origin是远程库的名字,是Git默认的叫法
②把本地库的所有内容推送到远程库上(这里可能需要输入passphrase密码)
$ git push <可填-u> origin master
-u 如果远程库是空的,我们第一次推送master分支时,加上了 -u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
从远程库克隆
使用命令 git clone 克隆一个远程库
#git clone git@github.com:<用户名>/<库名>.git
分支管理
分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN。
如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,结果,你既学会了Git又学会了SVN!(还是廖老师的例子好)
创建与合并分支
查看当前分支 —— git branch
创建分支
git branch <分支名称>
git switch -c <分支名称>
-c 表示创建并切换
git checkout -b 分支名称
-b 表示创建并切换,相当于以下两条命令
$ git branch dev $ git checkout dev
切换分支
- git checkout <分支名称>
- git switch <分支名称>
将XXX分支合并到当前分支上 —— git merge XXX
删除分支 —— get branch -d <分支名称>
解决冲突
对相同文件,不同分支各自都有新的提交,这种情况下,Git无法执行“快速合并”,必须手动解决冲突后再提交。
使用***git merge <分支名>*** 后,存在冲突的文件内容会出出现“ <<<<<<<,=======,>>>>>>> ”。Git用<<<<<<<, =======,>>>>>>>标记出不同分支的内容。
使用 git status 可以知道产生冲突的文件。
对冲突的文件进行修改,修改之后重新提交,产生冲突的两个分支合并。
使用 git log – graph 命令可以查看分支的合并情况,输入q退出
$ git log --graph --pretty=oneline --abbrev-commit
分支管理策略
通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
禁用Fast forward模式合并分支,须添加 –no-ff 参数,且合并要创建一个新的commit,所以加上 -m 参数,把commit描述写进去。
$ git merge --no-ff -m "描述" 分支名称
合并分支时,加上--no-ff
参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward
合并就看不出来曾经做过合并。(这个我没明白,求解答(>人<;))
Bug分支
保存工作现场 —— git stash
查看工作现场 —— git stash list
恢复工作现场
- git stash apply 恢复后,stash内容并不删除,需要用 git stash drop 来删除
- git stash pop , 恢复的同时把stash内容也删除了
修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
当手头工作没有完成时,先把工作现场 git stash 一下,然后去修复bug,修复后,再 git stash pop,回到工作现场;
在master分支上修复的bug,想要合并到当前dev分支,可以用 git cherry-pick 命令,把bug提交的修改“复制”到当前分支,避免重复劳动。
总的来说,就是,在分支下进行的工作,如果不commit的话,回到master,就会显示出你在分支下你添加的工作。这个时候,你在master下修改完bug提交后,正在分支进行的工作也会提交了。为了避免这个情况,你就在分支下,git stash将工作隐藏,这个时候,切换到master时候,修改了bug,提交。分支的内容不会被提交上去。(这是下面的评论,但是说得很明确)
Git操作——廖雪峰Git教程相关推荐
- Git简明入土教程2.4万字-转自廖雪峰Git
文章目录 0 前言 1 简介 2 切换仓库版本 2.1 版本回退 2.2 工作区与暂存区 2.3 管理修改 2.4 撤销修改 2.5 删除文件 3 远程仓库 3.1 添加远程库 3.2 从远程库克隆 ...
- 学习廖雪峰Git入门教程--总结
廖雪峰的教程作为入门级别的个人感觉还是很实用的,大家可以去参考学习:廖雪峰Git教程 2018年8月23日14:52:25 [安装git] 先安装Git 安装好之后打开git.bash,之后输入下面的 ...
- 廖雪峰Git简明教程整理
廖雪峰Git简明教程 声明:本教程完全搬运自廖雪峰老师的个人网站,仅限于学习使用.所有版权归廖雪峰老师所有.整理人为Megatron,如果侵权请联系本人zhangwz93@foxmail.com删除. ...
- 廖雪峰Git教程学习笔记
廖雪峰git简单教程学习笔记 教程地址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b ...
- 《廖雪峰Git教程》学习记录
<廖雪峰Git教程>学习记录 作者:婷婷 摘要:这段时间学习了廖雪峰老师的Git教程,廖老师已经写得非常易懂了,本人在此处记录了学习到的在windows环境下Git的基本用法,写此博客,便 ...
- [廖雪峰Git教程]知识点整理
Git 删除本地分支和远程分支 git branch -d test-2020 #删除本地分支 git push origin --delete test-2020 #删除远程分支git branch ...
- Python 3 学习(一)—— 基础:廖雪峰 Python 教程学习笔记
文章目录 Python教程 值类型和引用类型 列表和字典的基本操作 列表 元组 字典 Set 函数 内置函数 定义函数 空函数 参数检查 定义默认参数要牢记一点:默认参数必须指向不变对象! Pytho ...
- 廖雪峰python教程视频-为什么看不懂廖雪峰的Python学习教程?
廖雪峰的Python教程已经很友好了,接近于把饭喂到嘴边了. 这不是廖雪峰教程的问题,而是一个基础代码技能和实际应用需求的代码技能差距太远导致的. 如果是新手,只学会了廖雪峰Python教程,那约等于 ...
- 廖雪峰python教程完整版-为什么看不懂廖雪峰的Python学习教程?
廖雪峰的Python教程已经很友好了,接近于把饭喂到嘴边了. 这不是廖雪峰教程的问题,而是一个基础代码技能和实际应用需求的代码技能差距太远导致的. 如果是新手,只学会了廖雪峰Python教程,那约等于 ...
- 廖雪峰Python教程-笔记
廖雪峰Python教程 学习范围: Python基础 函数 高级特性 函数性编程 模块 面向对象编程 错误,调试和测试 IO编程 笔记: Python的整数没有大小限制 Python 3的字符串使用U ...
最新文章
- Ubuntu安装Beyond-Compare 4
- 在浏览器中内嵌word_关于项目浏览器内核的选取解读
- 关于STM32 MDK中USE_STDPERIPH_DRIVER问题的解释
- java桥_java 泛型--桥方法
- 统计list里面相同元素个数_LeetCode 第 347 号问题:前 K 个高频元素
- copyToLocalFile报出空异常
- make clean、make mrproper、make distclean的区别【转】
- 12. 切勿对STL容器的线程安全性有不切实际的依赖
- SolidKit.ERPs ERP集成接口工具(for SOLIDWORKS PDM)
- AttributeError: module 'ahocorasick' has no attribute 'Automaton'解决
- 小和尚卖石头,唤醒无数人!
- 转换优化 onnx模型
- k8s1.23 Ingress-nginx实操
- 深大计算机图形学大作业之虚拟场景建模
- 户外设备选择远距离蓝牙需要了解的知识-----工程师必看
- 3599元起 铭凡推出NPB7迷你主机:i7-13700H、双雷电4
- 5V的OVP过压保护IC,去掉不良率
- python-Scapy网络的掌控者
- hackthebox-admirer (adminer渗透 python-library-hijacking)
- Early Stopping 早停法原理与实现