git知识讲解
git初始化
1.设置名字和邮箱
 git config --global user.name "zhangsan"
 git config --global user.email "zhangsan@gmail.com"
执行完以后,Linux在家目录下就会产生一个.gitconfig隐藏文件,windows点击开始-->个人文件夹(自己电脑的名字)
cat ~/.gitconfig
[user]
        email = zhangsan@gmail.com
        name = zhangsan
另外执行以下命令查看配置信息:
git config --list
2.获得git仓库
方法一:克隆一个仓库
cd  /home/guest/project   //自己的工作空间
git clone https://github.com/xxx
方法二:初始化一个新的仓库
cd /home/guest/project
git init
输出:Initialized empty Git repository in /home/guest/project/.git/
ls -al 发现 有.git文件夹
.git
3.生成公钥
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
4.生成公钥,配置到github

git基本操作
1.查看状态
git status
2.比较修改或者提交的内容
//比较本地工作空间和缓存中的差异
git diff
//比较缓存中和上次提交的差异
git diff --cahced
按q退出
3.添加新创建或修改的文件到本地的缓存区
git add *
说明:
新建文件,在没有被添加缓存中时,状态为untracked
git rm
删除文件,自动将已删除的文件信息加入缓存,git commit 后自动将本地仓库中的文件删除
4.提交代码到本地代码仓库
git commit -m "xxx"
说明:
    -m 添加本次修改的注释
    -a 参数将所有没有加到缓存区的修改也一起提交,但 -a 命令不会添加新建的文件
5.将本地仓库关联到远端仓库关联
git remote add 主机名  远端仓库地址
示例:
git remote add origin https://github.com/xxx/xxx.git
说明:
    git remote add 命令用于添加远程主机,origin 是主机名  https://xxx 是远端仓库地址
6.将本地代码库同步到远端代码库
git push origin master
说明:
     origin :主机名   master:分支名
问题记录:
提交会提示输入用户名和密码,解决办法:生成公钥,将公钥粘贴到远端仓库的SSH中。
5.创建新的分支
git branch xxx
查看当前分支列表
git branch
拉取远端所有的分支到本地
git fetch --all
6.切换分支
git checkout xxx
7.分支代码合并
两个分支:master、Dev,将Dev分支的代码合入到master分支。
具体操作如下:
git checkout master         //先切换到master分支
git merge -m "xxx合并的提交信息xxx" Dev         //将Dev分支代码合并到master分支,如果两个分支修改了不同的文件,则合并不会产生冲突,否则会有冲突。
解决冲突:
(1.)查看状态: git status   错误:both modified
(2.)查看冲突文件:git diff 或者 cat xxx
(3.)手动解决冲突: vi xxx  找到冲突的地方<<<< ==== >>>>的地方,手动解决冲突,删除不需要的代码。 
8.删除分支
git branch -d 分支名
git branch –D 分支名       //强制删除某个分支
9.撤销合并,放弃当前修改
git reset --hard HEAD^
10.git日志
git log //查看所有的提交记录
     --stat 选项会显示在每个提交(commit)中哪些文件被修改了, 这些文件分别添加或删除了多少行内
格式化显示:
git log --pretty=oneline
git log --pretty=short
git log --graph --pretty=oneline   //显示提交图
 git log --pretty=format:'%h : %s' --topo-order --graph       //显示提交拓扑图
11.查看两个分支之间的差异
方法一:
git diff master  dev     //查看master分支与dev分支之间的差异
    --stat 参数可以统计一下有哪些文件被改动,有多少行被改动
方法二:
git checkout master     //切换到master分支
git diff dev           //比较和dev分支的差异
git diff dev file1          //比较和dev分支中的某个文件的差异
12.克隆分支,
场景一:一个用户,两个工作空间
(1.)从xxxproject中克隆一份到myrepo中
cd /tmp
git clone  /home/guest/xxxproject   myrepo
(2.)修改并提交 myrepo中的文件
git add  +  git commit 
(3.)xxxproject中想拉去myrepo中的修改
git  pull /tmp/myrepo master           //myrepo 的主分支合并到了 xxxproject 的分支里
或者:
git remote add myrepo /tmp/myrepo   //将myrepo添加为自己的远端分支
git fetch myrepo
git merge myrepo/master
场景二:xxxproject中文件修改并提交,myrepo需要拉取,直接git pull即可。
因为 myrepo 是从 xxxproject 仓库克隆的,那么他就不需要指定 gitproject 仓库的地 址。
因为 Git 把 xxxproject 仓库的地址存储到 myrepo 的配置文件中,这个地址就是在 git pull 时默认使用的远程仓库:
git config --get remote.origin.url   //查看远端仓库地址
13.git标签
//创建标签
git tag 标签名  提交ID     //commitID可通过git log查看
    -s 参数来创建“签名的标签”
//创建签名标签,让标签更可信
git config (--global) user.signingkey <gpg-key-id>
git tag -s stable-1 1b2e1d63ff
git tag -u <gpg-key-id> stable-1 1b2e1d63ff    //配置文件中没有gpg-key 可使用-u 手动指定
//查看已经创建的标签
git tag
总结
git config:配置相关信息
git clone:复制仓库
git init:初始化仓库
git add:添加更新内容到索引中
git diff:比较内容
git status:获取当前项目状况
git commit:提交
git branch:分支相关
git checkout:切换分支
git merge:合并分支
git reset:恢复版本
git log:查看日志
----------------------------------【喜欢打赏】-------------------------------------------
小主,辛苦啦!文章棒棒哒,赏杯咖啡吧...

----------------------------------【喜欢打赏】-------------------------------------------
git知识讲解的更多相关文章
- 【android Studio】零git知识、零脚本命令,即刻体验git版本管理魅力!
		git的优点就不去多说了.阻碍咱新手体验它的唯一问题就是门槛太高,脚本看着像天书, 本文主要阐述的,就是如何在android studio上,也能像tfs那样,非常简单的操作,就能使用git进行版本管 ... 
- Html基础知识讲解
		Html基础知识讲解 <title>淄博汉企</title> </head> <body bgcolor="#66FFCC" topmar ... 
- python基础知识讲解——@classmethod和@staticmethod的作用
		python基础知识讲解——@classmethod和@staticmethod的作用 在类的成员函数中,可以添加@classmethod和@staticmethod修饰符,这两者有一定的差异,简单来 ... 
- Git知识总览(二) git常用命令概览
		上篇博客我们从 git clone 和 git status 两个命令开始,引出了一系列的git操作命令, 请参见:<Git知识总览(一) 从 git clone 和 git status 谈起 ... 
- Git知识总览(三) 分支的创建、删除、切换、合并以及冲突解决
		前两篇博客集中的聊了git的一些常用命令,具体请参见<Git知识总览(一) 从 git clone 和 git status 谈起>.<Git知识总览(二) git常用命令概览> ... 
- Git知识总览(四) git分支管理之rebase 以及 cherry-pick相关操作
		上篇博客聊了<Git知识总览(三) 分支的创建.删除.切换.合并以及冲突解决>,本篇博客我们主要来看一下 rebase 变基相关的操作.rebase 操作和 merge 操作最终都可以达到 ... 
- iPhone激活策略知识讲解:官方解锁和黑解
		iPhone激活策略知识讲解:官方解锁和黑解 [复制链接] LEECHY 该用户从未签到 1372 XY豆 438 帖子 440 贡献 苹果花 积分 2250 发消息 电梯直达 楼主 发 ... 
- Tido c++线段树知识讲解(转载)
		线段树知识讲解 定义.建树.单点修改.区间查询 特别声明:如上的讲解说的是区间最大值 如果想要查询区间和 只需要改变一下建树和查询的代码就行了,如下 其他根据自己的需要进行修改即可 
- java Reflection(反射)基础知识讲解
		原文链接:小ben马的java Reflection(反射)基础知识讲解 1.获取Class对象的方式 1.1)使用 "Class#forName" public static C ... 
随机推荐
- openresty redis all in one docker demo
			一个简单的docker demo 集成openresty+ redis,可以实现基于redis的动态修改反向代理的处理 环境准备 docker-compose 文件 version: " ... 
- 20165308 学习基础和C语言基础调查
			学习基础和C语言基础调查 技能学习 我认为给学生具体的, 能实践的, 能马上看到因果关系的教材和练习, 是激发学生兴趣, 好奇心, 求知欲的好方法. -- 引用自<做中学> 老师博客中注重 ... 
- [c/c++]可变参数的使用
			一.可变参数简介 当一个函数需要传递未知个数的参数时,就需要用到可变参数, 比如常见的printf()函数,输出多个变量: printf("print para1:%d ,para2 :%d ... 
- 反转链表 II
			反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明:1 ≤ m ≤ n ≤ 链表长度. 示例: 输入: 1->2->3->4->5->NULL, m = 2, ... 
- 【转】Linux安装HDF5及遇到的问题总结
			Linux安装HDF5及遇到的问题总结 转自: http://www.linuxdiyf.com/linux/26164.html ubuntu版本:16.04.2 64位 从HDF官网(http ... 
- mac下安装、配置redies
			https://blog.csdn.net/qq_21383435/article/details/80676497 可视化客户端安装(Mac): ruby -e "$(curl -fsSL ... 
- NAND FLASH控制器
			一.nand flash访问原理 地址空间概念 nand的编址 nand命令 命令,地址,数据 使用S3C2440的nand flash控制器访问nand flash 前几个编译出来的文件都小于4k ... 
- 窗体Form的FormStyle属性设置为fsStayOnTop时属性设置不起作用问题探讨。
			procedure CreateParams(var Params: TCreateParams); override; procedure MainForm.Createparams(var Par ... 
- 帆软:不使用 __parameters__ 传参,问题。
			原帖地址:http://bbs.fanruan.com/thread-117614-1-1.html 在设计器本地可以用下面方式传参数,这个方式跟 &userID=28 的结果是一样的. Re ... 
- Selenium操作示例——鼠标悬停显示二级菜单,再点击二级菜单或下拉列表
			这两天在玩python中selenium,遇到一个问题,就是鼠标移动到页面中某按钮或菜单,自动弹出二级菜单或下拉菜单,再自动点击其中的二级菜单或下拉列表. 首先,手工操作:打开母校的主页 http:/ ... 
