一、实操常用命令
知识铺垫
1.Git三种状态和工作模式
状态 | 描述 |
---|---|
已提交 | 已经提交表示数据已经安全保存在本地数据库中 |
已修改 | 已经修改,但是没有保存到数据库中 |
已暂存 | 已暂存表示对一个已经修改文件的当前版本做了标记,使之包含在下次提交的快照中 |
分类 | 描述 |
---|---|
工作区 | 自己在本地看到的目录,也就是指当前本地目录 |
暂存区 | Git的版本库中存放了很多东西,最重要的就是称作stage(或者叫index)的暂存区,还有Git自动创建的第一个分支master,以及指向master的一个指针叫做HEAD |
Git仓库 | 工作区有一个隐藏目录git,这个并不算工作区,而是Git的版本库 |
git流程描述
- 1.在工作区需改某些文件
- 2.对修改后的文件进行快照,添加到暂存区
- 3.提交更新转入到git仓库中
2.创建版本库并且提交文件常用命令
提交文件
1、git add . (点不能少,代表当前目录下的全部文件)
2、git status ----查看当前改动的文件信息
3、git commit -m "提交的信息备注"
4、git push --------提交代码到当前分支默认是master
文件修改
//查看当前修改文件与修改之前区别
git diff HEAD -- 22.txt
退出追踪(移除暂存区的内容)
git restore --staged 22.txt
//取消上一次操作
git reset HEAD 22.txt
版本记录
//版本记录
git log
//查看详细版本记录
git log --pretty=oneline
//全部提交记录,不因为回退版本删除日志
git reflog
版本回退
//回退上一个版本
git reset --hard HEAD^
//回退两个版本
git reset --hard HEAD^ ^
//直接回退两个版本
git reset --hard~2
//复制文本唯一标识,保证前几位唯一
git reset --hard 回退版本唯一标识
查看当前本地git文件
git ls-files
本地分支
查看分支
//带星号是当前所在分支
git branch
在master基础下,创建分支
//git checkout -b 分支名
git checkout -b keke
切换分支
git cheakout keke
//创建并切换到新建分支
git checkout -b 新分支名字
删除指定分支
git branch -d 分支名
//强制删除本地分支
git branch -D 分支名
合并分支
//要切换到主干分支再去合并分支
git merge 分支名
重命名分支
//如果new名字分支已经存在,就需要-M强制重命名,否则使用-m进行重命名
git branch -m|-M oldbranch newbranch
远程分支
查看本地分支与远程分支
git branch -a
推送本地分支到远程分支
git push origin 本地分支名字
删除远程分支,本地分支还保留
git push origin :移除的远程分支名
拉取远程指定分支并在本地创建分支
git checkout -b 本地分支名称 origin/remote_branch
创建新分支,并提交远程仓库
git checkout -b 分支名
git add .
git commit -m "备注"
git push -u origin 分支名
//远程已有分支(并将所有操作提交到暂存区之后已经git add /git commit操作之后)
git push
获取远程仓库的最新状态
git fetch
分支冲突(合并时主干和分支中属于同一个文件,同一行但是内容不一样)
//解决是以master为准,还是分支为准,具体情况具体解决
拉取远程最新代码
//推送之前先拉取最新代码
git pull
步骤一:登录githHub
gitHub网页多数可能下会被浏览器拦截,首先检查是不是浏览器安全权限给的不够,再去检查本地防火墙是否关闭。如果上述都没有问题。找到代理服务
取消勾选,酱紫基本是没有问题了
步骤二:新建一个远程仓库
在gitHub中新建一个远程仓库之前检查是否填写好ssh密钥
如果没有密钥,需要在git下输入
//换成自己的注册邮箱
ssh-keygen -t rsa -C "3208230974@qq.com"
找到文件夹下的该公钥文件,用记事本打开,粘贴到gitHub下面,注意要把最后的空格删掉噢
检查自己的配置项,配置的是否是当前公钥,保证远程仓库密钥和本地绑定一致
在没有其它绑定gitHub账号前提下,也可以输入进行绑定
ssh-add ~/.ssh/id_rsa
检查是否关联成功
$ ssh -T git@github.com
步骤三:绑定远程仓库
- 创建本地文件夹
- 初始化git,输入
git init
- 添加文件夹
git add git.text
- 存储到缓存区
git commit -m "修改样式"
- 上传远程仓库
二.Git实用命令
stash可将未提交的修改保存至堆栈中,不会产生多余的commit
git add . # 把文件加到版本控制里
git stash push [-m "说明"] # 紧急离开一下,暂时保存当前修改
查看暂存
git stash list # 查看记录
git stash show [stash@{index}] # 查看stash修改列表
git stash show -p [stash@{index}] # 查看stash修改详情
弹出暂存
git stash pop [stash@{index}] # 弹出某次Stash
git stash apply [stash@{index}] # 拷贝某次Stash
删除暂存
git stash drop [stash@{index}] # 删除某次Stash
git stash clear # 删除全部Stash
有时候我们在用git提交代码之后,突然发现有些细节的小问题,需要修改并再次提交,但是这次的提交又没有必要作为一个单独的commit,也不想让领导看到这多次的提交,从而觉得这开发太不认真,这时候就需要使用git命令把多次的commit合并成一个commit。
git rebase -i 命令可以用于合并很久之前的提交(commit)。
当您使用 git rebase -i 命令打开交互式变基编辑器界面后,您可以选择要进行操作的提交记录,并对它们进行编辑。通过将多个连续的 pick 操作行合并为一个,您可以合并这些提交记录。
在编辑器中,将要合并的提交记录行的 pick 命令修改为 squash 或 fixup,保存并关闭编辑器。使用 squash 会将选择的提交与其前面的提交合并为一个新的提交,并且还会允许您编辑合并后的提交消息。而使用 fixup 则会将选择的提交与其前面的提交合并,但保留前面的提交消息。
请注意,在合并较早的提交时,可能会出现冲突,需要手动解决冲突并完成合并过程。确保在进行任何修改之前备份代码或创建一个分支,以防止意外情况发生。
总结来说,通过在交互式变基编辑器界面中修改操作行,您可以使用 git rebase -i 命令合并很久之前的提交记录
git rebase -i 8cab8
git rebase --quit