目录
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)
ssh-keygen -t rsa -C git@gitee.com:andy9468/ttsx_sz3.git
错误处理
eval "$(ssh-agent -s)"
ssh-add
2、克隆
git clone git@gitee.com:andy9468/ttsx_sz3.git
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