git
2020-02-11 10:32:59 0 举报
AI智能生成
登录查看完整内容
git工具的关键知识点,包括:git的定义、配置、git仓库的原理、git本地操作、远程操作、现场保护和ignore文件的使用等。
作者其他创作
大纲/内容
git
远程操作
上行
分支
git branch 设置分支追踪关系
git branch —set-upstream 本地分支名 远程主机名/远程分支名
远程分支删除
git branch -r -d origin/name
数据推送
git push 推送数据到远程仓库
git push 主机名 本地分支 远程分支
git push 主机名 本地分支
git push -u 主机名 本地分支
-u将后面的远程主机添加为默认主机
取回数据
git fetch 取回远程主机仓库并存储为分支,存储形式为 主机名/分支名
git fetch 主机名
git fetch 主机名 远程分支名
git pull取回远程主机仓库并与本地对应分支融合
1 git pull 主机名 远程分支名 : 本地分支名
取回远程分支与本地分支融合
2 git pull 主机名 远程分支名
取回的数据与当前分支融合
3 git pull 远程主机
取回的数据根据分支追踪关系融合
git clone
克隆远程主机的仓库到本地
git clone url
支持的url类型
http[s]://
ssh://example.com/path/to/repo.git or user@example.com (mailto:user@example.com):path/to/repo.git
git://
/opt/git/
file:// 本地文本传输协议
ftp[s]://
rsync://
注意
1 clone 会根据url自动在仓库创建一个主机名origin,它对应与clone所用的url,若需要自己指定生成的主机名则用 git clone -o 主机名 url
2 clone会下载所有的远程分支,但是只会在本地创建一个主master分支,其余分支可通过 branch -a查看
本地远程主机信息
增加
增加远程主机在仓库中的别名
git remote add 别名 url
删除
删除远程主机在仓库中的别名
git remote rm 别名
修改
更改远程主机在仓库中的别名
git remote rename
查看
查看仓库定义的远程主机别名及网址
git remote -v
查看仓库定义的远程主机别名
git remote
显示主机详细信息
git remote show 别名
git配置
局部配置
去掉global
配置文件在该仓库.git中
全局配置
git configure —global user.name “name”
git configure —global user.email “email”
配置文件保存在 /etc中
git定义
1 分布式,版本控制系统
2 有类似”中央处理器“的东西,主要用于数据的托管
3 每个人都有自己的仓库
本地现场保护
在当前仓库中 暂存区 工作区 只有一个是公用的, 当暂存区存在被add的数据但是没有commit时,若需要切换分支工作,这部分暂存区和工作区需要保存,否则会被清空
git stash
保存工作现场,可多次保存
查看保存的现场
git stash list
恢复现场
git pop
恢复并删除保存
git apply
恢复不删除保存
git apply stash{0}
恢复第0个保存
git仓库(就是一个文件夹)
结构
版本库
位置
文件夹内 .git 隐藏文件夹包含版本库信息是版本库,commit操作添加到此处
本质
版本库中本质上存储的是修改
文件的坐标
/folder1/folder2/filename
若在文件夹中
filename
若直接就在工作区中
存储形式
链式结构com1-com2-com3,HEAD指针总是指向最近一次提交,HEAD-master(分支)-com3
暂存区
工作区 work
文件夹内就是工作区
示意图
结构关系
工作区 --add--暂存区 --commit-- 版本库
.gitignore文件
用途
在文件中填写文件名称,这些文件就不会被track了
格式
文件夹名字
*.jpg 类似的所有类型的文件
文件名
本地操作
本地仓库操作
1 初始化文件夹为仓库
git init
2 向暂存区增删
git add filename
*可多次添加
git rm - - cached filename
3 向版本库的操作
1 向版本库提交
git commit -m “comment”
(文件路径有变动)git commit -am “abc”
当已经提交到本地仓库,工作区中文件路径发生变化时,可用 -am 而不是 -m, 这样可以实现本地仓库中文件路径的相应变化,而不是变成同一文件在不同文件夹中
git reflog
查询所有分支commit历史,只要Head变动都显示
git log
查询本分支commit情况
1 为commit打tag
定义
标签的本质是指向commit的指针,一个commit只能有一个tag
本地
打标签
git tag v1
为本分支最新commit打标签v1
git tag v1 commit_id
为id为commit_id的commit打标签v1
git tag -a v1 -m “comment”
显示tag
git tag
显示目前有的tag
git show v1
显示tag为v1的commit信息
删除标签
git tag -d v1
删除本地标签v1
切换到标签
git checkout v1
远程
git tag push 主机名 —tags
把所有tag一次推送到远程
git tag push 主机名 v1
把v1标签推送到远程
git push 主机名 :refs/tags/
删除远程标签
2 从版本库删除
同时在版本库和工作区删除
git rm filename
删除版本库文件存档及工作区中的文档
git rm -r folder
删除本地仓库和工作区中的文件夹
只在版本库删除,工作区中保留
* 首先需要把这些文件的名称加入到 .gitignore文件中
git rm file_path - - cached
删除文件
git rm -r file_path - - cached
删除文件夹
git rm . - - cached 和 git add .
把gitignore中记录的文件从版本库都删除
3 从版本库更新工作区
git checkout -- filename
将版本库的文件更新到或恢复到工作区
4 查看版本库的中的文件
git ls-files
* 注意:现实的文件包括暂存区的文件
5 版本库提交出错,撤销提交
git reset - - soft 版本库ID
仅撤销已提交的版本库,不修改缓存区和工作区
git reset - - mixed 版本库ID
仅撤销已提交的版本库和缓存区,不修改工作区
git reset --hard 版本库ID
撤销提交的版本库、并把缓存区、工作区都恢复到之前版本
*reset只是在变换指针指向
* 注意:版本库ID是你要reset到的ID,不是当前的ID
*git保存的是修改,如果修改不add到缓存区就不能提交到版本库
*一次commit称为一次提交,有固定的id
4 查看工作区状态
git status
5 查看修改后的不同之处
git diff
6 查看历史纪录
git reflog(所有记录及commitid)
本地分支操作
分支查看
git branch-a 显示所有分支
git branch-r 显示所有远程分支
git branch 显示当前分支(非隐藏)
分支创建
git branch name 创建分支
分支删除
git branch -d name
分支切换
git checkout name
指向该分支
git checkout-b name
切换到name分支,若不存在则创建并指向该分支
git checkout -b branch1 branch2
把b2 checkout 到 b1并指向b1,若b1不存在则创建它,-b表示branch
分支管理策略
master分支始终为最稳定的分支
dev分支为不稳定分支,在这个分支上进行开发
分支融合
git merge/rebase 分支名
合并分支到当前分支
merge撤销
git revert
git 融合冲突解决
git会在冲突的文件中标示出冲突部分,然后只需要自己手动修改冲突并再次add并commit即可Git
git用标记出不同分支的内容
0 条评论
回复 删除
下一页