Git之实用操作指令、ssh与https地址之间的切换、本地仓库提交到远程仓库、合并或更新代码的步骤、设置免密码访问服务器、强制合并、基础知识、命令行
Git之实用操作指令、ssh与https地址之间的切换、本地仓库提交到远程仓库、合并或更新代码的步骤、设置免密码访问服务器、强制合并、基础知识、命令行
Git之实用操作指令、ssh与https地址之间的切换、本地仓库提交到远程仓库、合并或更新代码的步骤、设置免密码访问服务器、强制合并、基础知识、命令行
常用指令
比较分支
方法 检查内容 是否检查提交历史 是否快速 git diff branch1 branch2✅ 文件内容 ❌ 不检查历史 中等 git log branch1..branch2❌ 内容 ✅ 历史提交 中等 git rev-parse❌ 内容,检查同一提交 ✅ ✅ 非常快 git diff --quiet✅ 文件内容 ❌ ✅ 脚本化方便
克隆的那些事
命令 下载的历史 本地创建的当前分支 实际拉取内容理解 git clone repo.git所有分支历史 默认分支(main或master) 所有分支历史 + 默认分支 git clone -b dev repo.git所有分支历史 dev 所有分支历史 + dev 分支 git clone -b dev --single-branch repo.gitdev 分支历史 dev 只拉 dev 分支 git clone -b dev --single-branch --depth 1 repo.gitdev 最新提交 dev 只拉 dev 分支 + 最新提交
较全面
注释 指令 注释 指令 克隆仓库 git clone 地址克隆分支 git clone -b [branch_name] 地址– --克隆指定分支(节省体积) git clone -b <branch-name> --single-branch <repository-url>正常删除 git branch -d [branch_name]强制删除 git branch -D [branch_name]删除远程分支 git push origin --delete [branch_name]拉取本分支 git pull拉取指定分支 git pull origin [branch_name]拉取并创建分支 1 git remote update origin --prune推送到远程分支上 2 git push将分支推送到远程仓库 3 git push -u origin [branch_name]查看分支状态 git status查看本地所有分支 git branch合并本地分支 4 git merge [branch_name]创建本地分支 git branch [branch_name]创建并切换分支 git checkout -b [branch_name]切换本地分支 git checkout [branch_name]提交到暂存区 git add .提交到本地仓库 git commit -m '说明内容'查看版本 git --version配置邮箱 git config --global user.email 'xxx.com'配置用户名 git config --global user.name 'xx'查看配置信息 git config --list删除配置信息 5 git config --global --unset user.email初始化本地仓库 git init查看本分支的历史记录 6 git log所有记录在同一行显示 6 git log --oneline查看所有历史记录 git log --oneline --decorate --graph --all配置 git config --global alias.mjAllLog log --oneline --decorate --graph --all查看所有分支的最后一次提交 git branch -v组合指令 7 git commit -a -m "提交说明"存储 git stash查看存储 git stash list不携带参数启用存储 8 git stash apply携带参数启用存储 9 git stash apply [stash@{2}]简单删除存储 git stash drop [stash@{2}]启用并删除存储 git stash pop [stash@{2}]撤回工作区 git checkout -- <filename>查看暂存区 git ls-files -s查看暂存区对应文件的内容 10 git cat-file -p [对象名]撤回暂存版本 git reset HEAD <FILE>撤回暂存文件 git reset HEAD test.txt撤回提交 11 git commit --amend查看整个项目的所有历史操作 git reflog强制覆盖远程分支 12 git push origin [branchName] -f拉取远程所有的最新分支,并且自动创建本地分支 13 git remote update origin --prune退出Git的vim编辑器 14 . . .克隆分支 git remote add origin 地址克隆分支 git clone -b [branch_name] 地址在项目中配置单独的Git信息 git config user.name 'name'/git config user.email 'email'最新一次提交和上一次提交的比较 git diff HEAD^ HEAD在当前分支时重命名分支名 git branch -m [newName]不在当前分支时重命名分支名 git branch -m [oldName] [newName]
一份代码多分支同步
本地单分支通过 Git multi-refspec push,将同一 commit 同步推送至多个远程分支,实现多环境分支镜像更新。
一、本质原理(先讲清楚)
Git push 的语法是:
git push <remote> <本地分支>:<远程分支>
所以可以将本地 main 同时推到远程 dev、test、release
二、最直接的做法(推荐)
方法 1:一条命令推多个分支
git push origin main:main main:dev main:test main:releasegit push origin main:dev main:test main:release含义
本地 远程 main dev main test main release
方法 2:逐个 push(更安全)
git push origin main:dev git push origin main:test git push origin main:release更清晰
出错更容易定位
企业项目更常用
三、关键注意点(很重要)
可能会被拒绝(non-fast-forward)
如果远程分支你本地“新”,会报:rejected (non-fast-forward)
解决方式:git push -f origin main:dev
强制推送会覆盖远程历史,要谨慎
本质不是“同步分支”
不是绑定关系
不是自动同步
只是“复制提交内容”
更合理的场景
多环境部署(dev / test / prod)
临时同步代码
单仓多环境分支管理
长期维护的场景
用 CI/CD + 单主分支策略
或 Git Flow / GitHub Flow
四、更高级玩法(可选)
push 所有本地分支到远程(危险)
git push origin --all会把本地所有分支都推到远程
tag 一起推
git push origin --tags把本地所有标签(tags)一次性全部推送到远程仓库 origin
核心区别
命令 推送内容 git push origin --all所有分支(branches) git push origin --tags所有标签(tags)
本地重置远程仓库信息
1、查看远程仓库信息
git remote -v
2、查看远程仓库详细信息
git remote show origin
3、查看远程分支列表
git ls-remote
4、查看远程分支列表
git ls-remote --heads origin
5、查看当前分支跟踪的远程分支
git branch -v
6、删除现有的远程仓库
git remote remove origin
7、绑定添加远程仓库
git remote add origin https://gitee.com/your_username/your_repo.git
8、编辑/修改/更换远程仓库
git remote set-url origin https://gitee.com/new_username/new_repo.git
9、首次推送本地分支到远程仓库
git push -u origin you_branch
10、强行推送本地分支到远程分支
git push --force origin you_branch
合并或更新代码的步骤
假设目前有两个分支,分别是dev与mj01
假设现在处于mj01分支上
第一步:在本地mj01分支上推送代码到远程mj01分支中
第二步:在本地mj01分支上切换到本地dev分支上
第三步:在本地dev分支上拉取远程dev分支
第四步:如果本地dev分支与拉取的远程dev分支的代码有冲突,则解决冲突
第五步:在本地dev分支上推送代码到远程dev分支中
第六步:在本地dev分支上拉取远程mj01分支
第七步:如果本地的dev分支与拉取的远程mj01分支的代码有冲突,则解决冲突
第八步:在本地dev分支上推送代码到远程dev分支中
第九步:在本地dev分支上切换到本地mj01分支上
第十步:在本地mj01上拉取远程dev分支
本地仓库提交到远程仓库、强制合并分支、remote、checkout、reset、origin、init
本地初始化Git
git init在
git init之后最好往仓库加点内容。加好内容后git add .=>git commit -m '第一次推送至远程仓库'。
创建远程仓库
一定要创建空仓库,就是仓库里面什么都没有,也不要初始化。
链接远程仓库
git remote add origin https://gitee.com/mj/test-null.git
把本地仓库提交到远程仓库中
git push -u origin master这一步可能会不成功,原因是远程仓库不为空。
解决方法一
git push origin develop:master -f将
develop分支强制推送合并至master分支。
解决方法二
切换分支至master分支。git checkout master并将
master分支重置为develop。git reset --hard develop将重置后的
master分支强制推送更新。git push origin master --force相当于删除
master分支,test将其覆盖,并推送远程仓库。
ssh与https地址之间的切换、设置免密码访问服务器
1、查看当前属于什么地址的命令
git remote -v如果当前处于ssh状态下会输出一下内容。
origin git@gitee.com:mssj200224/open-resources.git (fetch) origin git@gitee.com:mssj200224/open-resources.git (push)如果当前处于https状态下会输出一下内容。
origin https://git@gitee.com:mssj200224/open-resources.git (fetch) origin https://git@gitee.com:mssj200224/open-resources.git (push)
2、从ssh切换至https
git remote set-url origin https://git@gitee.com:mssj200224/open-resources.git
origin后面是远程仓库的https地址。
3、从https切换至ssh
git remote set-url origin git@gitee.com:mssj200224/open-resources.git
origin后面是远程仓库ssh地址。
4、设置密码
默认15分钟
git config --global credential.helper cache
自己定义时间,一小时后失效
git config credential.helper 'cache --timeout=3600'
永久存储密码
git config --global credential.helper store
什么是版本控制?
版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。
为什么要使用版本控制?
●版本控制可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态。就算乱来一气把整个项目中的文件改的改删的删,照样可以轻松恢复到原先的样子。但额外增加的工作量却微乎其微。
●可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等。
集中化版本控制系统(SVN)
svn因为每次存的都是差异,需要的硬盘空间会相对的小一点,可是回滚的速度会很慢。
优点
代码存放在单一的服务器上,便于项目的管理。
缺点
服务器宕机 : 员工写的代码得不到保障。
服务器炸了 : 整个项目的历史记录都会丢失。
分布式版本控制系统(Git)
git每次存的都是项目的完整快照,需要的硬盘空间会相对大一点。Git团队对代码做了极致的压缩,最终需要的实际空间比svn多不了太多,可是Git的回滚速度极快。
优点
完全的分布式。
缺点
学习起来比SVN陡峭。
基础的Linux命令
清除屏幕
clear
往控制台输出信息,相当于JavaScript中的打印
echo 'testText'
创建文件
echo 'testText' > test.txt
touch test.txt
vim test.txt
将当前目录下的子文件&子目录平铺在控制台
ll
将对应目录下的子孙文件&子孙目录平铺在控制台
find ./
将对应目录下的文件平铺在控制台
find ./ -type f
find test -type f
删除文件
rm test.txt
重命名
mv file.txt test.txt
查看对应文件的内容
cat test.txt
打开编辑器
vim test.txt
操作步骤
●按i进插入模式,可对文件编辑
●按esc键进入命令行模式
●在命令行中首先按:
●:后面跟着对应的命令
命令
q!: 强制退出,且不保存wq: 保存退出set nu: 设置行号
Git目录解释
hooks: 目录包含客户端或服务端的钩子脚本info: 包含一个全局性排除文件logs: 保存日志信息objects: 目录存储所有数据内容refs: 目录存储指向数据的提交对象的指针(分支)config: 文件包含项目特有的配置选项description: 用来显示对仓库的描述信息HEAD: 文件指示目前被检出的分支index: 文件保存暂存区信息
-
↩︎拉取远程指定分支,并且在本地自动创建分支。
-
↩︎将本地的分支推送到远程分支上,确保远程仓库由此分支。
-
↩︎此操作会将本地分支推送到远程仓库中,并且会自动在远程仓库创建此分支。
此命令在一个分支上只能执行一次,多次操作会报错。
执行此命令的前提是远程仓库没有此分支,一开始此分支只存在本地仓库。 -
↩︎当本地有多个分支时,在自己分支上把其它本地分支合并到自己的分支上。
-
↩︎ -
↩︎ ↩︎在提交了若干更新,又或者克隆了某个项目之后,可以回顾提交历史。默认不用任何参数的话,
git log会按提交时间列出所有的更新,最近的更新排在最上面。 -
↩︎合并
git add .和git commit -m指令
此命令在使用之前一定要有git add .过一次才行。 -
↩︎默认会启用最近(最新)的存储。
-
↩︎这各参数可以通过
git stash list来获取,是个列表。 -
↩︎这里的对象名就是
git ls-files -s查询出来的值。 -
↩︎功能是重新写注释,都是重新提交一次,只不过错误的注释不再出现。此命令会进入注释编辑窗口,进入窗口后按
i进入编辑状态,改完注释后按esc后进输入命令窗口接着输入wq保存退,也可以q!不保存强制退出。 -
↩︎使用场景
回退后,重新push会报错,意思是当前版本低于远程版本,无法提交。此时可以使用此命令解决。 -
↩︎此操作会创建本地分支,分支能正常切换,但是执行
git branch没有发现有远程分支显示。 -
↩︎☺方式一
第一步
按Esc退回插入模式
第二步:q:退出编辑器:q!:强制退出且不保存:wq:保存后并退出:wq!:强制保存且后退出
☺☺方式二
按住Esc键不放,再按两次大写的Z。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐






所有评论(0)