Git学习
管理本地仓库
此学习将会使用git软件进行编辑,即git-bash.exe文件,这里主要使用命令行进行编辑,主要是为了方便以后在linux系统中使用命令行进行操作
前提
- 安装git
- 拥有GitHub账号
本地git的初始化
-
设置用户名
git config --global user.name'用户名'
-
设置用户名邮箱
git config --global user.email "你的邮箱"
-
查看设置
git config --list
可以查看当前文件夹的设置,包括用户名和邮箱,以及后面的仓库信息
-
在当前文件下创建新文件夹(实例为test文件夹)
mkdir test
当然也可以在文件系统中右击创建
-
在文件内初始化git(创建git仓库)
cd test
进入当前目录下的刚新创建的test文件夹
git init
初始化,即在当前文件夹下创建一个.git的隐藏文件夹
此时,刚建的test(示例)就成为了一个git repository(仓库)
尝试使用git本地仓库
-
创建文件
touch a1.java
-
查看当前文件夹状态(查看当前是否有文件需要commit)
git status
向本地仓库中添加文件的流程
git status
查看文件情况
git add xxx.java
从工作区上传到暂存区
git commit -m "描述" (文件)
从暂存区上传到git仓库,在-m后添加相关的文字描述
详解
- 当文件夹中出现新文件时,使用git status会出现红色的未提交的文件(即新文件)
- 然后使用 git add 新文件 后,再使用git status会出现绿色的提示: new file: 新文件,此时文件到达暂存区
- 再使用 git commit -m '提示信息' ,回车后会把文件上传到git仓库中
修改本地仓库文件
vi 文件名
编辑修改该文件
cat 文件名
查看该文件
git diff [文件名]
比较该文件的工作区和暂存区
不带文件名可以比较多个文件
git diff HEAD 文件名
比较工作区和本地仓库
git diff [本地库的历史版本] [文件名]
比较工作区和本地库某个版本
详解
- 使用 v1 文件名 修改文件后,使用 git status 查看仓库状态时会出现红色的 modified: 文件名
- 然后使用 git add 文件名 后,再使用 git status 查看仓库状态时会出现绿色的 modified: 文件名(添加到暂存区)
- 再使用 git commit -m '提示信息' ,回车后会把文件上传到git仓库中
删除本地仓库文件
rm 文件名
删除该文件,是正常写法
rm是remove的意思,也有 rm -rf 文件名 的写法,
后面的参数r是recursive递归循环,f是force强制不确认
rm -i 文件名 为删除前出提示, rm -l 文件名 是删除三个以上时才出提示
git rm 文件名
从暂存区中删除文件
- 使用 rm -rf 文件名 删除文件后,使用 git rm 文件名 让暂存区删除文件
- 再使用 git commit -m '提示信息' ,回车后git仓库也会删除文件
管理Git远程仓库
使用远程仓库的目的
作用:备份,实现代码共享和集中化管理
[图片上传失败...(image-79661-1559201388014)]
Git 克隆操作
目的
将远程仓库(github对应的项目)复制到本地
- 完整的把远程库下载到本地
- 创建 origin 远程地址别名(可以使用别人起的别名)
- 初始化本地仓库
代码
git clone 仓库地址
仓库地址
注意要到已经初始化的文件夹下克隆
同时可以让本地仓库记住仓库地址
git remote add 别名 仓库地址
起好别名后,可以通过
git remote -v
查看别名和对应的仓库地址
修改后提交到远程仓库
git push (别名 节点)
- 修改或添加文件
- git add 文件名 提交到暂存区
- git commit -m '描述' 提交到本地仓库
- git push 提交到远程仓库
邀请别人加入团队
到仓库的setting-Collaborators中输入成员的名字
抓取远程仓库的修改
pull = fetch + merge
git fetch 别名 分支
git merge 别名/分支
所以可以使用另外的方法pull
git pull 别名 分支
出现冲突
- 如果不是基于GitHub远程库的最新版所做的修改,不能推送,必须先拉取
- 拉取下来后如果进入冲突状态,则按照“分支冲突管理”操作解决即可
Github Pages 搭建个人网站
访问
https://用户名.github.io
搭建个人站点
-
创建个人站点
新建仓库(仓库名必须是 用户名.github.io)
-
在仓库下新建index.html的文件即可
作为首页
这样访问 https://用户名.github.io 就能访问 index.html 了
注意github仅支持静态网页,且仓库里只能是.html文件
搭建项目站点(Project Pages)
进入项目主页,进入 settings
-
在 settings 页面,点击 Launch automatic page generator (位于下方)
会进入主题页面,同时可以编辑
生成网页
其他git指令
查看信息
git log
commit ######### (HEAD -> master)
####代表该版本的索引,可以根据索引值进行版本操作
HEAD代表当前版本,指向master分支
(按空格可以翻页 b向上翻页 q退出)
git log --pretty=oneline
以一行一条信息的方式显示
git log --oneline
更简洁的显示(只显示当前版本后面的版本)
git reflog
能提示版本回溯需要的步数(能显示所有历史记录)
更改版本
基于索引值操作(推荐)
git reset --hard 索引值
- 可以先用 git log 查看版本对应的索引值(局部索引值也可以)
- 再用 git reset --hard 索引值 把版本定在该索引值的版本下
使用^符号(只能往后)
git reset --hard HEAD^
退到后面一个版本
一个代表后退一个,几个代表后退几个版本
使用~符号
git reset --hard HEAD~数字
数字是多少代表后退多少步
reset参数
-
--soft
git reset --soft 仅移动本地仓库的指针
-
--mixed
git reset --mixed 仅移动本地仓库和暂存区的指针
-
--hard
git reset --hard 能移动本地仓库、暂存区和工作区的指针
帮助命令
git help 想查询的命令
Git的分支
在版本控制中,使用多条线同时推进对个任务(多个功能的开发)。
各个分支在开发的过程中,如果某一个分支开发失败,不会对其他分支有任何影响,失败的分支删除重新开发即可
分支的相关操作
查看所有分支
git branch -v
创建该分支
git branch 分支名
切换分支
git checkout 分支名
合并分支(被合并)
切换到接受修改的分支上,用 git checkout 分支1 切换
-
执行 merge 命令
git merge 分支2
分支2就合并到分支1中
解决冲突
合并时可能出现两个分支行不一致,导致合并失败,此时需要手动合并
-
打开冲突文件( vim 文件名 )
可能会出现下面的冲突(案例)
删去冲突符号,修改文件(或者留下适合的那一行)
-
执行 git add 文件名 和 git commit -m "描述" 合并到本地仓库中
注意描述后不能带文件名