git操作

49 阅读3分钟

问题一、如何remote origin 俩个代码仓库协同开发

  • 需求:有俩个代码仓库A仓库B, 仓库B···即能在仓库A代码基础上定制开发,又能同步仓库A上的更新代码···
  • 仓A基础上创建仓B,并在仓B上开发
  • 仓A有改动时,手动合并到库B,并且不影响库B的定制功能代码。

截屏2024-01-19 17.19.44.png

操作步骤如下

  1. 添加源分支url git remote add upstream 替换成源项目url
git remote add upstream 替换成源项目url
  1. 查看远程关联代码 git remote -v
git remote -v
  1. 从源分支获取最新的代码 git fetch upstream
git fetch upstream
  1. 合并本地分支和源分支,本地库和远程的github原仓库同步 git merge upstream/release-2.1.3-HT --allow-unrelated-histories
git merge upstream/release-2.1.3-HT --allow-unrelated-histories

问题二、代码回滚问题

指针回滚

  • 指针回滚、查看当前内容 (reset:重置)
git reset --soft HEAD~1  # 回退到前一个提交,保留更改
git reset --mixed HEAD~1  # 回退到前一个提交,保留更改但不在暂存区
git reset --hard HEAD~1  # 回退到前一个提交,丢弃所有更改

代码回滚并创建提交记录

  • 撤销特定提交的更改并创建新提交 (revert: 回复)
git revert <commit-SHA>  

应用场景

  • 想要会退到包含测试git3代码如何实践.
7000543 HEAD@{11}: commit: 测试git5
b43209f HEAD@{12}: commit: 测试git4
38072e1 HEAD@{13}: commit: 测试git3
0089eaa HEAD@{14}: commit: 测试git2
bde05f9 HEAD@{15}: commit: 测试git1
  • git revert b43209f

问题三、git提交多个文件夹时,某些文件夹未被提交

  1. 查看未被提交的文件夹是否有.git文件,有的话请删除
  2. 若没有,请执行删除git 本地缓存命令
rm -r --cached 文件名称
  1. 从新执行add/commit/push命令 即可

问题四、如何从新书写commit提交的信息

如下有三个commit提交信息,想要修改不规范的提交记录

  • 执行git reflog 查看提交日志
c618c10 HEAD@{9}: commit: --删除修改3
2cbabee HEAD@{10}: commit: --删除修改2
9c74a36 HEAD@{11}: commit: --删除修改1

想删除前面的--如何实现?

  1. 执行 git rebase -i HEAD~3
  • 可以看到如下日志信息

截屏2024-02-20 15.15.41.png

  1. 将想要修改的commit日志前面的pick 改成 reword 然后保存 (同linux命令中的vim)

截屏2024-02-20 15.18.22.png

  1. 保存之后, 会对应按顺序弹出COMMIT日志内容,如果有俩个reword 会弹出俩次,手动进行修改即可
  2. 然后再次执行 git log 查看是否修改成功。git push 提交

问题五、报错 [rejected] master -> master (non-fast-forward)”

原因:本地代码跟远程代码不是同步最新的, 本地代码落后远程master的代码, 解决方案:强制更新远程代码

git pull origin master --allow-unrelated-histories 
//把远程仓库和本地同步,消除差异 
git add . 
git commit -m '***' 
git push origin master