目录
情况1:分支是新拉取的或者是分支是刚提了mr的需要这样上线(即之前没有未合并的commit)
情况3:上传commit ,提了合并请求后,发现只有一条commit。那么可以直接提醒mt进行上线
【拉取代码】
- 新建一个空白文件夹,用于存放拉取的代码
- 配置git环境:右键新建的文件夹,选择git bash,输入指令初始化git文件
指令 | 作用 |
---|---|
git init | 初始化git环境 |
git remote add origin 项目地址 | 与远程项目建立链接 |
git fetch origin 远程分支 | 拉取远程分支到本地 |
git checkout -b 本地分支名 origin/远程分支名 | 建立本地分支并切换到该分支 |
git push -u origin 分支名 | 与新建的远程分支相关联 |
到此为止已经拉取好远程的代码到本地,然后就是开始修改代码。
【上线代码】
-
情况1:分支是新拉取的或者是分支是刚提了mr的需要这样上线(即之前没有未合并的commit)
指令 | 作用 |
---|---|
git add . | 将文件添加到暂存区(注意这一步可以在执行后,如果发现代码哪里还要再修改,可以再git commit之前再次发送这条指令) |
git commit -m 'xxxxxx' | 将暂存区的代码提交到本地仓库,引号内添加相关注释,要简洁明了 |
git branch 主分支 | 切换到主分支 |
git pull | 将主分支代码拉到最新 |
git branch 本地分支 | 切换到本地分支 |
git rebase 主分支 | 如果存在冲突,则解决冲突;若没有冲突,则继续进行后续操作 |
git push git push origin HEAD:远程自己的分支 | 将本地分支推送到线上仓库; 如果本地分支未和远程自己的分支关联则执行这条指令(注意冒号不要丢了) |
rebase 时出现冲突:在发生冲突的文件处选择保留之前的修改还是现在的修改,解决完成冲突之后执行下述指令。
指令 | 作用 |
---|---|
git rebase --continue | 解决完冲突之后,继续rebase |
git rebase --about | 如果解决冲突出现问题,想取消变基则执行这个(需要慎重,这个操作会回到未执行git rebase 主分支指令时,不会保留之前已解决的冲突) |
git push -f git push -f origin 远程自己的分支名称 | continue变基之后,强制提交 如果本地分支未和远程自己的分支关联则执行这条指令 |
-
情况2:分支上已经存在未mr的commit的需要这样上线
指令 | 作用 |
---|---|
git add . | 将文件添加到暂存区(注意这一步可以在执行后,如果发现代码哪里还要再修改,可以再git commit之前再次发送这条指令) |
git commit -m 'xxxxxx' | 将暂存区的代码提交到本地仓库,引号内添加相关注释,要简洁明了 |
git branch 主分支 | 切换到主分支 |
git pull | 将主分支代码拉到最新 |
git branch 本地分支 | 切换到本地分支 |
git push git push origin HEAD:远程自己的分支 | 将本地分支推送到线上仓库; 如果本地分支未和远程自己的分支关联则执行这条指令(注意冒号不要丢了) |
-
情况3:上传commit ,提了合并请求后,发现只有一条commit。那么可以直接提醒mt进行上线
-
情况4:上传了多条commit,准备提mr进行上线,需要进行commit压缩(前提是该分支的commit显示正常:比如说你提交了3次commit,但是gannt的网站上显示了多于3个的commit,这就属于不正常情况)
指令 | 作用 |
---|---|
git log | 以防万一,可以通过该指令查看你的commit日志(可能与项目网站上显示的不一样) |
git rebase -i HEAD~commit的数量 | 打开Vim命令界面; 输入a:进入编写页面,把需要合并的pick改成s(一般第一个是最早提交的commit,保留pick,将后续的commit均改为s即可); 输入esc:退出编辑状态; 输入shift+: :开始输入指令; 然后输入wq+回车:将编辑内容保存; 弹出所有commit 的备注信息,留下最重要的 ,其他都注释掉’#’; 如果存在冲突,就解决冲突(具体参见情况1中rebase 时出现冲突) |
git rebase 主分支 | 变基 |
git push -f | 强制提交,必须+”-f“。 |
commit压缩不正常情况:建议不压缩直接提mr进行合并。
解决:找到上次合并到主分支的id标号,将之前的分支上的commit全部压缩,以vim命令窗口的数量为准,有冲突的解决冲突后压缩(这种现象主要是因为之前的commit操作可能做了其他的操作导致的,比如你rebase了一下)
合并commit时发现commit时间顺序不对:
因为提交的历史记录存在混乱或者被重置造成的,可能发生在合并分支、变基操作或强制推送等操作后,改变提交历史记录的顺序和数量。
使用交互式变基进行提交重排:运行 git rebase -i <base> 命令,其中 <base> 是你想要重新基于的提交的父提交。通过交互式地重新基于提交,你可以重新排列提交历史记录,确保最早的提交在最前面。
完成变基:在交互式变基的编辑模式中,重新排列提交历史记录以将最早的提交放在最前面。保存并关闭编辑器后,Git 将会重新应用提交,按照你设置的顺序进行提交。然后解决冲突,合并分支,合并commit。
【上线注意】
如果需要rabase,先切换到本地主分支git pull(确保这期间有人更改的代码也合了进来),然后再切回到自己的分支进行rabase。
远程仓库代码合并(merge)时要注意:填写AB分支,取消勾选删除分支的选项。
测试服自测没问题了再上线。
【只看常用命令】
git show | 查看上次增加的commit |
git reset --soft HEAD~1 | 撤回上一次的commit |
git pull | 用于从远程仓库中获取数据并尝试合并到当前分支 |
git pull origin 远程分支 本地分支 | 拉取最新代码到本地分支 |
git checkout 本地分支 | 切换到本地分支 |
git merge 本地分支 | 这个命令将本地的分支合并到当前所在的分支中 |
git add . | 将修改后的本地分支的代码提交到暂存区 存在着换行符的格式问题。一般不是问题所在。 |
git commit -m 'xxxxxx' | 将暂存区的代码提交到本地仓库,引号内添加相关注释,要简洁明了。 |
git rebase 远程分支 | 如果存在冲突,则解决冲突;若没有冲突,则继续进行后续操作。 |
git push | 在当前分支将当前本地分支的代码提交到远程分支,并查看流水提交。 |
git reset --soft HEAD^ git push -f | 提交回滚 |
【问题解决】
问题 | 原因 |
---|---|
fatal: not a git repository (or any of the parent directories): .git | 不包含 Git 仓库 |
PS 本地目录 Please make sure you have the correct access rights | 无法找到远程仓库 |
——git init ——Reinitialized existing Git repository in 本地目录 | 这个信息表明本目录下重新初始化了一个已存在的 Git 仓库。Git 仓库初始化是指在一个目录中创建一个新的 Git 仓库或重新初始化一个已存在的仓库。 |
git checkout 本地分支 error: pathspec 'opt-wangcy01' did not match any file(s) known to git | 这个错误通常表示 Git 未能找到与指定路径或分支名匹配的文件或分支 |