git 检索
图形化客户端:sourcetree
下载:
https://www.sourcetreeapp.com/
安装:
由于种种不可描述的原因,无法注册账号且无法登陆所以需要绕过登陆
绕过登陆:
去到 C:\Users\当前用户目录\AppData\Local\Atlassian\SourceTree 目录下
新建 accounts.json 文件
将一下内容复制进去
[
{
"$id": "1",
"$type": "SourceTree.Api.Host.Identity.Model.IdentityAccount, SourceTree.Api.Host.Identity",
"Authenticate": true,
"HostInstance": {
"$id": "2",
"$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountInstance, SourceTree.Host.AtlassianAccount",
"Host": {
"$id": "3",
"$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountHost, SourceTree.Host.AtlassianAccount",
"Id": "atlassian account"
},
"BaseUrl": "https://id.atlassian.com/"
},
"Credentials": {
"$id": "4",
"$type": "SourceTree.Model.BasicAuthCredentials, SourceTree.Api.Account",
"Username": "",
"Email": null
},
"IsDefault": false
}
]
入门级命令
为什么建议使用命令行的方式操作git?
1.命令行会了,图形界面的操作时完全没问题的,反之,则不然
2.有些地方如linux服务器,没有图形界面,如果碰到问题需要使用git,不会命令行操作啥都干不了
git 本地操作
git --help
调出Git的帮助文档
git +命令 --help
查看某个具体命令的帮助文档
git --version
查看git的版本
git init
生成空的本地仓库
git add
将文件添加到暂存区
初次commit之前,需要配置用户邮箱及用户名,使用以下命令:
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
git commit
将暂存区里的文件提交到本地仓库
git remote
用于管理远程仓库
git push -u origin master
往名字为origin的仓库的master分支上提交变更
git fetch
拉取远程仓库的变更到本地仓库
git merge origin/master
将远程的变更,合并到本地仓库的master分支
git pull
-- 不建议使用 等同于fetch之后merge
文件状态
git status
用于查看git的状态
git rm
用于git文件的删除操作
如果只是 git rm --cache 仅删除暂存区里的文件
如果不加--cache 会删除工作区里的文件 并提交到暂存区
git checkout
直接加文件名 从暂存区将文件恢复到工作区,如果工作区已经有该文件,则会选择覆盖
加了【分支名】 +文件名 则表示从分支名为所写的分支名中拉取文件 并覆盖工作区里的文件
新建文件--->Untracked
使用add命令将新建的文件加入到暂存区--->Staged
使用commit命令将暂存区的文件提交到本地仓库--->Unmodified
如果对Unmodified状态的文件进行修改---> modified
如果对Unmodified状态的文件进行remove操作--->Untracked
开发利器分支
1.什么是分支
软件项目中启动一套单独的开发线的方法
2.为什么使用git
1.可以很好的避免版本兼容开发的问题,避免不同版本之间的相互影响
2.封装一个开发阶段
3.解决bug的时候新建分支,用于对该bug的研究
3.git中跟分支相关的命令
git branch 分支名
git branch 不加任何参数,列出所有的分支,分支前面有*号,代表该分支为当前所在分支
* 创建分支的时候,分支名不用使用特殊符号
git branch -d 分支名
*不能删除当前所在的分支
git branch -m 旧分支名 新分支名
git checkout 分支名 切换分支
如果在分支上面对文件进行修改之后,没有commit就切换到另外一个分支b,
这个时候会报错,因为没有commit的文件在切换分支之后会不覆盖。所以Git 报错提示。
git checkout -f 分支名 强制切换到分支,如果当前有为提交的变更,会直接丢弃
-f 参数一定一定要非常非常小心使用,一般情况下不建议使用,除非真的要强制去执行
log
log命令的作用:
用于查看git的提交历史
git log命令显示的信息的具体含义
commit 4a70ceb24b6849ad830d6af5126c9227b333d2d1 --SHA-1 校验和 commit id
Author: wiggin <wiggin@gmail.com> --作者跟邮箱概要信息
Date: Wed May 16 23:51:02 2018 +0800 --提交时间
v2 --commit的时候,使用-m选项说写一段概要说明
日常在使用commit的时候,-m选项所写得内容一定不能随便写
“修改了登陆的bug”--》“新增用户管理中心”
git log -数字 表示查看最近几次的提交
git log -p -2 显示最近两次提交的不同点
git log --author 查看具体某个作者的提交
git log --oneline 输出简要的信息
git log --graph 以一个简单的线串联起整个提交历史
git log 输出信息的定制
更改提交
1.将不必要的文件add
2.上次提交觉得是错的
3.不想改变暂存区内容,只是想调整提交的信息
4.版本回滚
git reset HEAD 文件名 移除不必要的添加到暂存区的文件
git reset HEAD^ 或者 commitid ,恢复上一次,或者哪次的提交,记住只是当时的文件跑到暂存区了,看下面解释
git reset --soft HEAD^ 修改上次提交的信息吧即commit -m "修改这里的内容"
git reset --soft 只是将HEAD引用指向指定的提交,工作区跟暂存区的内容不会改变
git reset --mixed (默认选项)将HEAD指向指定的提交,暂存区的内容随之改变,工作区内容不变
git reset --hard 将HEAD指向指定的提交,暂存区跟工作区都会改变
git branch -d 删除分支
git branch -m 修改分支
--soft 暂存区提交信息的变化
--hard 暂存区工作区都会变,也就是代码回滚了
解决冲突
之前我们是使用branch 命令创建分支
使用checkout在不同分支之间切换,但是落叶终究要归根,分出去的枝叶也终究要汇总
这个时候我们可使用merge命令进行分支的合并
冲突与解决
master分离出dev分支,对a文件修改后提交,之后跑到master分支,也对a修改后提交,之后merge dev分支,此时冲突产生
git diff --name-only --diff-filter=U 查看冲突的文件
git ls-files -u 也可以显示没被合并的文件
之后使用vim对文件进行修改或者直接用开发工具进行修改
标签
git tag 不加任务参数,表示显示标签,并且按时间
git tag 标签名,默认是给最近的一次提交打标签
git tag 标签名 commitid 给相应的提交打上标签
git show 标签名 用于显示跟该标签相关的那次提交的相关信息
git tag -d 标签名 删除标签名,不会删除提交
git push origin 标签名 把某个标签(必须是本地存在的,否则推送失败)推送到远程服务器
删除远程标签的步骤
1.删除本地标签 git tag -d v0.9
2.再删除远程的 git push origin :refs/tags/v0.9
标签跟commit挂钩,只要commit存在于多个分支,那么这几个分支就都能看到这个标签
git 检索的更多相关文章
- 稀疏检出-使用git检索出仓库里的某一个目录文件,而不是整个仓库的所有文件
具体工作意义是从某一个Git仓库 克隆时,只克隆检测出这个仓库里的某些文件夹内容,而不是跟平常那样把整个仓库的内容都克隆下来 从1.7.0版本开始git提供稀疏检出的功能.所谓稀疏检出就是本地版本库检 ...
- 《Linux内核设计与实现》读书笔记(十八)- 内核调试
内核调试的难点在于它不能像用户态程序调试那样打断点,随时暂停查看各个变量的状态. 也不能像用户态程序那样崩溃后迅速的重启,恢复初始状态. 用户态程序和内核交互,用户态程序的各种状态,错误等可以由内核来 ...
- 《Linux内核设计与实现》第十八章读书笔记
1.内核中的bug 内核中的bug表现得不像用户级程序中那么清晰——因为内核.用户以及硬件之间的交互会很微妙: 从隐藏在源代码中的错误到展现在目击者面前的bug,往往是经历一系列连锁反应的事件才可能触 ...
- Linux内核设计与实现 第十八章
1. 内核调试的难点 重现bug困难 调试风险比较大 定位bug的初始版本困难 2. 内核调试的工具和方法 2.1 输出 LOG 输出LOG不光是内核调试, 即使是在用户态程序的调试中, 也是经常使用 ...
- 欢迎来到 Flask 的世界
欢迎来到 Flask 的世界 欢迎阅读 Flask 的文档.本文档分成几个部分,我推荐您先读 < 安装 >,然后读< 快速上手 >.< 教程 > 比快速上手文档更详 ...
- 初探内核之《Linux内核设计与实现》笔记下
定时器和时间管理 系统中有很多与时间相关的程序(比如定期执行的任务,某一时间执行的任务,推迟一段时间执行的任务),因此,时间的管理对于linux来说非常重要. 主要内容: 系统时间 定时器 定时器相关 ...
- [Git] 写文章 史上最全文献检索、阅读及管理攻略
copy from : https://zhuanlan.zhihu.com/p/30605683 一.查文献 首先,我认为需要常备几个体量大.文献全的数据库,有针对性找哦!下面列出了一些适合所有专 ...
- git版本控制?
git是一个分布式的版本控制系统,版本控制系统,类似于保险箱,而我们的代码就是资产:通过对代码的有效管理可以更好的提高我们的生产效率:maven是主要是一个项目构建工具,解决的是我们个人在开发过程中的 ...
- 日常使用 Git 的 19 个建议[转]
我使用Git已经有4年之久,在这里想分享一些实用的小技巧,希望能对大家有所帮助. 如果你对git一无所知,那么我建议先去读一下Git 常用命令速查.本篇文章主要适合有一定 git 使用基础的人群. 目 ...
随机推荐
- Codeforces Round #603 (Div. 2) E - Editor(线段树,括号序列)
- CSRF 跨站
目录 CSRF 跨站请求伪造 解决跨站伪造问题: csrf 相关的装饰器: csrf.js文件: CSRF 跨站请求伪造 CSRF全称为Cross-site request forgery,也被称为: ...
- HTML基础知识---文本编辑练习
飘柔兰花去油洗发水液露去屑止痒控油 阿道夫净屑舒爽清洁头皮去屑洗发水520ml ...
- Linux】目录文件权限的查看和修改【转】
转载自:http://zhaoyuqiang.blog.51cto.com/6328846/1214718 ============================================== ...
- Adobe Illustrator 入门 新建 保存图片
下载 AI 的破解版 我这里用的是 Adobe_Illustrator CC 2019 Lite 精简特别版 V23.0.2 简体中文版 64位 安装略 新建文档 通常是 A4 图形绘制 选择 矩形工 ...
- R语言排序 -- sort() order() rank()
order() 的返回值是对应“排名”元素所在向量中的位置.注意返回的不是元素本身,而是元素的位置. sort() 是直接对向量中的元素进行排序,返回的是排序后的元素组成的向量. rank() 是求秩 ...
- docker for mac的JSON配置文件中的hosts项修改后无法生效
docker for mac的JSON配置文件中的hosts项修改后无法生效 docker 2.1k 次浏览 问题对人有帮助,内容完整,我也想知道答案0问题没有实际价值,缺少关键内容,没有改进余地 增 ...
- 【转】调用百度API,HTML在线文字转语音播报
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- mysql explain亲测
mysql explain亲测 1 where后面字段加索引:数据库类型如果是字符串类型 查询where的时候必须要用 字符串 类型必须一致 否则不用索引 type还是会是all的 ps:如果wher ...
- something want to write
1.时间戳不能相信是因为机器时间有误差.相当于机器不断电的跑着时钟. 2.写log的时候记得log别人的ip,不然没办法很好的debug.