1、git环境配置与安装
1、设置用户信息
git config --global user.name "username"
git config --global user.email "email"
2、打开用户目录,创建.bashrc文件
touch ~/.bashrc
3、在.bashrc里面输入以下内容,相当于给指令取别名
# 用于输出git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
# 用于输出当前目录所有文件以及基本信息
alias ll='ls -al'
4、解决gitBash乱码的问题(输入汉字的时候,新版已解决)
1、打开GitBash执行以下指令
git config --global core.quotepath false
2、在${git_home}/etc/bash.bashrc 文件最后加入下面两行, ({git_home}:git的安装目录)
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
5、如果一些文件不需要git版本控制管理,通过以下方式
1、touch .gitignore
2、vi .gitignore : 编辑文件
3、*.txt : 输入后表示所有以 txt 文件结尾的不需要管理
2、获取本地仓库/Linux常用指令
1、git init : 初始化当前目录为一个git仓库
2、ll : 初始化当前目录后会多出一个.git 的文件夹
3、touch <file> : 在当前目录创建一个文件
4、cat <file> : 查看当前目录的一个文件
5、vi <file> : 打开编辑器,编辑一个文件
:wq -> 退出保存编辑
6、clear : 清空屏幕文字
7、rm <file | dir> : 删除文件
8、mv <file | dir> <file | dir> : 修改文件名称
9、mkdir <dirName> : 创建文件夹
3、git常用指令
git工作目录下对于文件的修改(增加,删除,更新)会存在以下几种状态,这些
修改会随着我们执行git指令而发生变化
仓库(repository): 修改记录到仓库就成了一次提交记录
暂存区(index): 提交到仓库之前的缓存区(staged)
工作区(workspace): 未暂存(unstaged) 或者 未跟踪(untracked)
1、git add 文件名.文件类型 : (工作区 -> 暂存区)/或者使用通配符号 . 表示所有文件
2、git commit -m "这里写上注释,只是方便查看" : (暂存区 -> 本地仓库)
3、git status : 查看当前文件的状态
4、git log [option]: 可以查看提交记录,或者是提交到哪一个地方, 或者是看仓库里面有那些
options:
--all 显示所有分支
--pretty=oneline 将提交信息显示到一行
--abbrev-commit 使输出的commitid更加简短
--graph 以图的形式显示输出
5、git reset --hard commitID : 版本切换, 可以实现版本回退
commitID 可以使用 git-log 或 git log 指令查看
6、git reflog : 将所有的操作都记录下来,相当于就是一个记录历史记录的文件
4、git分支常用指令
版本控制系统都是以某种形式来支持分支的,使用分支意味着
可以把你的工作从主线程中分离出来进行重大的bug修改,开发新的功能,
以免影响主线程的开发,就是分离式开发,分支就像两个子文件夹;
例如现在有两个分支,一个分支名称为master,第二个分支名称为dev
那么当切换到master分支的时候是看不到dev分支下的文件的,即使打开
windows的git下文件的目录也不行,切换分支后,该目录下的相应的
文件也会发生变化,变为被切换的分支下的文件
1、查看本地分支
git branch
2、创建分支
git branch 分支名
3、*切换分支
git checkout 分支名
我们还可以创建并且直接切换到该分支
git checkout -b 分支名
4、*合并分支
HEAD -> 指向谁,表示当前就在哪一个分支
一个分支上的提交可以合并到另一个分支
git merge 分支名
5、删除分支,不能删除当前分支,只能删除其他分支
git branch -d
5、解决冲突
两个分支上对文件的修改可能会存在冲突,例如同时修改了
文件的同一行,这是需要手动解决冲突,方法如下:
1、处理文件中冲突的地方
2、将解决完冲突的文件放入暂存区(add)
3、提交到仓库 commit
6、分支使用流程
1、master 生产分支:线上分支
中小规模项目作为线上运行对应的分支
2、develop开发分支
开发新功能都需要在这个分支上开发,所有的代码都需要提交到该分支
这个分支是固定的不会删除的分支
7、远程仓库
前面我们已经知道了Git中存在两种类型的仓库,即本地仓库和远程仓库。那么我们如何搭建Git远程仓库呢?我们可以借
助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。
gitHub( 地址:https://github.com/ )是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一
的版本库格式进行托管,故名gitHub
码云(地址: https://gitee.com/ )是国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云
速度会更快
GitLab (地址: https://about.git1ab.com/ )是一个用于仓库管理系统的开源项目,使用Git作为代码管理工
具,并在此基础上搭建起来的web服务,一般用于在企业、学校等内部网络搭建git私服。
1、要想使用码云的相关服务,需要注册账号(地址:https://gitee.com/signup )
2、点击右上角头像旁边的+号,新建一个仓库,
3、创建号仓库后,会出现快速设置的界面,暂时不用管
4、ssh-keygen -t rsa, 执行命令,生成非对称密钥, 然后什么都不管,直接回车就行
5、查看公钥:cat ~/.ssh/id_rsa.pub
6、将公钥全部复制,然后回到浏览器,打开用户(鼠标放在右上角用户头像上),打开设置,找到ssh公钥,
然后将复制的公钥填入,标题不用管,会自动填充
7、验证是否成功,回到gitBash,输入以下指令
ssh -T git@gitee.com
然后就会提示你是第一次访问这个地方,输入 yes 就可以了
8、回到 快速设置的界面 ,然后复制远程仓库地址ssh origin表示给仓库起的名字,后面接的是仓库的地址
git remote add origin https://gitee.com/alextom/git_test.git
9、git remote : 可以查看有那些远程仓库
10、git push origin master : 将master分支里面的代码推送到origin仓库里面
第一次会要求输入码云的账号密码进行验证
git push origin master:master -> 将本地的master推送到远端也叫master分支
git push [-f] [--set-upstream] -> -f 表示强制force,
git push --set-upstream origin master:master -> 把本地的master修改,同时将两边的分支绑定,下次直接推送到那个分支
执行完上面的命令后,下次直接使用 git push 就可以了
11、git branch -vv -> 查看本地和远程的分支绑定[-vv]:显示详细信息
8、克隆clone
1、从远端将仓库拉到本地
git clone 克隆网址或其他地址 克隆后取的文件夹名称
例如: git clone https://www..... my_file
9、抓取和拉取
从远程仓库中抓取和拉取
远程分支和本地的分支一样,我们可以进行merge操作,只是需要先把远端仓库里的更新都下载到本地,再进行操
作。
抓取 命令:git fetch [remote name] [branch name]
抓取指令就是将仓库里的更新都抓取到本地,不会进行合并
如果不指定远端名称和分支名,则抓取所有分支。
拉取 命令: git pull [remote name] [branch name]
拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge
如果不指定远端名称和分支名,则抓取所有并更新当前分支。
10、解决合并冲突
在一段时间,A、B用户修改了同一个文件,且修改了同一行位置的代码,此时会发生合并冲突。
A用户在本地修改代码后优先推送到远程仓库,此时B用户在本地修订代码,提交到本地仓库后,也需要推送到远
程仓库,此时B用户晚于A用户,故需要先拉取远程仓库的提交,经过合并后才能推送到远端分支.
在B用户拉取代码时,因为A、B用户同一段时间修改了同一个文件的相同位置代码,故会发生合并冲突。
远程分支也是分支,所以合并时冲突的解决方式也和解决本地分支冲突相同相同.
11、本地生成rsa非对称密钥
alex@LAPTOP-3CQQO0QG MINGW64 ~/Desktop/test
// 进入公/私钥生成软件命令行
$ openssl.exe
// 生成私钥
OpenSSL> genrsa -out rsa_private_key.pem 2048
Generating RSA private key, 2048 bit long modulus (2 primes)
........+++++
....+++++
e is 65537 (0x010001)
// 生成公钥
OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
writing RSA key
// 退出公/私钥生成软件命令行
OpenSSL>exit