git 基础学习笔记
配置ssh
- 打开命令行或者git bash
- 输入
创建git库
git init
- 检查当前状态
$ git status
On branch master
nothing to commit, working directory clean
working directory clean表示当前工作目录没有未被追踪或者已修改的文件,否则会将它们列出。这个命令会告诉我们当前在哪个分支。
在当前目录会生成一个.git文件夹
- 远程仓库
添加远程仓库
在GitHub或者码云上创建好仓库后,复制远程仓库的HTTPS地址或ssh地址,在本地文件夹输入:git remote add origin <HTTPS地址或ssh地址>
查看远程库信息:
git remote -v
从远程仓库克隆
git clone <HTTPS地址或ssh地址>
推送修改到远程仓库
- 暂存已修改文件:
git add <./特定文件名>
. 表示当前目录,会将当前目录下修改的所有文件暂存起来;特定文件名则表示将特定文件暂存。
- 检查已暂存以及尚未暂存的更改
git diff
该命令会对比目前工作目录(working directory)与暂存区域(stage area)的版本,然后显示尚未暂存的文件的变更
git diff --cached
上一个命令如果已经暂存了所有更改的话,就什么都不显示。而该命令可以显示已暂存的更改与最后一次commit的差异。
- 暂存已修改文件:
将远程修改加载到本地仓库
git commit -m <提交信息>
- 跳过暂存环节,直接提交
git commit -a -m <提交信息>
- 跳过暂存环节,直接提交
- 分支管理
查看分支
查看本地分支:git branch
查看所有分支:
git branch -a
创建分支
git branch <分支名>
切换分支
git checkout <分支名>
创建并切换分支:
git checkout -b <分支名>
切换远程分支:
git checkout -b <分支名> origin/<分支名>
上面的命令作用是获取远程的分支,在本地命名并切换。
合并分支
如果要将dev分支的内容合并到master:git checkout master
git merge dev
上面的命令会丢掉分支信息,可以使用:
git merge --no-ff dev
它会禁用fast forward,使得日志中显示分支的merge信息。
合并部分分支:
git cherry-pick <commit 号>
合并多个commit(用空格指定多个commit):
git cherry-pick A B C D E F
指定commit范围合并(两次版本间使用..连起来):
git cherry-pick A..B
这样可以从版本A(不包含)到B(包含)的版本pull到当前分支
可以多段合并,同样用空格隔开:
git cherry-pick A..B C..D E..F
合并远程分支:
删除分支
git branch -d <要删除的分支名>
强制删除:
git branch -D <要删除的分支名>
删除远程分支:
git push origin :<branchName>
解决冲突
有时候提交、pull以及合并的时候会出现以下情况:$ git merge dev
Auto-merging readme.md
CONFLICT (content): Merge conflict in readme.md
Automatic merge failed; fix conflicts and then commit the result.
上面的信息中会标出冲突文件,打开文件会发现,冲突的地方会分别有<<<<<,======,>>>>>标记出不同分支的内容,需要手动修改这些地方,留下你觉得正确需要的修改,其它删除掉,<<<<<表示的是当前分支的内容,>>>>>表示的是要合并过来的分支的内容。
修改完后在提交就可以了。stash 操作
stash操作可以将当前尚不需要暂存的修改隐藏起来:$ git stash
Saved working directory and index state WIP on dev: cb5a443 modify the file
HEAD is now at cb5a443 modify the file
$ git status
On branch dev
nothing to commit, working directory clean
列出隐藏起来的工作现场:
$ git stash list
stash@{0}: WIP on dev: cb5a443 modify the file
恢复隐藏的工作现场
$ git stash pop
On branch dev
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory) modified: readme.md no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (5e674302787482fbdd0c3e6fb455a5aca102a9d2)
pop命令在恢复的同时会将栈顶的stash的内容删除,调用git stash apply恢复后,stash内容并不会删除,需要调用git stash drop命令才能删除
多次stash的话,可以先调用git stash list查看stash列表,然后调用git stash apply stash@{},这里的num指的是在stash栈中的index。推送修改到远程分支
git add .
git commit -m "..."
git push origin <branchName>
获取远程修改的几种方式
git pull
这个操作包含了fetch和merge,会创建多个临时分支,不是很好,可以这样:
git pull --rebase
当出现冲突时会:
$ git pull --rebase origin dev
From https://github.com/liberty2015/gitdemo
* branch dev -> FETCH_HEAD
First, rewinding head to replay your work on top of it...
Applying: update the file
Using index info to reconstruct a base tree...
M readme.md
Falling back to patching base and 3-way merge...
Auto-merging readme.md
CONFLICT (content): Merge conflict in readme.md
error: Failed to merge in the changes.
Patch failed at 0001 update the file
The copy of the patch that failed is found in: .git/rebase-apply/patch When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".
当解决完冲突后:
git rebase --continue
或者跳过:
git rebase --skip
标签管理
日志查询
git log -<num>
查询日志,num表示查询日志数量
图形工具查询方式:gitk
参考网址:
https://ihower.tw/blog/archives/3843
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001375840202368c74be33fbd884e71b570f2cc3c0d1dcf000
http://hungyuhei.github.io/2012/08/07/better-git-commit-graph-using-pull---rebase-and-merge---no-ff.html
https://kingofamani.gitbooks.io/git-teach/content/chapter_2/repo.html
git 基础学习笔记的更多相关文章
- 【C#编程基础学习笔记】4---Convert类型转换
2013/7/24 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]4---Convert类型转换 ...
- 【C#编程基础学习笔记】6---变量的命名
2013/7/24 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]6---变量的命名 ----- ...
- 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)
技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com ------------------------------------- ...
- Java基础学习笔记总结
Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...
- git的学习笔记(二):git远程操作
1.创建ssh key ssh-keygen -t rsa -C "your_email@example.com" 执行命令后会在用户的家目录生成.ssh的隐藏文件夹,文件夹里有公 ...
- Mysql数据库基础学习笔记
Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- Java基础学习笔记(一)
Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...
- C#RabbitMQ基础学习笔记
RabbitMQ基础学习笔记(C#代码示例) 一.定义: MQ是MessageQueue,消息队列的简称(是流行的开源消息队列系统,利用erlang语言开发).MQ是一种应用程序对应用程序的通信方法. ...
随机推荐
- (转)nginx负载均衡(5种方式)、rewrite重写规则及多server反代配置梳理
Nginx除了可以用作web服务器外,他还可以用来做高性能的反向代理服务器,它能提供稳定高效的负载均衡解决方案.nginx可以用轮询.IP哈希.URL哈希等方式调度后端服务器,同时也能提供健康检查功能 ...
- 【译】Using Objects to Organize Your Code
耗了一个晚上吐血翻译不过也学到了不少...<使用对象来组织你的代码>,翻译中发现原作者在原文中有部分代码有误或不全,本文已修改和添加~ 丽贝卡·墨菲原文链接:http://rmurphey ...
- 用Python实现的数据结构与算法:堆栈
一.概述 堆栈(Stack)是一种后进先出(LIFO)的线性数据结构,对堆栈的插入和删除操作都只能在栈顶(top)进行. 二.ADT 堆栈ADT(抽象数据类型)一般提供以下接口: Stack() 创建 ...
- Django进阶 (二)
规范 确立规范的好处: 代码可读性高 方便代码的定位极其查找 为以后代码扩容带来便利 场景: 在多个APP的场景下,单个app的URL函数功能较多的时候,我们可以通过以下方法来解决. 把Views写成 ...
- SpringData环境搭建代码编写
首先我们在前面的两节已经了解了SpringData是干什么用的?那我们从这节开始我们就开始编码测试SpringData. 1:首先我们从配置文件开始,我们首先需要写一个连接数据库的文件db.prope ...
- 计算机bit是什么意思
bit是计算机中数据的最小单位,即二进制位,数字0和1 一个字节是八位(8个0和1 或 1 组成的一串二进制) 一个字是16位,等于2个字节 用八位二进制表示的字符叫单字节字符, 用16位二进制数表示 ...
- 20145221 《Java程序设计》第十周学习总结
20145221 <Java程序设计>第十周学习总结 网络编程 网络概述 概述 网络编程技术是当前一种主流的编程技术,随着联网趋势的逐步增强以及网络应用程序的大量出现,所以在实际的开发中网 ...
- mac上 sublime的配置,支持c++11且支持输入
首先下载mac版本的 sublimetext3 下载链接: https://www.sublimetext.com/3 接着可以按照其他博客的方法来安装一些插件,便于我们的工作和学习 安装sublim ...
- Java回顾之多线程
在这篇文章里,我们关注多线程.多线程是一个复杂的话题,包含了很多内容,这篇文章主要关注线程的基本属性.如何创建线程.线程的状态切换以及线程通信,我们把线程同步的话题留到下一篇文章中. 线程是操作系统运 ...
- node的开发者环境设置丢失
1.我看到的最简单的一种:evn 默认的值是 development var app = express(); if (app.get('env') === 'development') { req ...