Git简单了解
一、控制系统
分布式版本控制系统 git
集中式版本控制系统 svn cvs
二、安装Git
sudo apt install git
sudo apt search git
三、配置git环境
参数:--globle :长命令表示配置整个git环境
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
四、创建本地仓库
本地仓: git init //master
完整流程:
mkdir test //创建空目录
cd test //进入目录
git init //初始化当前仓库
初始化后会生成git的配置文件目录,需要通过ls -ah查看隐藏目录
/home/stephenzhou/test/.git
五、新建文件添加到本地仓库
touch test.c //新建文件test.c
git add test.c // 将文件添加到缓存区
git commit -m " add test.c" // 提交到本地仓
git commit -m 中的-m 命令用来简写我们描述的信息"add test.c"
该命令会生成40位的哈希值,用于作为id。
六、改写提交:
git add test.c
git commit -m "add new file 'test.c'"
git commit --amend //重写上一次的提交信息
i 命令进入编辑
ctrl + o: 完成修改后按下
七、查看历史提交日志
git log
git log --pretty=oneline //简介输出日志信息
八、回滚代码仓库
git reset --hard^ //退回到当前仓的上一个版本
git reset --hard~3 //退回到当前仓的前三个版本
git reset --soft //将头指针恢复, 缓存区和工作区内容不变化
git reset --mixed //将头恢复掉,缓存区内容丢失,工作区内容不变
git reset --hard //一切全都恢复,头、缓存区消失,代码恢复到以前的状态
九、查看当前仓库状态
git status //查看提交之后文件是否做了改动
十、修改缓存区内容
git add --all //将所有改动文件添加到缓存区,包括删除的文件
git add . //同 git add --all ,但不会记录删除操作。
操作完成后需要git commit提交代码到本地仓
十一、将文件撤回到最近一次修改的状态
git checkout --file //checkout:切换参数,通常用来切换分支仓库
十二、查看单个文件可回滚版本:
git log filename
git log min.c
git reset Id min.c
git add min.c
git commit -m "new"
十三、删除文件
rm a.c
git add -a
git commit -m "rm a.c"
或
git rm a.cd
git commit -m "rm a.c"
十四、查看提交历史
git reflog //查看当前版本库的提交历史
十五、Git 基本组成框架
Workspace:开发之者工作区
Index/Stage:暂存组/缓存区
Repository: 仓库区(本地仓库)
remote:远程仓库
十六、git rm 后恢复文件
git rm 会将文件放入缓存区,且没有使用commit提交的情况下
git rm d.c //删除一个文件
git reset //重置缓存区
git checkout d.c //将文件取消操作
十七、创建分支
git checkout -b dev //创建分支,创建完成后自动切换
git branch //查看当前分支(HEAD的指向)
其中
git checkout -b dev
等价于
git branch dev //创建分支,但不会切换分支
git checkout dev //切换分支
git checkout master
十八、合并分支
git checkout master //切换到需要合并的分支上master
git merge dev //合并dev分支到master仓
十九、查看分支
git branch -a //查看当前所有分支
二十、删除分支
git branch -D branchname //删除本地分支
git push origin --delete remotename //删除远程分支
二十一、github将本地仓库关联到远程仓库
git remote add origin orginLink
git push -u origin master //推送到远程,
其中 -u 第一次提交加上即可,后面可以不用添加,只有合并记录,没有历史记录,也不能切换分支
二十二、将远程仓库关联到本地和拉去指定分支、切换远程分支
git clone 分支链接
git clone -b master //可以用来指定分支
二十三、github 提交本地仓库到远程仓库
git add //提交到缓存区
git commit -m //提交到本地仓库
git push origin master //推送到远程仓库
二十四、修改分支名称
git branch -m 分支名 新的分支名
二十五、保存当前工作分支
git stash //保存当前工作状态
git stash list //查看当前存储了多少工作状态
git checkout main //切换到其他分支
git stash pop //切回刚才的分支,刚刚的分支中状态恢复
git stash apply //删除列表中的内容默认恢复第一个
git stash apply list名称 //恢复到指定的内容
git stash drap list名称 //移除指定的内容
git stash clear //移除所有list
git stash show //查看栈中最新保存的shash与当前目录的差异
二十六、将别的分支修改转移到自己的分支
git cherry-pick 分支名 //会将master改动的代码合并到我们分支
二十七、远程删除分治后本地git branch -a 依然看得到的问题
git remote show origin //查看远程仓库信息
git remote prune origin //刷新本地分支仓库
二十八、强制合并分支
git merge master --allow-unrelated-histories
二十九、拉取远程所有分支
git fetch //拉取全部分支
git fetch XXX //XXX分支名称,拉去指定分支
三十、子模块管理
git submodule add link //添加子模块
git submodule update //子模块需要手动执行命令进行更新
三十一 git 其他命令
git branch -D //强制删除分支
git diff //查看不同分支差异
git remote -V //查看当前仓库名称
git log --graph --pretty=oneline --abbrev-commit //查看日志
git switch -b //切换分支与新增分支
git switch -c //切换新分支
git restore file //撤销文件的提交与修改
三十二、搭建本地git服务器
sudo apt install git //在debian/linux下使用此命令
git adduser git //仙剑一个用户专门管理git服务的账户
su git //切换到目录下
ssh-keygen -t rsa -C "你的邮箱" //配置好sshkey,生成.ss目录
touch authorized_keys //.ssh目录里查看没有则创建
sudo git init --bare txt.git //创建一个git仓库
vim etc/sudoers //进入权限目录
git ALL=(ALL:ALL)ALL //修改权限
sudo chown -R git:git txt.git //修改所熟组
vim /etc/passwd //安全考虑,禁止ssh登录
找到git: x:1001:1001;,:/home/git:/bin/bash
改为git: x:1001:1001;,:/home/git:/bin/git-shell
sudo apt install openssh-server //服务器安装ssh服务,git环境命令