Git
1.项目中存在的问题
1.项目的安全性太低
2.项目的版本比较混乱
3.项目的无端报错
4.项目没办法做到协同开发
2.Git概念
Git是分布式版本控制及协同开发工具
3.版本控制工具的分类
1.集中式版本控制工具 cvs svn
2.分布式的版本控制工具 git
4.Git下载安装
4.1.下载
从 http://msysgit.github.io/ 下载,然后按默认选项安装即可。
4.2.安装
1.傻瓜式安装,一路下一步
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明 Git 安装成功!
安装完成后,还需要最后一步设置,在命令行输入: 设置用户名 以及邮箱
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
# 查看配置
git config -l
因为 Git 是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和 Email 地址。你也许会担心,如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的
5.版本库
5.1.创建版本库
$ mkdir GitRepository #创建文件夹 文件夹就是版本库放的位置
5.2.初始化版本库
第二步,通过git init
命令把这个目录变成 Git 可以管理的仓库:
$ git init
瞬间 Git 就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git
的目录,这个目录是 Git 来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把 Git 仓库给破坏了。
6.Git的简单使用
6.1.创建文件
$ touch aaa.txt
6.2.将文件提交到Git仓库
第一步,用命令git add
告诉 Git,把文件添加到仓库:
$ git add aaa.txt
第二步,用命令git commit
告诉 Git,把文件提交到仓库:
$ git commit -m "创建一个aaa.txt"
简单解释一下git commit
命令,-m
后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
6.3.Git分区原理
$ git status
红色 工作区的已经修改未添加到暂存区
绿色 工作区已经提交到暂存区为添加到版本库
working tree clean 表示工作区与版本库一致
git status
命令可以让我们时刻掌握仓库当前的状态
小结
现在总结一下今天学的两点内容:
初始化一个 Git 仓库,使用git init
命令。
添加文件到 Git 仓库,分两步:
第一步,使用命令git add <file>
,注意,可反复多次使用,添加多个文件;
第二步,使用命令git commit
,完成。
7.git指令
7.1查看历史版本
$ git log
git log
命令显示从最近到最远的提交日志,我们可以看到 3 次提交,最近的一次是append GPL
,上一次是add distributed
,最早的一次是wrote a readme file
。 如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline
参数:
$ git log --pretty=oneline
7.2.版本回退
7.2.1.会退到上一个版本
$ git reset --hard HEAD^
$ git reset --hard HEAD^1~100
最新的那个版本append GPL
已经看不到了!好比你从 21 世纪坐时光穿梭机来到了 19 世纪,想再回去已经回不去了,肿么办?
办法其实还是有的,只要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊,找到那个append GPL
的commit id
是3628164...
,于是就可以指定回到未来的某个版本:
7.2.2.回退指定的版本
$ git reset --hard 3628164
7.2.3.查看历史命令
现在,你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的 commit id 怎么办?
在 Git 中,总是有后悔药可以吃的。当你用$ git reset --hard HEAD^
回退到add distributed
版本时,再想恢复到append GPL
,就必须找到append GPL
的commit id
。Git 提供了一个命令git reflog
用来记录你的每一次命令:
$ git reflog
7.3.撤销修改
7.3.1.撤销工作区的修改
$ git checkout -- aaa.txt
7.3.2.撤销暂存区的修改
$ git reset HEAD aaa.txt
7.4.删除文件
一般情况下,你通常直接在文件管理器中把没用的文件删了,或者用 rm 命令删了:
$ rm aaa.txt #删除文件
7.4.1.误删文件
如果是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
$ git checkout -- aaa.txt
7.4.2.删除文件
确实要从版本库中删除该文件,那就用命令git rm
删掉,并且git commit
:
$ git rm aaa.txt
$ git commit -m "确定删除文件"
8.GitHub使用
1.注册账号
2.登陆账号
8.1.生成SSH key
在自己本机生成
$ ssh-keygen -t rsa -C "15236674712@163.com"
8.2.查看SSH key
路径:C:\Users\Administrator.ssh
8.3.公钥
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDOQUUlqCCekbZL/kxK4qq1/ymKcugHq+ma7/bi1L9opDuaL53rzmzmQo4uDqIY/bpSM2NioFaQpK1OBeM3VPZ0PP7nepcZrs/8/7R6iJxOe/3Cgn+YG+rZBWpjvrebpq4Z//R2mKkMViFRi9n2u9+jUKdH2DwAfFxVHfEY8fm2Kt/2eWa9s7IincNKHTAi4JDi/ToX0EhFsfaw7uYBKdw7yBOmt9aRbMWlBBIsjCGfp256K/bd18SGDezpnmCT3g1pjKgxkYQ+0qK/yPO3stYAY3clTFhR3oh9prVRMNXGJZ9+2nTdxX5H4pRgTP0wZWf59ThUbqa1TGk+sxWgvEOV 15236674712@163.com
8.4.添加gitHub的信任列表
Settings -->SSH and GPG keys -->New SSH key
8.5.在GitHub上创建仓库
your reposities --> new
8.6.将GitHub上的仓库拉到本地
$ git clone git@github.com:15236674712/cmfz-158.git
8.7.将本地的版本库推到GitHub
$ git add aaa.txt
$ git commit -m "描述信息"
$ git push origin
8.8.将GitHub上的更新更新到本地
$ git pull origin
9.将本地项目交由Git管理并且推送至远程仓库
9.1.向将项目初始化为Git仓库
$ git init
$ git add .
$ git commit -m "添加项目"
9.2.添加忽略提交文件的配置
命名为 .gitignore
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
### VS Code ###
.vscode/
9.3.在GitHub上创建一个空的项目
9.4.与GitHub从仓库建立远程连接
$ git remote add origin git@github.com:15236674712/maven_day1.git
9.5.将本地项目推送至远程库
$ git push -u origin master
9.6.将远程库项目的更新到本地
$ git pull origin master
10.分支
1.创建分支
$ git branch dev #dev是新的分支的名字
2.查看所有分支
$ git branch
3.切换分支
$ git checkout dev #dev是要切换分支的名字
4.创建并切换分支
$ git checkout -b dev
5.合并分支
注意:要切换到master分支上合并分支
$ git merge dev
6.删除分支
注意:要切换到master分支上删除分支
$ git branch -d dev
11.IDEA集成Git
11.1.配置Git目录
11.2.配置登陆GitHub
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pk71AIbn-1587286512852)(img\配置GitHub.png)]
11.3.配置Git终端窗口(Git.Bash)
删除项目
windows上的git 关联 远程仓库github
$ git push -u origin master
测试连接是否成功
刷新GitHub界面 看到文件
通过远程仓库恢复本地版本库
git clone https://github.com/gaozhy520/170.git
另外一种的拉取
$ git pull origin master
协同开发
协同开发
多人共享一个仓库对数据修改
每个人都需要拉取最新的版本到本地库中去开发
命令:
$ git pull origin master
五、版本冲突问题
解决思路
(1)代码有重合,选择保留一方
(2)代码无重合,可以选择保留一方或者同时保留双方代码
Administrator@OKDV0CSXRZHF64J MINGW64 /e/170 (master)
$ git push origin master
fatal: HttpRequestException encountered.
▒▒▒▒▒▒▒▒ʱ▒▒▒▒
To https://github.com/gaozhy520/170.git
! [rejected] master -> master (fetch first) //提示拒绝提交,版本冲突
error: failed to push some refs to 'https://github.com/gaozhy520/170.git'
//如果出现这个问题处理起来;
第一步要拉取远程的版本库
Administrator@OKDV0CSXRZHF64J MINGW64 /e/170 (master)
$ git pull origin master
remote: Enumerating objects: 5, done.。。。。。。。。
merge是合并的意思 . ;把本地代码和远程的代码合并一个文件了
手动删除不需要的冲突的版本。或者保留全部
但是这个关键提示符号要删除
$ git status
(use "git add <file>..." to mark resolution)
both modified: b.txt
no changes added to commit (use "git add" and/or "git commit -a")
Administrator@OKDV0CSXRZHF64J MINGW64 /e/170 (master|MERGING)
//再次添加b.txt文件
$ git add b.txt
Administrator@OKDV0CSXRZHF64J MINGW64 /e/170 (master|MERGING)
//提交b.txt -m 'resovle b.txt conflict' 表示设置message提示消息
$ git commit -m 'resovle b.txt conflict'
//查看状态
Administrator@OKDV0CSXRZHF64J MINGW64 /e/170 (master)
$ git status
//再次提交
Administrator@OKDV0CSXRZHF64J MINGW64 /e/170 (master)
$ git push origin master
。。。。。。。
remote: Resolving deltas: 100% (2/2), completed with 1 local object.
六、分支管理
创建分支
Administrator@OKDV0CSXRZHF64J MINGW64 /e/170 (master) $ git checkout -b dev
Switched to a new branch 'dev'
Administrator@OKDV0CSXRZHF64J MINGW64 /e/170 (dev)
Administrator@OKDV0CSXRZHF64J MINGW64 /e/170 (dev) $ git branch
* dev
master
切换分支
Administrator@OKDV0CSXRZHF64J MINGW64 /e/170 (dev)
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
分支合并
Administrator@OKDV0CSXRZHF64J MINGW64 /e/170 (master)
$ git merge dev
Updating cee08ee..53483f0
Fast-forward
c.txt | 0
d.txt | 0
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 c.txt
删除分支
Administrator@OKDV0CSXRZHF64J MINGW64 /e/170 (master)
$ git branch -d feture
Deleted branch feture (was 53483f0).
Administrator@OKDV0CSXRZHF64J MINGW64 /e/170 (master)
$ git branch
dev
* master
Administrator@OKDV0CSXRZHF64J MINGW64 /e/170 (master)
$ git branch -d dev
Deleted branch dev (was 53483f0).