一、Git是什么
Git是一个开源的分布式版本控制系统,用于敏捷高效地管理项目,是目前最先进版本控制系统(高端大气上档次)。
Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
Git与曾经常用的集中式版本控制工具CVS、SVN等不同,它分布式版本库的方式。
GitHub是目前全球最大的Git开源资源库,网址:https://github.com/,这是程序员的聚宝盆,上面有最优秀的程序员贡献的最棒的代码和资源。
Gitee是目前国内优秀的Git资源库,既可以创建开源项目,又可以托管私有项目。网址是:https://gitee.com/.
二、 安装Git
在使用之前需要先安装Git,目前在Mac、Windows和Linux/Unix平台上运行。安装下载地址为:https://git-scm.com/downloads。
下载相应系统的对应的安装文件,安装即可。
配置SSH
配置SSH是为了在执行Git命令时,不用每次都输入账号密码。
1.生成SSH Key
首先,进入个人主目录,在c盘自己创建的用户下,查看是否存在“.ssh”目录(需要打开显示隐藏文件夹),找到id_rsa.pub(公钥),若存在可直接跳过自步骤,若不存在就需要先生成一个SSH Key。
自己生成:
终端中进入个人主目录,执行命令:
$ ssh-keygen -t rsa -C “2513131***@qq.com”
其中,“2513131***@qq.com”是个人GIT平台的账号,替换成自己的。
我们使用自己的账号登录Git资源库网站,查看生成SSH Key的说明文档。点击个人账号,进入“profile settings”,点击“SSH Keys”,最后点击“generate it”。
这里以gitee为例,GitHub大同小异,先进入设置,找到SSH Key 设置,把
id_rsa.pub里面的内容复制进去,公钥标题可自行修改设置。
三、 Git控制流程
图中四个节点分别是:
- Remote:远程资源库
- Repository:本地资源库
- Index:暂存区
- workspace:工作区
节点与节点之间通过Git命令控制资源的交互:
- fetch/clone:从远程资源库克隆拷贝到本地资源库
git clone {URL}
- checkout:从本地资源检出到工作区切换分支
git checkout [branch-name]
- pull: 从远程资源库拉取资源到工作区
git pull
- status: 查看当前的状态
git status
- add:把工作区的变更(添加、删除和修改)提交到暂存区
git add .
git add [dir]
git add [file1][file2]
- commit :将暂存区提交到本地资源库
git commit
- push:同步本地资源到远程资源库
git push
四 、Git的使用
- 首先创建一个java文件(选择语言),以IDEA为例.
找到file > new > project ,选择地址创建文件夹.
- 在Gitee上面新建一个仓库,把地址输入进去,仓库名称自取.
选择私有、开源或公开,已有仓库也可以在右上角点击导入,本地资源和远程仓库均已建立,接下来就可以将二者进行关联.
- 在IDEA中我们打开刚刚创建的项目,然后点击下方的Teminal,进入终端控制.
- 依次完成以下步骤:
Git初始化,输入命令
git init
使本地项目与远程资源库建立连接,输入命令
其中git@git.maidaotech.cn:201901/spring-boot-demo.git是该项目在资源库的SSH地址。
git remote add origin git@git.maidaotech.cn:201901/spring-boot-demo.git
将本地项目资源文件添加到暂存区,输入命令
git add .
提交暂存区到本地资源库,输入命令
git commit -m '关于本次提交的说明'
同步到远程资源库中,输入命令
git push -u origin master
至此,本地项目就与远程资源库建立连接,并托管所有已有代码。
切换分支
工作区默认是在主分支(master)上的,由于主分支的重要性,我们往往不能直接在主分支上开发代码,而是在其他分支上开发代码,待功能完善经过测试后合并到主分支上。
例如,我们要在“v0.1”版本的分支上编写代码,我们需要先将工作区切换到该版本。
- 先将远程资源库中分支同步到工作区,输入命令
git pull
- 执行切换分支的命令
git checkout v0.1
如果,回车执行命令后,终端输入“Switched to a new branch …”,代表切换版本成功。
需要注意的是,如果当前分支有未提交的修改,切换版本时会失败,这是对我们工作内容的一种保护机制,防止工作内容丢失。可以有以下几种处理:
- 先提交当前分支修改的内容,查看第4条提交代码。
- 废弃当前分支未提交的修改,执行命令:
git reset --hard
- 暂存当前分支的修改,等其他分支工作完成,切回当前分支后再取回这些修改。
提交代码
在编写代码之前,一定要知道工作区当前所在分支,避免出现在错误的分支上编写代码。
- 准备工作
在完成工作提交代码时执行以下操作:
查看分支修改状态,执行命令:
git status
查看工作区修改明细,执行命令:
git diff
提交前先更新远程资源库中最新代码到工作区,因为可能有团队中其他成员提交了代码。执行命令:
git pull
如果没有拉取到新的内容,或者拉取到新内容并且与工作区修改没有冲突,则可以提交代码。
如果拉取到新内容,并且和工作区修改的内容相冲突,则需要先处理掉冲突的部分,然后重复以上操作,提交代码。
- 提交代码
前面三部都是提交前的准备工作,不能跳过。确定本次要提交的修改准确无误后,方可提交代码。至少,别人拉取你提交的代码后,项目是能启动的吧。
依次执行以下命令:
git add .
git commit -m '关于本次提交的说明'
git push
至此完成代码的提交.
Git 常用命令总结
-
git branch 列出本地已经存在的分支,并且当前分支会用*标记
-
git branch -r 查看远程版本库的分支列表
-
git clone 克隆
-
git checkout #一般当前分支是干净;
-
git pull 更新当前分支操作
-
git add ./文件名/文件夹
-
git commit -m “描述信息”
建议commit前先执行一次pull -
git push 提交
-
git push -f 强制提交覆盖远程仓库
-
git status 查看信息
-
git diff 目录/文件名(可选)
-
git log #查看日志
-
git reset --hard #强制重置本地分支
–soft
–mixed -
git stash 入栈:将当前分支所有修改暂存到栈空间(保险起见先git add)
-
git stash pop 出栈:恢复分支到最后一次暂存的节点
-
git stash list
-
git merge #把分支v0.1合并到当前分支
-
git rebase -i
1.提交代码(pom.xml)
2.stash暂存
3.尝试rebase
1.提交代码到其他分支(commit之前)
<1>git add .
<2> git stash
<3> git checkout 目标分支
<4> git stash pop
<5> git add .
<6> git commit -m “message”
<7> git push
2.提交代码到其他分支(commit之后)
git checkout 目标分支
git merge branchName/commitId
提交代码
3.合并branch/commit合并到其他分支
<1> git checkout 目标分支
<2> git merger branchName/commitId
<3> 手动合并冲突,保证项目可以正常运行
<4> 提交代码(add、commit、push)
4.删除远程commit
# 1.通过找到想要退回到的哪个commit_id
$ git log
# 2.本地代码变成某个提交记录时刻的代码
$ git reset --hard commit_id
# 3.推送到服务器,一定要加 --force 参数 “master”:对应的分支即可
$ git push origin HEAD:master --force
vim
进入编辑模式 i等
修改内容
esc #退出编辑模式
:q 在没有修改的情况下直接退出
:q! 强制退出,废弃修改
:wq 保存并退出
:wq! 保存并强制退出