初识git
git是分布式版本控制系统,每个电脑上都可以有完整的项目,一个电脑崩溃了,可以直接在服务器上拉取,或者在同事电脑上拉取。缺点是占内存大。git是最好用的分布式版本控制系统
svn是集成式版本控制系统,一旦服务器崩溃,整个项目都没了。但是保密性强。
git工作原理:
首先了解git四个工作区
workspace:工作区,就是平时放项目代码的地方
Index/Stage:暂存区,就是临时存放你的变动,事实上,它只是一个文件,保存即将提交到文件列表信息
respository:仓库(或本地仓库),就是安全存放数据的位置。这里面有你提交到所有版本的数据
其中HEAD指向最新放入仓库的版本
remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
Index/Stage、respository不需要管,只需要用命令行工具去操作
四个工作区转换关系如下图
linux命令
windows下clear清屏是cls
rm -rf /不能在linux下使用,循环递归删除文件
reset重新加载终端,更clear差不多
git配置
环境变量配不配都没有关系,因为安装时就已经默认配置好,可以直接右键调用
git config -l 查看用户配置
git config --system --list 查看系统配置(安装目录下有一个git/etc/config文件,配置会保存在这里)
git config --global --list 查看用户全局配置(文件下,有一个.gitconfig,配置会保存在这里c盘users/cmq)
git config --global user.name "用户名"
git config --global user.email 邮箱
git命令
git文件状态
unstaged 修改的文件状态为“未暂存”,
untracked 新创建的文件状态为“未跟踪”
staged 添加到暂存区的文件状态为“已暂存”
可以使用git status命令查看文件状态
忽略管理
git项目目录下,新建.gitignore文件,其中列出忽略文件的模式
本地仓库基础指令
git init 初始化git项目,将生成一个隐藏.git目录
git add . 将所有文件到暂存区,也可以写多个文件名,如git add a.txt b.txt c.txt
git commit -m “提示内容”(将暂存区的所有内容,提交到本地仓库)
git log 查看本地现有的commit提交历史
git log --pretty=oneline --abbrev-commit --all --graph 这条命令查看历史记录更加简洁
git reset --hard commitID 回退到指定的commitID版本(鼠标选中加鼠标滚轮就是复制粘贴)
git reflog 可以查看已经被删除的提交记录
git show 查看最后一次提交的文件及内容,可以指定文件
git diff 在提交之前执行,查看被修改过的文件及内容
git checkout . 撤销没有被add的修改,可以指定文件
git stash 比如应该写在次分支上的代码,意外写在了主分支上,就用这个指令将现在的代码暂时挂到内存中,再切换到目标次分支上执行,git stash pop指令
git分支指令
git branch 查看所有分支
git branch 分支名 创建新分支
git checkout 分支名 切换分支
git checkout -b 分支名 创建并切换新分支
git branch -d 分支名删除分支(不能删除当前分支,若没有合并到其它分支时,尝试删除会失败,强制删除改用-D参数)
git merge 分支 (例如在master分支上执行git merge dev 表示将dev分支合并到master上。另外如果合并代码发生冲突,需要程序员手动解决冲突,再add commit后,就合并了)
远程仓库指令
注册gitee,完善个人信息(github服务器在国外,速度慢。gitlab需要部署,公司为了保密而使用)
配置SSH公钥后用 ssh-T git@gitee.com 验证一下
git remote add origin ssh地址 ssh在gitee上建立仓库后获取(origin是给远程仓库取的名字)
git remote 查看是否连上远程仓库
git push -f --set-upstream origin master 将本地仓库上推进远程仓库(-f表示,远程和本地推送的代码冲突时,用本地代码强制覆盖掉。--set-upstream表示建立本地分支和远程分支的关联)
git push origin master 等同于git push 远程仓库 本地分支:远程分支。建立关联后,可以直接写git push
git branch -vv 查看远程分支和本地分支的关联
git clone 远程仓库https url地址
git pull origin master 将远程仓库的最新的更新拉取到本地
git pull origin master --allow-unrelated-histories 远程仓库中有着本地仓库没有的文件的情况下使用
git merge origin master 将远程仓库的commit抓取到本地
当本地和远程发生冲突时,先执行pull在本地手动解决掉冲突,再add commit push