一、git简介
SVN ==版本控制工具 [集中式的版本控制工具]
|——所有的文件由中央服务器管理
|——使用者必须能连接到中央服务器
GIT==版本控制工具[分布式版本控制工具]
https://github.com/ 全球最大的开源项目网站。
https://gitee.com/ 中国最大的开源项目网站。
二、git安装
1、下载:https://git-scm.com/downloads
2、打开git Bash设置全局身份
$ git config --global user.name "Your Name"
$ git config --global user.email "Your Email"
# 设置完成后会在用户文件下的`.gitconfig`文件中看到配置信息
3、创建版本库
版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
# 创建仓库
$ mkdir D:/git/repository
# 打开目录
$ cd D/git/repository
# 执行仓库的初始化命令
$ git init
瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改个个目录里面的文件,不然改乱了,就把Git仓库给破坏了。如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。
三、基本操作
1、文件分三个区
- 工作区
- 暂存区
- 分支
2、文件管理-添加文件
# 查看工作区的状态 ,如果出现working tree is clean 说明工具区里面的数据和分支的数据是一样的
$ git status
# 把文件提交到暂存区
$ git add 文件名1 文件名2
# 把当前分支的暂存的所有数据提交到当前分支,可随意填写批注信息,不填写会报错
$ git commit -m '批注信息'
# 查看当前文件和当前分支的文件内容的区别,如果没有区别就不显示任何东西
$ git diff 文件名
3、文件管理-撤销及版本回退
显示当前分支的文件的提交记录
# 显示当前分支的文件的提交记录信息
$ git log 文件名
文件在工作区【撤销】
$ git checkout 文件名
文件在暂存区【撤销】
# 修改了一个文件,并执行git add命令到暂存区了
$ git checkout 文件名
文件已经到了分支里面【回退】
# 修改了一个文件,并执行git add命令到暂存区,还执行git commit -m '批注'的命令
# 回退上一个版本
$ git reset --hard HEAD^
# 回退两次
$ git reset --hard HEAD^^
# 根据版本号回退,先查版本号执行:git log 文件名,版本号在commit这个键中
$ git reset --hard 版本号
4、工作区和暂存区
- 如果在仓库添加一个文件,默认在工作区
- 如果使用
add
之后是到暂存区- 如果使用
commit
之后 是提交到当前分支
5、文件管理-删除文件
先删除的是分支里的文件,再进行提交一次,删除的是暂存区中的文件
$ git rm -rf 文件名
$ git commit -m '删除一次'
6、分支管理
在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。
一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点:
每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长:
当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上:
Git创建一个分支很快,因为除了增加一个dev指针,改改HEAD的指向,工作区的文件都没有任何变化!不过,从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变:
假如我们在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最简单的方法,就是直接把master指向dev的当前提交,就完成了合并:
所以Git合并分支也很快!就改改指针,工作区内容也不变!合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了一条master分支:
相关命令
# 查看当前仓库的所有分支
$ git branch
# 在当前仓库创建一个名为dev的分支
$ git branch dev(分支名)
# 在当前仓库创建一个名为dev的分支并切换到dev分支
$ git checkout -b dev
# 切换到dev分支
$ git checkout dev
# 删除v1分支【先离开这个分支】
$ git branch -d v1
# 合并分支,先切换到需要合并其他的分支的那个分支
$ git merge 分支名
合并出现问题并解决问题步骤:
- 先合并
- 再手动解决问题
- 再执行添加命令
- 再执行提交命令
四、使用GitHub远程仓库
1、远程库存配置
A、第一步:创建SSH Key
在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key。
$ ssh-keygen -t rsa -C "github上的注册邮箱"
一直Enter
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
B、第二步:复制.pub公钥中的内容------->登录GitHub,打开settings,进入到SSH and GPG keys页面
- 点击New SSH key
- 输入title
- 将复制的公钥添加到Key中
- 点击Add SSH key
2、添加远程仓库
现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。
A、第一步:在GitHub上创建仓库
- 点击New repository
- 输入Repository name(仓库名)
- 输入Description(备注)
- 选择public(公有的)
- 不勾选复选框
- 点击Create repository
B、第二步:关联GitHub上创建的仓库
$ git remote add origin git@github.com:itan-yyb/myrepository.git (GitHub仓库地址)
# origin:默认远程仓库的名称
C、第三步:把本地仓库的数据推送到GitHub上
$ git push -u origin master(分支名)
D、第四步:在GitHub上可以查看刚推送的数据
3、从远程仓库克隆
$ git clone git@github.com:itan-yyb/myrepository.git(github上的仓库地址)
注意:默认的clone是把远程仓库里面的所有分支全部克隆下来,但是本地只会有master分支。
解决方法:创建分支并关联远程仓库的分支
$ git checkout -b 分支名 origin/远程仓库分支名
五、分支管理-多人协作
1、查看远程库的详细信息
# 要进入到本地仓库中才能执行该命令,否则报错
$ git remote -v (fatch代表有拉取文件的权限)(push代表有推送的权限)
2、拉取和推送分支
$ git push origin(默认的远程仓库的名字) 分支名(推送)
$ git pull origin(默认的远程仓库的名字) 分支名(拉取)
3、冲突问题
在不同的目录(A,B)下分别拉取同一个远程库,在A里面操作文件并提交 ,在B里面操作文件并提交 ,此时B提交时会出现警告,就是因为本地的基本仓库和远程库不一致,先更新(编辑B中文件)再推送。
六、使用码云
1、概述
使用GitHub时,国内的用户经常遇到的问题是访问速度太慢,有时候还会出现无法连接的情况(原因你懂的)。 如果我们希望体验Git飞一般的速度,可以使用国内的Git托管服务——码云(https://gitee.com)。和GitHub相比,码云也提供免费的Git仓库。此外,还集成了代码质量检测、项目演示等功能。对于团队协作开发,码云还提供了项目管理、代码托管、文档管理的服务,5人以下小团队免费。
2、使用
A、设置公钥,在设置中添加ssh公钥与git类似
B、创建仓库:在码云上创建一个新的项目,选择右上角用户头像 -> 菜单“新建仓库”,然后点击“创建项目
C、先建一个本地仓库目录并初始化,再关联远程仓库
# 新建一个本地仓库目录
$ mkdir gitee
# 进入刚创建的仓库
$ cd gitee
# 本地仓库初始化
$ git init
# 关联远程仓库
$ git remote add origin(远程仓库的名字默认的)git@gitee.com:itan_yyb/myrepository.git (Gitee仓库地址)
D、其他操作与git操作一样
七、删除文件
1、使用git命令删除本地的文件
$ git rm -rf 文件名
2、再提交到本地的版本库
$ git commit -m '批注信息'
3、再推送到远程仓库上
$ git push origin(远程仓库名字默认值) 当前分支名
八、在Eclipse上使用git或gitee
1、之前使用bash连接github时做了哪些事
- 生成ras.pub 公钥
- 配置sshkey
- 创建仓库
- 关联远程库
- 向仓库推送数据
- 拉取数据
2、把项目分享到gitee
A、配置Git相关账号信息
B、Eclipse 配置 publickKey
1、生成key
路径
2、获取key
路径
C、在码云中配置 用户 ssh key
D、验证添加的key
是否生效
$ ssh -T git@gitee.com
# 返回: Welcome to Gitee.com, xxx ! ---- 则表示添加key成功!
E、分享项目到码云
1、选中项目右键—>Team—>Share Project
2、将文件添加到暂存区中
选中项目右键--->Team--->Add to Index
3、或者自定义选择要添加的文件到暂存区
选中项目右键--->Team--->Commit--->可以自行选择Unstaged Changes中的文件--->Add to Index
4、把项目推送到远程仓库中
选中项目右键--->Team--->Remote--->Push
5、点击next—>输入账号和密码登录—>设置密码找回问题
6、去码云上刷新即可
3、从gitee上拉取项目
File--->Import--->选择Git
4、更新项目
选中项目右键--->Team--->Pull...
5、删除项目中的文件
A、删除提交
删除文件后--->右键选择Team--->选择Commit--->输入提交信息后--->点击Commit按钮
B、推送到远程仓库
右键选择Team--->选择Remote--->Push--->点击Next按钮--->选择分支--->点击Finish按钮
九、在IDEA上使用git或gitee
1、把项目分享到git
A、在idea中配置本机中的git安装路径
file --> other settings --> setting for new projects --> version control --> Git
B、在idea中配置github账号
file-->other settings-->setting for new projects-->version control-->GitHub(输入git账号和密码)
C、创建项目的本地git库
VCS --> import into version control --> create git repository(选择要上传的项目),点击ok
D、先添加到Git
选中项目右键--->选择Git-->点击add
E、再提交到本地
选中项目右键--->选择Git--->commit directory--->填写提交信息--->点击Commit
F、最后提交到远程仓库
1、在GitHub上新建一个仓库
2、提交到刚创建的仓库中
选中项目右键--->选择Git-->repository-->push
然后设置github上对应的仓库的地址,点击push即可
注意:若是报错,无法提交,解决如下:
#Idea中可使用Alt+F12,然后依次输入命令
git pull
git pull origin master
git pull origin master --allow-unrelated-histories
#再重新push自己的项目,成功
2、从git上拉取项目
VCS--->Checkout from Version Control--->Git
3、项目操作步骤
- 先添加一下。
- 再提交到
git
的本地仓库。 - 再提交到远程的仓库。
4、更新操作
选中项目右键--->Git--->Repository--->Pull...
5、把项目分享到gitee
A、在IDEA中下载gitee安装并重启IDEA
B、在idea中配置本机中的git安装路径
file --> other settings --> setting for new projects --> version control --> Git
C、配置gitee
D、推送到gitee
VCS --> import into version control -->Share Project on Gitee
注意: 会自动在Gitee上新建仓库
E、其他操作跟git一样