学习笔记 - Git
学习参考网址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
Git是目前世界上最先进的分布式版本控制系统。
Git区分与其他版本控制系统,主要有两个优点:一、不必联网;二、强大的分支管理
Git区分为工作区和版本库:
一、初始化管理库
# 把文件夹变为git的管理库(初始化仓库)
# 1. 进入目标文件夹的路径下
# 2. git init
$ pwd
/Users/michael/learngit $ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
二、代码添加和删除
#### 代码修改后提交
git add readme.txt
git commit -m “add readme.txt file” # add 是将目标文件添加到暂存区(index)
# commit 是将暂存区中的文件,一次性全部提交到分支上
# -m 是在提交中添加注释说明 #### 确实需要删除文件 git rm text.txt
git commit -m "remote text.txt"
三、查看状态(修改内容、提交历史、历史命令)
# 查看工作区状态
git statsu # 查看修改的内容
git diff # 查看提交历史记录
git log
git log --pretty=oneline # 查看历史命令
git reflog # 把当前版本“append GPL”回退到上一个版本“add distributed”
git reset --hard HEAD^
git reset --hard 3628163[用log 看到的版本号]
四、操作回退
# 场景1:当你改乱了工作区某个文件的内容,
# 想直接丢弃工作区的修改时
git checkout -- file。 # 场景2:当你不但改乱了工作区某个文件的内容,
# 还添加到了暂存区时,想丢弃修改,
# 分两步,第一步用命令git reset HEAD file,就回到了场景1,
# 第二步按场景1操作。 # 场景3:已经提交了不合适的修改到版本库时,
# 想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
五、关联远程库,推送内容和克隆内容
#### 关联github上的版本库learngit
# orgin为默认远程库的名字
git remote add origin git@github.com:bngu/learngit.git # 将所有东西推送到远程库
# 把当前的master分支推送
# -u的参数用于第一次时,关联本地和远程master分支
git push -u origin master
git push origin master #### 从远程库克隆
git clone git@github.com:bngu/gitskills.git
六、分支管理
## 创建dev分支,并切换到dev分支
# 一
git branch dev
git checkout dev # 二
git checkout -b dev ## 查看分支情况
git branch ## 删除分支
git branch -d dev
# 查看分支的合并情况
git log --graph --pretty=oneline --abbrev-commit
#### 合并分支有两种不同的模式:fast forward 和 加上--no-ff参数的普通模式 ## fast forward 模式
# 出现不同分支有不同提交时必须首先解决冲突
# 合并dev分支到当前分支
git merge dev ## --no-ff
# 先在dev分支上完成add和commit
# 普通模式合并存在历史分支,可以git log看出来做过合并
git merge --no-ff -m "merge with no-ff" dev
# stash
# 用于存储之前还未完成的工作区内容
$ git stash
Saved working directory and index state WIP on dev: 6224937 add merge
HEAD is now at 6224937 add merge # 查看之前stash的内容
$ git stash list
stash@{0}: WIP on dev: 6224937 add merge # 恢复之前stash的工作区
# 两种方法:
# a.先恢复,再删除list中的记录
git stash apply
git stash drop # b.恢复的同时把stash内容也删了
git stash pop
# 强行删除没有合并的分支
# 丢弃一个没有被合并过的分支
git branch -D feature
# 查看远程库的信息
git remote
# 显示更详细的信息
git remote -v # 因此,多人协作的工作模式通常是这样:
# 首先,可以试图用git push origin branch-name推送自己的修改;
git push origin dev # 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
git push # 如果合并有冲突,则解决冲突,并在本地提交;
# 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功! # 如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name
git branch --set-upstream dev origin/dev
九、标签
tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。
命令git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id; git tag -a <tagname> -m "blablabla..."可以指定标签信息; git tag -s <tagname> -m "blablabla..."可以用PGP签名标签; 命令git tag可以查看所有标签。
命令git push origin <tagname>可以推送一个本地标签; 命令git push origin --tags可以推送全部未推送过的本地标签; 命令git tag -d <tagname>可以删除一个本地标签; 命令git push origin :refs/tags/<tagname>可以删除一个远程标签。
学习笔记 - Git的更多相关文章
- 学习笔记——git
恩没错,又是个新东西 使用Git提交文件到版本库有两步: 第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区. 第二步:使用git commit提交更改,实际上就是把暂存区的 ...
- Git学习笔记 git revert
我们难免会因为种种原因执行一些错误的commit / push,git提供了revert命令帮助程序员修复这样的错误. 举个例子,下图是git commit 的历史记录 git revert 命令会通 ...
- 学习笔记--Git安装 创建版本库 图文详解
一.Git下载 在Windows上安装git,一般为msysgit,官网地址:http://git-scm.com/ 我下载的是Git-1.9.2-preview20140411.exe 二.Git安 ...
- Git学习笔记--Git常用命令
参考资料: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 mkdir myfir ...
- python学习笔记——git的安装及使用
1 git的基本介绍 git 是目前世界上最先进的分布式版本哦内阁制系统 详细信息可参考廖雪峰的官方网站中的Git教程 比git功能更加强大的有TortoiseGit和Tortoise SVN,具体安 ...
- Git 学习笔记--Git下的冲突解决
冲突的产生 很多命令都可能出现冲突,但从根本上来讲,都是merge 和 patch(应用补丁)时产生冲突. 而rebase就是重新设置基准,然后应用补丁的过程,所以也会冲突. git pull会自动m ...
- Git 学习笔记--git 查看某个文件的修改历史
1. git log -p filename 查看文件的每一个详细的历史修改,如果没有-p选项,只显示提交记录,不显示文件内容修改,git log -p -3 filename 显示最近的3次提交. ...
- git 学习笔记 Git实践
网上有很多教程,这里我自己做下整理,省得有时忘记,有道是好记性不如烂博客! 先大概描述下Git的各种命令: git init #初始化 git clone ...
- Git学习笔记 - Git安装
Git安装(Windows) 从 https://git-for-windows.github.io/ 下载Git,下载完成,双击安装,一路选择默认设置即可. 注意:选择使用git的命令行模式,选择默 ...
随机推荐
- linux主机之间的SSH链接
一.什么是SSH连接 SSH为Secyre Shell的缩写,SSH 为建立在应用层基础上的安全协议.SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议.且SSH连接可以通过多种平台 ...
- iscsi原理
iscsi原理 一,[名词解释] SCSI:小型计算机系统接口,SCSI作为i输入/输出接口, FC:光纤通道 DAS:直连式存储,指将存储设备通过SCSI接口或光纤通道直接连到一台计算机上. NAS ...
- 如何自己搭建DNS服务器
DNS服务器是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写,它是由 解析器和域名服务器组成的.域名服务器是指保存有该网络中所有主机的域名和 ...
- npm上发布vue插件
1.初始化项目 vue init webpack-simple XXXXX(此处为插件名) 使用vue创建一个简单的项目,删除src中除了main.js和app.vue外的文件,清空app.vue中无 ...
- Mac破解软件 “XXX”意外退出 奔溃解决方法
最近很多破解软件提示“XXX”意外退出.这是因为苹果在7月12日删除了TNT的证书,所以大部分TNT破解的Mac软件会出现无法打开,提示意外退出. 目前的解决办法是在终端执行命令: 1.首先安装“A ...
- Linux文件类型和文件相关命令
文件类型 ll后可以看到文件详情: -:常规文件(内部类型是什么,用file命令) d:directory,目录文件 b:blobk device,块设备文件,支持以“block”为单位进行随机访问 ...
- noi.ac NA536 【打地鼠】
又一道可写的小清新思维题 其实想到倒着做了,然而还是因为T1害人不浅(我太菜了),所以并没有写 考虑两个局面不同,显然至少打了一次地鼠,基于操作的颜色覆盖性质,我们可以考虑把操作倒着做,对于一个X点, ...
- nginx防止跳转到内网解决
proxy_redirect http://test.abc.com:9080/ /;
- VS插件CodeRush for Visual Studio全新发布v19.1.7|附下载
CodeRush是一个强大的Visual Studio® .NET 插件,它利用整合技术,通过促进开发者和团队效率来提升开发者体验. CodeRush能帮助你以极高的效率创建和维护源代码.Consum ...
- Ruby笔记
1.数组遍历方法总结 array = (1..10).to_a length = array.length length.times do t print "#{array[t]} &quo ...