一、GIT
1.git是一个开源的分布式版本控制系统,用于高效的管理大小项目和文件。
2.什么是代码管理工具
*防止代码丢失,做备份
*代码的版本管控,通过设置节点在多个版本间切换
*建立分支,各自开发,互不影响,方便合并
3.git特点
*git开源的,多在linux或unix下使用,可以管理各种文件。
*git是分布式的管理工具(svn是集中式)
*git每台柱及都有完整代码,数据安全,分享速度快
*got拥有更好的分支支持,方便多人协同工作
4.git使用
1.概念:
【1】工作区:项目所在的操作目录,项目操作的区域
【2】暂存区:用于记录工作取得工作(修改)内容
【3】仓库区:用于将记录的工作内容备份
【4】远程仓库:远程主机上的GIT仓库
2.git的初始化配置
命令:git config
【1】配置系统所有用户
git config --system [选项]
配置文件位置:/etc/gitconfig
【2】配置当前用户:git config --global [选项]
配置文件:~/.gitconfig
【3】配置当前项目:git config [选项]
配置文件:项目目录/.git/config
*要求必须在项目目录下执行
配置用户名
e.g. 配置用户名为Elias
sudo git config --system user.name Elias
查看相关配置文件
cat /etc/gitconfig
配置邮箱
git config --global user.email [email protected]
查看相关配置文件
cat ~/.gitconfig
初始化空的Git仓库
git init
配置编译器
为当前项目配置编译器
git config core.editor vscode
查看相关配置文件
cat .git/config
查看项目配置信息
git config --list
3.git基本操作
【1】初始化仓库:git init
将某个项目目录变为git操作目录,生成git本地仓库,该墓即可使用git进行管理
【2】查看分支状态:git status
说明:初始默认工作分支为master,当工作区和仓库不一致时,会有相应的提示信息。
【3】将工作区内容记录到暂存区:git add [files]
e.g. 将file1 file2 提交
git add file1 file2
e.g.提交当前目录下所有文件
git add *
【4】取消文件暂存记录
git rm --cached [file]
【5】将文件同步到本地仓库区L
git commit -m [message]
说明:每次同步都需要添加一定的同步信息,commit操作只能同步暂存区已经记录的内容。
【6】查看commit日志
git log
git log --pretty = oneline
【7】文件比较:git diff [file]
说明:用于比较工作区文件和仓库文件差异
【8】放弃工作区修改
git checkout -- [file]
【9】从仓库恢复文件:
git checkout [file]
【10】移动或删除文件并提交暂存
git mv [file] [path] 移动文件
git rm [file] 删除文件
5.版本控制命令
【1】退回到上一个commit节点:
git reset --hard HEAD^
说明:HEAD是commit指针,一个^表示后退一个commit。
【2】去往指定的conit操作节点:
git reset --hard [commit_id]
【3】查看全部历史操作:git relog
说明:利用改操作可以使用reset去往任意历史位置
【4】标签创建:
git tag [标签名称] -m [message]
标签:在工作的重要位置添加的快照,保存当时的工作状态,一般用于版本迭代。
注意:标签的message信息可以不写,但是最好添加
git tag 查看历史标签
将标签添加到指定的commit_id:
git tag [名称] [commit_id] -m [message]
【5】查看标签
git tag 查看标签列表
git show [tag_name] 查看标签具体信息
【6】去往某个标签节点:
git reset --hard [tag]
【7】删除标签:
git tag -d [tag]
6.临时工作区
【1】创建临时保存工作区:git stash
将工作区未提交的修改封存,让工作区回到修改前状态
【2】查看临时工作区列表:git stash list
说明:最新的工作区记录为stash{0}依次排列
【3】应用某个临时工作区:
git stash apply [stash]
【4】git stash drop stash@{0}
git stash clear
7.分支管理
1.分支即每个人在原有的代码基础上建立自己的工作环境,单独开发,不会干扰其他分支操作,完成开发后再统一合并到主线中。
2.多人开发建立分支优点:安全,不影响其分支,独立控制进度。
3.分支操作命令
【1】查看分支情况:git branch
说明:前面带*的表是当前正在工作分支
【2】创建新的分支:git branch [branch_name]
说明:基于某个分支创建新分支的时候原分支最好是干净的。
【3】切换工作分支:git checkout [branch_name]
【4】创建并切换到新创建的分支: git checkout -b [branch_name]
【5】合并分支:git merge [branch]
表示将某个基于当前分支建立的分支合并过来
注意:
1.表示将某个基于当前分支建立的分支合并过来
2.在合并分支过程中可能产生冲突,五要手动解决
3.在分支操作中尽量添加新的模块,不要修改原代码内容
【6】删除分支:git branch -d [branch]
注意:没有被合并的分支不能使用该命令删除
二、远程仓库
1.什么是远程仓库:远程主机上的git仓库。实际上git是分布式结构,每台主机上git仓库结构相似,只是其他主机上的git仓库成为远程仓库
2.共享仓库:git分布式结构衍生了很多工作模式,共享仓库是其中比较常用的模式之一。普通隐藏.git仓库不能被其他主机获取代码,共享仓库即可以将git项目共享的仓库。
3.创建自己的共享库
【1】选择共享库目录,设置目录属主。
mkdir gitrepo
chown elias:elias gitrepo
【2】初始化该目录为git仓库,设置bare属性
cd gitrepo/
git init --bare elias.git
注:tedu为共享项目名称,.git为习惯后缀
【3】将配置git目录设置为和共享仓库目录相同的属主。
chown -R elias:elias elias.git/
4.添加项目到共享仓库
【1】创建共享仓库连接:
git remote add origin [email protected]:/home/elias/git_repo/elias.git/
git remote add 对远程主机称呼 远程主机用户名@远程主机IP:远程仓库目录
git remote rm origin 删除名称为origin的远程主机连接
*该操作要在本地的一个git项目中执行
*与远程主机连接默认使用SSH方法
*origin是给远程主机起的名字
【2】删除远程主机:git remote rm [origin]
注意:连接多个远程主机时,远程主机名不能重复
【3】将本地分支推送到远程共享仓库
git push -u origin master
git push -u 远程主及名称 本地分支名称
*-u 表示建立对应分支自动关联,一般首次向远程推送某个分支时使用
*git branch -a 可以查看链接的远程分支
*git push 推送已经连接的分支更改
*git push origin:[branch] 可以删除远程分支
【4】获取远程仓库项目
git clone 远程主机用户名@远程ip:远程仓库目录
注意:通过clone获取的远程项目到本地直接就是一个git本地仓库
git pull 远程主机名 分支名称
拉取远程仓库分支并和本地分支合并
【5】从远程仓库获取最新代码:git pull 拉取最新的代码
注意:clone后本地项目与远程已经建立关联,pull可以直接拉取代码到对应分支。
【6】从远程获取最新内容到本地:git fetch
注意:pull是直接将远程分支内容拉取到本地,并和当前工作分支进行合并;fetch是将远程分支内容拉取到本地显示的对应远程分支中,如果项和当前分支合并需要再进行merge操作。
*git fetch origin master:tmp 将远程master分支拉取到本地的新建分支tmp中
【7】推送其它内容:
推送标签:git push origin [tag]
推送版本落后于远程版本时:git push --force origin