1. Git
Git是分布式的版本管理系统,每台机器都可以基于远程中心服务器拥有自己的版本。Git基本操作如如下:
1.1 Git 配置用户名和邮箱
# 配置用户名
git config --global usr.name "Magicboom"
# 配置邮箱
git config --global usr.email "Luke-Liu2020@qq.com"
# 显示所有的配置
git config --list
#显示单个配置
git config usr.name
# 查看git 帮助
git help
1.2 Git init 项目初始化
# 在当前文件夹下面出初始化一个git项目(生成隐藏的.git文件)
git init
# 生成一个文件夹,并初始化一个git项目(生成隐藏的.git文件)
git init [filename]
example:git init myproject
# 生成一个myproject文件夹,里面有隐藏的.git文件
# 使用
ls -la 查看文件,包括隐藏的
1.2 .1git status查看当前状态,git diff 查看文件变化,git add 实现文件追踪
#查看当前状态,看是否 add, 或者文件是否有变化
git status
#文件追踪
# add filename的文件
git add [filename] eg: git add index.html
# add 添加所有
git add .
# 更改文件后,可以通过git diff 查看文件变化
git diff [filename]
git diff
# 如果更改的文件已经add,可以通过
git diff --staged 来查看
1.2.2 git checkout文件修改操作撤回,以及文件追踪操作git add的撤回
# 在 git add之前,复原修改的文件
git checkout --[filename]
# 去除add 操作
git rm -r --cached
# 在git add之后,撤回对filename前一步操作,即撤回git add
git reset HEAD [filename]
1.3 git commit操作
# 执行后需要用vim 编辑
git commit
# m 后面加commit的名称
git commit -m
eg: git commit -m commit1
# add和commit 一起做,前提,没有新文件,而只是修改了已有的文件
git commit -am
eg: git commit -am commit2
1.4 git log查看操作日志
# git log默认会输出commit hash, author, date, commit message
git log
# -p:控制输出每个commit具体修改的内容,输出的形式以diff的形式给出
git log -p
#加--author用来过滤commit,限定输出给定的用户
git log --aurthor
#这个命令简化git log的默认的输出,仅仅输出commit hash 前7个字符串和commit message.
git log --oneline
#这个命令git log以图的方式输出.
git log --graph
#我们可以用–pretty来自定义输出的信息
git log --pretty=online
git log --pretty=format
1.5 .gitignore 实现特定文件的忽略
touch .gitignore
mkdir node_modules
在 .gitignore里面一行一个 忽略的文件,不会被add,也不会被commit
eg
filename
*.zip
*.txt
*.exe
1.5 Git 版本回退或是回到旧版本(错误commit之后的操作)
1.5.1 版本回退,会删除回退版本后的所有版本
1.5.2 回到旧版本,重新commit,保留错误commit版本
# 查看想要回复分旧版本的hash 值
git log --oneline
# 回复旧版本(对应的hash值)的某个文件
git checkout [hash] -- filename
# 回复旧版本的所有文件
git checkout [hash] -- .
# 提交
git commit -m
1.6 建立. 删除和切换分支 git branch
在一个分支中需要做到working tree clean之后再去切换到其他分支,这样可以保证版本的一致性。
# 查看目前都要哪些分支 *代表都有哪些分支
git branch
# 建立一个分支
git branch [name]
#切换分支
git checkout [branch name]
# 建立分支,并且切换到改分支
git checkout -b [branch name]
# 需要在其他分支下,删除一个分支, 已经merge了
git branch -d [branch name]
#需要在其他分支下,强行删除一个分支, 还没有merge
git branch -D [branch name]
1.7 分支的合并 git merge
# 例如在master下面,合并分支 branchname
git merge [branchname]
1.8 git merge合并时候的冲突解决
# 首先使用git status查看当前的状态
git status
# 忽略本次合并,回到合并前的状态
git merge --abort
# 如果要解决冲突,需要找到冲突的地方,然后将其中一个保存至一致的状态,或者保存2者
然后使用git add.
然后使用 git commit
使用vim 写入解决方案
1.9 使用命令查看版本线图
# 查看当前分支的版本线图
git log --oneline --graph
# 查看所有分支的版本线图
git log --oneline --graph --all
1.9.1更多的合并的方法(非快转机制等等)
# 不使用快转机制的merge, 显示合并分支的所有版本号
git merge [branchname] --no -ff
# 前行回到最初状态 什么都没有合并
git reset --hard ORIG_HEAD
# 合并成功,但是没有commit。 一般用于merge之后测试时候合并完有效果,没问题之后再进行commit
git merge[branchname] --no --ff --no-commit
#然后使用
git commit
# 合并一个分支, 将合并分支的许多版本号改为一个版本。相当于压缩了这个分支
git merge --squash [branchname]
1.10 批量查看分支的状态以及批量的删除特定分支,以及批量的合并特定分支
# 查看已经合并的分支
git branch --merged
# 查看所有没有合并的分支
git branch --no-merged
批量删除特定分支
删除已经合并的分支
2 Git with Github操作
2.1 将本地项目上传到github仓库
2.1.1 本地项目没有git仓库,如何上传到github?
Step1 首先在Github创建一个repository,然后获取.git网址
例如: https://github.com/Magicboomliu/OpenCV_CPP.git
Step2 分别执行以下操作:
git init
git add .
git commit -m first commit
git remote add orgin https://github.com/Magicboomliu/OpenCV_CPP.git
git push -u origin master
2.1.2本地已经有了git仓库,如何上传到github?
Step1 首先在Github创建一个repository,然后获取.git网址
例如: https://github.com/Magicboomliu/OpenCV_CPP.git
Step2 分别执行以下操作:
git remote add origin https://github.com/Magicboomliu/OpenCV_CPP.git
git push -u origin master
2.1.3 清除本地和远程仓库的remote?
# 连接远程仓库
git remote add origin https://github.com/Magicboomliu/OpenCV_CPP.git
# 查看当前连接的仓库
git remote
# 取消与远程仓库的连接
git remote remove [respostry name]
2.2 Github.io主仓库可以作为服务器使用
2.3 获取远端仓库 git clone
默认checkout到master
no checkout 需要checkout到自己想要的仓库
bare只是克隆仓库信息(.git文件夹),不克隆具体的code