图形化客户端: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 检索的更多相关文章

  1. 稀疏检出-使用git检索出仓库里的某一个目录文件,而不是整个仓库的所有文件

    具体工作意义是从某一个Git仓库 克隆时,只克隆检测出这个仓库里的某些文件夹内容,而不是跟平常那样把整个仓库的内容都克隆下来 从1.7.0版本开始git提供稀疏检出的功能.所谓稀疏检出就是本地版本库检 ...

  2. 《Linux内核设计与实现》读书笔记(十八)- 内核调试

    内核调试的难点在于它不能像用户态程序调试那样打断点,随时暂停查看各个变量的状态. 也不能像用户态程序那样崩溃后迅速的重启,恢复初始状态. 用户态程序和内核交互,用户态程序的各种状态,错误等可以由内核来 ...

  3. 《Linux内核设计与实现》第十八章读书笔记

    1.内核中的bug 内核中的bug表现得不像用户级程序中那么清晰——因为内核.用户以及硬件之间的交互会很微妙: 从隐藏在源代码中的错误到展现在目击者面前的bug,往往是经历一系列连锁反应的事件才可能触 ...

  4. Linux内核设计与实现 第十八章

    1. 内核调试的难点 重现bug困难 调试风险比较大 定位bug的初始版本困难 2. 内核调试的工具和方法 2.1 输出 LOG 输出LOG不光是内核调试, 即使是在用户态程序的调试中, 也是经常使用 ...

  5. 欢迎来到 Flask 的世界

    欢迎来到 Flask 的世界 欢迎阅读 Flask 的文档.本文档分成几个部分,我推荐您先读 < 安装 >,然后读< 快速上手 >.< 教程 > 比快速上手文档更详 ...

  6. 初探内核之《Linux内核设计与实现》笔记下

    定时器和时间管理 系统中有很多与时间相关的程序(比如定期执行的任务,某一时间执行的任务,推迟一段时间执行的任务),因此,时间的管理对于linux来说非常重要. 主要内容: 系统时间 定时器 定时器相关 ...

  7. [Git] 写文章 史上最全文献检索、阅读及管理攻略

    copy from  : https://zhuanlan.zhihu.com/p/30605683 一.查文献 首先,我认为需要常备几个体量大.文献全的数据库,有针对性找哦!下面列出了一些适合所有专 ...

  8. git版本控制?

    git是一个分布式的版本控制系统,版本控制系统,类似于保险箱,而我们的代码就是资产:通过对代码的有效管理可以更好的提高我们的生产效率:maven是主要是一个项目构建工具,解决的是我们个人在开发过程中的 ...

  9. 日常使用 Git 的 19 个建议[转]

    我使用Git已经有4年之久,在这里想分享一些实用的小技巧,希望能对大家有所帮助. 如果你对git一无所知,那么我建议先去读一下Git 常用命令速查.本篇文章主要适合有一定 git 使用基础的人群. 目 ...

随机推荐

  1. 把antd的组件源码搬到Ant Design Pro中使用

    把组件源码搬过来后,样式死活不生效,经过1天的努力,有说less-loader的,有说webpack配置,还有说babel配置的,最后,我自己找到了方法 就是在global.less中使用@impor ...

  2. CSS基础以及兼容IE方法

    1 介绍一下标准的CSS的盒子模型?与低版本IE的盒子模型有什么不同的? 标准盒子模型:宽度=内容的宽度(content)+ border + padding + margin低版本IE盒子模型:宽度 ...

  3. 使用jackson转换xml格式数据进行响应

    最近在做微信扫码支付的功能,按照微信开发文档与支付平台进行数据交互只能使用XML格式的数据,调用别人定义的接口就需要按规则来嘛,没办法.自己之前使用jackson,主要是因为SpringMVC默认将j ...

  4. mysql 主从 数据不一致

    用pt-table-checksum校验数据一致性 Jun 4th, 2013 主从数据的一致性校验是个头疼的问题,偶尔被业务投诉主从数据不一致,或者几个从库之间的 数据不一致,这会令人沮丧.通常我们 ...

  5. concurrent(四)Condition

    参考文档:Java多线程系列--“JUC锁”06之 Condition条件:http://www.cnblogs.com/skywang12345/p/3496716.html Condition介绍 ...

  6. Navicat连接mysql数据库2003-Can't connect to Mysql server on 'xxx' (10060 "Unknown error")

    使用root账号连接MySQL 1,登录 mysql -u用户名 -p                回车后输入密码 2, use mysql 3,输入下面命令,显示root为localhost本地登 ...

  7. 【技术博客】 Laravel 5.1单元测试(PHPUnit)入门

    目录 Laravel 5.1单元测试(PHPUnit)入门 简介 安装与配置 1. 安装 2. 配置 编写测试样例 1. 新建测试样例 2. 编写函数的测试 3. 编写Web功能测试 运行测试与查看结 ...

  8. Leetcode 5274. 停在原地的方案数

    纪念第一次正式参加,听说这次题目很水,感觉确实不是很难,一般前两题都很简单,这次,到第三题的时候,都还可以做,emm...... 实际代码记录: #include <iostream> # ...

  9. spark 操作hive

    1.hive动态分区,只需进行以下设置 val spark = SparkSession.builder() .appName("hivetest") .master(" ...

  10. Pycharm 个人认为舒服漂亮又好用的主题风格

    又开始和code打交道了系列…… 实验室换了新电脑,故而,重新安装了各种软件,乃至重新配置  Pycharm主题,找了好久,终于找到,想着应该mark一下,以备下次需要. 个人认为 Monokai 这 ...