目录
1、git是什么
2、git怎么工作的
3、git常用命令
4、git提效工具
5、git的技术用语
1、git是什么
git是开源的分布式的版本控制系统,可以有效、高速地处理的项目版本管理。
git中存储是变更信息,而不是整个文件。
总结git的两大特点:
版本控制:可以解决多人同时开发的代码问题,也可以解决单人开发时找回历史代码的问题。
分布式:多台机器互为备份,同一个Git仓库,可以分布到不同的机器上。可以自己搭建这台服务器,也可以使用GitHub网站、gitee网站(属于osChina)、coding网站。
2、git怎么工作的
git的工作原理如图所示

3、git常用命令
命令和操作大全
部署git和git常用命令
1、创建公钥(3次Enter)
错误处理
eval "$(ssh-agent -s)"
ssh-add
 
 
2、克隆
 
3、查看所有分支
git branch
 
4、创建dev分支(创建分支会克隆当前分支的开发进度和状态)
git branch dev
 
5、删除分支(删除分支前,先切换到其他分支)
git checkout itcast1
git branch -d itcast22
 
 
6、将本地的当前分支推送到远程
git push origin dev
 
7、跟踪分支
作用是:使得本地的dev被用于跟踪(就是和远程的dev对比)
执行本命令前,需要向执行6,即把本地dev推送到远端dev
git branch --set-upstream-to=origin/dev dev
 
8、创建并切换到新分支
git checkout -b itcast1
小结:
(1)检查当前分支和远程分支的版本提交落后关系。
git checkout
(2)切换到分支itcast2
git checkout itcast2
(3)创建并切换到新分支
git checkout -b itcast1
 
9、将远程dev分支同步到本地(本地不需要自己新建dev2分支)
git checkout -b dev2 origin/dev
将远程itcast1同步到本地(本地不需要自己新建itcast1分支)
git checkout -b itcast1 origin/itcast1
 
10、被跟踪的dev还可以用pull同步到本地(先本地新建dev分支)
git checkout -b dev
git pull
 
 
本地已经有dev分支和项目文件时,同步到本地的命令过程:
git checkout dev
git pull origin dev
git reflog
git reset 10e2148
git checkout -- .
 
 
 
11、查看工作区、缓冲区的被修改但还未提交(git commit)的文件
git status
或者(简要输出)
git status -s
 
12、添加到缓冲区(完成一个文件,git add 一下)
git add .
 
13、提交到本地版本库(完成一个业务逻辑,git commit一下)
git commit -m '部署框架'
如果没有新建的文件。可以不单独add,一次性提交:-a -m
git commit -a -m "Changed some files"
千万注意,-a不会造成新文件被提交,只能修改。
 
14、将本地版本库推送到远程服务器(服务器相当于U盘)
就是将本地分支推送到服务器
git push origin itcast1
 
15、将分支itcast1合并到公共分支dev
git checkout dev
git merge itcast1
git push origin dev
 
 
常见的合并过程
(1)合并分支(第一个人的合并):
git status
git checkout dev
git merge itcast1
git push origin dev
 
 
(2)第二个人开始合并分支前,需要先下载第一个人合并分支后,推到远程的dev分支
git checkout dev
git pull
git merge itcast2
 
 
(3)这步后,如果产生冲突,找写代码的人商量,决定怎么删留改。
处理bug,最好建立一个bug001分支(从需要改bug的分支,创建并切换到bug001分支)
git checkout dev
git checkout -b bug001
 
 
 
(4)修改处理bug,并合并,推送
1)在分支bug001下,改好后:提交本地
git add ./
git commit -m '解决冲突01'
 
 
2)并开始合并分支
git checkout dev
git pull
git merge --no-ff -m '解决冲突01' bug001
 
说明:
合并分支默认是引用合并(fast-forward),如果是把分支bug001合并到分支dev,就需要深拷贝合并(no-ff)。否则,删除bug001后就没办法引用了。
 
3)删除分支bug001
git branch -d bug001
 
4)推送分支dev到服务器
git push origin dev
 
(5)小技巧:将合并好的dev版本再合并给itcast2,推送到服务器
git checkout itcast2
git merge dev
git push origin itcast2
 
 
 
 
16、查看日志(历史记录)
(1)完整的日志(commit后,并且push的记录)
git log(宏观。更适合克隆后,查看本地的远程项目的提交记录)
(2)简介版日志(只有本地commit后的记录,可以看到版本号)
git reflog(微观。更适合本地,强烈推荐)
 
17、日志的2个作用
(1)对比两个版本的差异:git diff
1)比较最近(当前已commit)版本和工作区的差异
git diff HEAD -- ttsx/ttsx/urls.py
2)对比最近版本和上一次版本的差异
git diff HEAD HEAD^ -- ttsx/ttsx/urls.py
3)对比上一次版本和最近版本的差异
git diff HEAD^ HEAD -- ttsx/ttsx/urls.py
4)对比两个版本的差别(HEAD表示最近提交的版本,7c56139另一个版本)
git diff HEAD 7c56139 -- ttsx/ttsx/urls.py
 
拓展:
1、查看工作区的变动
尚未缓存的改动:
git diff
 
2、查看缓冲区的变动
查看已缓存的改动:
git diff --cached
 
3、查看工作区、缓冲区的变动(相当于git status)
查看已缓存的与未缓存的所有改动:
git diff HEAD
 
4、显示变动摘要
显示摘要而非整个
git diff --stat
 
小结:git status(强烈推荐git status)、git diff 
git status  显示新建、修改、删除,
git diff      只显示修改,一行一行地显示这些改动具体是啥。
 
 
 
(2)回退到以前版本:git reset 8042a87
git reflog
git reset 8042a87
git status
git checkout -- ttsx/ttsx/urls.py
 
 
18、历史版本,从仓库恢复到暂存区
git reset HEAD(或者版本号8042a87)
从暂存区恢复到工作区
git checkout -- 文件名
 
19、保存现场(不想提交修改,但是必须切换到其它分支去解决bug时用)
git stash
 
20、恢复现场(bug修复后,回到以前的分支,并恢复现场)
git checkout itcast1
git stash pop
 
 
21、配置
查看git所有配置信息  
git config --list
或者:查看某一个变量的值,
git config user.name
拓展:
配置用户信息,Ubuntu家目录python文件夹下
vi .gitconfig
 
 
22、git rm
git rm 会将条目从缓存区中移除。这与 git reset HEAD 将条目取消缓存是有区别的。 "取消缓存"的意思就是将缓存区恢复为我们做出修改之前的样子。
默认情况下,git rm file 会将文件从缓存区和你的硬盘中(工作目录)删除。
如果你要在工作目录中留着该文件,可以使用 git rm --cached:
如我们删除 hello.php文件:
git rm hello.php
不从工作区中删除文件:
git rm --cached README
4、git提效工具
git有一个实用的图像管理工具sourcetree。
图形操作,代码差异、分支情况、文件增删,直观易懂。
5、git的技术用语
(1)分支
各自的分支:一个开发人员一个分支,互不冲突。一个分支相当于一辆车的专属跑道。
dev公共分支:成员合并的分支,用于阶段性合并代码。
master主分支:发布版本的分支。
 
(2)工作区、版本库、服务器
工作区、版本库(包括暂存区和仓库区)、服务器(如:github、gitee、自搭建)
1)工作区:本地所有文件(除了.git)
2)版本库:.git
3)服务器:相当于共用U盘
查看工作区改动,git diff
查看暂存区改动,git diff --cached
 												
												
								- Spring+SpringMVC+MyBatis+LogBack+C3P0+Maven+Git小结(转)
		
摘要 出于兴趣,想要搭建一个自己的小站点,目前正在积极的准备环境,利用Spring+SpringMVC+MyBatis+LogBack+C3P0+Maven+Git,这里总结下最近遇到的一些问题及解决 ...
		 
						- git 小结
		
git cherry-pick de0ec64  可将另一个分支中的提交 cherry-pick到当前分支来
		 
						- iOS版本控制git小结--yoowei
		
# 显示隐藏文件 defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder # 不显示隐藏文件 d ...
		 
						- git小结
		
1.创建本地与远程分支 先创建远程分支,再创建本地分支,再将本地分支与远程分支关联git fetch 获取远程分支git checkout remote_branch 或者 git checkout  ...
		 
						- GIT入门笔记(19)GIT 小结
		
1.add和commit为什么Git添加文件需要add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:$ git add file1.txt$ g ...
		 
						- 版本控制之Git小结
		
一.版本控制 1.1 什么是版本控制 版本控制是一种记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况的系统.可以对任何类型的文件进行版本控制. 1.2 为什么需要版本控制 有了版本控制就可以 ...
		 
						- Git小结---So far.......
		
基本的: 1. 在配置了SSH Key的情况下,clone项目时使用:git clone git@github.com/用户名/仓库名.git  使用这种方式而不使用https的方式的好处在于,在pu ...
		 
						- git参考, 小结
		
git官网: https://git-scm.com 菜鸟教程: http://www.runoob.com/git/git-tutorial.html 廖雪峰: https://www.liaoxu ...
		 
						- 记一次小团队Git实践(上)
		
公司规模不大,成立之初,选择了svn作为版本控制系统.这对于用惯了git的我来说,将就了一段时间后,极为不爽,切换到git-svn勉强能用.随后,因为产品需要发布不同的版本,而git-svn对远程分支 ...
		 
		
	
随机推荐
	
									- git - gitHub生成Markdown目录
			
就是github-markdown-toc.go. github-markdown-toc.go Github地址 如果你有GO语言(又是你)的编译环境,可以尝试自己编译,如果没有,可以直接下载编译好 ...
			 
						- [Bayes] Metropolis-Hastings Algorithm
			
[Bayes] prod: M-H: Independence Sampler for Posterior Sampling dchisq gives the density,             ...
			 
						- python 传入任意多个参数(方法调用可传参或不传参)
			
1.可传参数与不传参数,在定义中给参数设置默认值 class HandleYmal: """ 获取测试环境的配置 """ def __ini ...
			 
						- Global.asax.cs  为 /.aspx 执行子请求时出错。 Server.Transfer
			
x 后台代码 Global.asax.cs protected void Application_Error(object sender, EventArgs e){Server.Transfer(& ...
			 
						- HTML-头部
			
HTML <head> 元素 <head> 元素是所有头部元素的容器.<head> 内的元素可包含脚本,指示浏览器在何处可以找到样式表,提供元信息,等等. 以下标签 ...
			 
						- js获取日期时间
			
获取当前时间 function getNowFormatDate() {//获取当前时间 var date = new Date(); var symbol_gang = "-"; ...
			 
						- [转帖]Merkle树
			
Merkle树 https://www.jianshu.com/p/fc439a8fd0de 所谓比特币交易就是从一个比特币钱包向另一个中转账,每笔交易都有数字签名来保证安全.一个交易一旦发生那么就是 ...
			 
						- Automatically generating nice graphs at end of your Load Test with Apache JMeter and JMeter-Plugins
			
Update as of November 2017: Since JMeter 3.0, last version being 3.3, JMeter provides Out Of The Box ...
			 
						- 你应该掌握linux中Bash命令的一些快捷方式
			
在本文中,我们将分享许多对任何Linux用户都有用的Bash命令行快捷方式.这些快捷方式可以快速地执行某些动作,例如访问和运行先前执行的命令,打开编辑器,在命令行上编辑/删除/更改文本,移动光标,控制 ...
			 
						- linux 创建虚拟机常见错误
			
无法打开内核设备global vmx86 重启虚拟机所有服务 无法创建虚拟机 需要使用管理员身份运行vm即可