Git 笔记
创建时间 2018-11-12
最后更新 2024-06-19
配置
查看
$ git config user.name
$ git config user.email
生成
<span style="color:rgb(77, 77, 77);">ssh-keygen -t rsa </span>
git config --global user.name "qer"
git config --global user.email "[email protected]"
macOS
生成ssh-keygen -t rsa -C <span style="color:rgb(126, 198, 153);">"[email protected]"</span>
打开cat <span style="color:rgb(103, 205, 204);">~/</span><span style="color:rgb(204, 204, 204);">.</span>ssh<span style="color:rgb(103, 205, 204);">/</span>id_rsa<span style="color:rgb(204, 204, 204);">.</span>pub
git config --global user.name "longyuqi"
git config --global user.email "[email protected]"
**Windows **
C:\Users\qer\.ssh
教程
1. 我的第一个git命令笔记 CSDN
2. 如何安全地使用 Git 的指导方案
3.「阮」分支管理策略
4.「阮」远程操作详解
5.「阮」Git 使用规范流程 pr
6.「阮」Git 工作流程 issue
7. 练习 Git,以可视化的方式 visualizing-git
feat: 新功能
fix: 修改 bug
docs: 文档
perf: 性能相关
refactor: 代码重构(就是不影响使用,内部结构的调整)
test: 测试用例
style: 样式修改
workflow: 工作流
build: 项目打包构建相关的配置修改
ci: 持续集成相关
revert: 恢复上一次提交(回滚)
wip: work in progress 工作中 还没完成
chore: 其他修改(不在上述类型中的修改)
release: 发版
deps: 依赖相关的修改****
是的,您可以在 Git 远程仓库的 URL 中使用 Github token。具体地,您可以将 Github token 添加到您的仓库 URL 中,如下所示:
https://${github_token}@github.com/USERNAME/REPO_NAME.git将上面 URL 中的**${github_token}替换为您的 Github access token,并将USERNAME和REPO_NAME**替换为您要推送到的 Github 存储库的用户名和仓库名称。
例如,如果您的 Github 用户名为wbxl2000,要推送到名为TUICallKit的存储库,则您的仓库 URL 将如下所示:
https://${github_token}@github.com/wbxl2000/TUICallKit.git在 Git 命令行中使用此 URL 将不需要再次身份验证,而是使用在 URL 中提供的 Github token 进行身份验证。这样,您就可以使用 Github token 在命令行中推送代码了。
cd ${WORKSPACE}/github_callkit
# 安装 gh ci 工具
sudo dnf config-manager --add-repo https://cli.github.com/packages/rpm/gh-cli.repo
sudo dnf install gh -y
echo ${github_token} > token.txt
gh auth login --with-token < token.txt
# 提交 PR
gh pr create --title "release: ${name}${version}" --body "" -R tencentyun/TUICallKit > ${WORKSPACE}/result.txt
echo "📢 TUICallKit/Web github 发布" >> ${WORKSPACE}/notice.txt
echo "PR 单已提交,请审核,地址如下:" >> ${WORKSPACE}/notice.txt
tail -n 1 ${WORKSPACE}/result.txt >> ${WORKSPACE}/notice.txtgit rebase 使用总结
一个很重要的作用:变基操作 http://jartto.wang/2018/12/11/git-rebase/
http://gitbook.liuhui998.com/4_2.html
1 假设要变基到 main 上
- 去 main 分支 pull 最新版本
- 切换到要 rebase 的分支 执行
git rebase main - 然后会出现冲突或者未提交的内容,手动处理冲突,未提交的内容不用管,之后执行
git rebase --continue,vscode 可以直接用左侧边栏第三个源代码管理看显示为红色的文件 - 会继续出现下一个结点与现在冲突的内容,继续处理,直到最后一次 continue 会自动结束
tips:变基后显示的变化 也就是未提交的 M 是指相较于 main 的最新版本的变化,从变基前的版本到 main 最新版本的变化是不显示的
tip2: 关于 rebase 的时候,“当前更改”和“传入的更改”分别代表什么,如下图所示


**2 假设要合并自己的前几个分支
**git rebase -i HEAD~3
git rebase -i 36224db // 不包括 36224db,是其之后的
如果您希望将一个提交之后的所有提交合并为一个,并更改作者为您本人,您可以使用 git rebase 命令结合 --interactive (-i) 标记进行交互式的变基操作。
请按照以下步骤执行:
- 确保您在 Git 仓库所在的目录中打开命令行终端。
- 切换到您想要进行变基操作的分支,假设这里是主分支(
master):
git checkout master- 运行以下命令来开始交互式的 rebase 操作:
git rebase -i 08e52d0b7de5459a89da459d1f374edd61a74ab3- 这会打开一个文本编辑器,列出了从
08e52d0b7de5459a89da459d1f374edd61a74ab3开始以后的所有提交。对于您希望保留的提交,将每一行前面的pick修改为s(或者squash):
pick 08e52d0b7de5459a89da459d1f374edd61a74ab3 Commit message
s 1111111 Another commit message
s 2222222 Yet another commit message
...- 保存并关闭编辑器,Git 会将这些提交合并为一个提交。
- 然后,Git 会要求您编辑并确认最终的提交消息。您可以更改作者信息。保存并关闭编辑器。
此时,您的提交历史将会被重新整理为一个提交,并且作者信息将被修改为您本人。请注意,在变基过程中可能会出现冲突,需要手动解决。确保在进行重写历史操作前备份重要数据。
git stash 使用
https://www.cnblogs.com/tocy/p/git-stash-reference.html
<span style="color:rgb(0, 0, 0);background-color:rgb(245, 245, 245);">git stash</span>
<span style="color:rgb(0, 0, 0);background-color:rgb(245, 245, 245);">git stash save </span><span style="color:rgb(163, 21, 21);">"test-cmd-stash"</span>
<span style="color:rgb(163, 21, 21);background-color:rgb(245, 245, 245);">git stash apply</span>
git stash pop 应用同时会把第一个弹出
<span style="color:rgb(0, 0, 0);background-color:rgb(245, 245, 245);">git stash list</span>
<span style="color:rgb(0, 0, 0);background-color:rgb(245, 245, 245);">git stash drop stash@{0}</span> <span style="color:rgb(232, 62, 140);background-color:rgb(246, 246, 246);">git stash clear</span>
如果有新增文件,则需要在 save 后面加参数 -a,或者先 git add .
查缺补漏
git merge bugFix是把这个分支合到当前的 main 上来
问题汇总
1. 减少.git的大小 网址
2. 本地仓库强制覆盖远程仓库
git push -f --set-upstream origin main:main
远程强制覆盖本地
<span style="color:rgb(8, 8, 8);background-color:rgb(249, 249, 249);"># 拉取所有更新,不同步;</span> <span style="color:rgb(8, 8, 8);background-color:rgb(249, 249, 249);">git fetch --all</span> <span style="color:rgb(8, 8, 8);background-color:rgb(249, 249, 249);"># 本地代码同步线上最新版本(会覆盖本地所有与远程仓库上同名的文件);</span> <span style="color:rgb(8, 8, 8);background-color:rgb(249, 249, 249);">git reset --hard origin/master</span> <span style="color:rgb(8, 8, 8);background-color:rgb(249, 249, 249);"># 再更新一次(其实也可以不用,第二步命令做过了其实)</span> <span style="color:rgb(8, 8, 8);background-color:rgb(249, 249, 249);">git pull</span>
3. 设置代理
git config --local http.proxy 127.0.0.1:1080
4. 分支合并:
git merge --no-ff dev-header
禁止快进式合并,可以让main保持不变,git graph 从另一个分支合并回去。
如何取消 merge 的 commit 记录?--no-commit,这样图中也不会出现绕出来的分支了。否则哪怕 dev 只有一次 commit,那 pr 的时候也一共两个 commit。

5. 修改分支名称
git branch -m oldName newName
6. Github进行fork后如何与原仓库同步
https://github.com/selfteaching/the-craft-of-selfteaching/issues/67
检查远程仓库路径:git remote -v
删除上游仓库:git remote rm origin
设置上游代码库:git remote add upstream https://github.com/yqylh/Software-engineering.git
fetch 一下:git fetch upstream
rebase: git rebase upstream/main
push -f : git push -f
如果要 Merge:
切换到main分支:git checkout main
合并远程的main分支:git merge upstream/main
推送的远程:git push
修改远程仓库地址:<span style="color:rgb(3, 47, 98);">git</span> <span style="color:rgb(3, 47, 98);">remote</span> <span style="color:rgb(227, 98, 9);">set-url</span> <span style="color:rgb(3, 47, 98);">origin</span> [<span style="color:rgb(3, 47, 98);">url</span>]
4. git pull 与 git fetch 的区别
https://blog.csdn.net/weixin_41975655/article/details/82887273
git pull 会直接把远程同步到本地,fetch 会先同步到本地的remote,然后需要手动跟自己实际修改的分支merge
git pull --rebase 将本地的提交重新应用在远程提交之上,使得提交历史线性化;而 git pull -f 则是强制性地拉取并合并远程分支的最新提交,可能会覆盖本地的更改。
5. 删除远程分支
git push origin --delete new_a
6. git 设置远程仓库
git remote set-url origin [https://github.com/CUMCM2021-SDU0158/CUMCM.git](https://github.com/CUMCM2021-SDU0158/CUMCM.git)
7. git 追加 commit 内容
git commit --amend
8. git push origin main
9. 撤销上一次 commit
<span style="color:rgb(51, 51, 51);">git reset --soft HEAD^</span> 关于 soft 是将上一次 commit 的内容放到暂存区,hard 就是丢弃了
10. 拉取制定分支
git clone -b feat-something [email protected]:xxxxxxxxxx/xxxxx.git
11. 取消与设置代理
npm config delete proxy
npm config delete https-proxy
npm config set proxy=[http://127.0.0.1:](http://127.0.0.1:8087)23333
npm config set registry=[http://registry.npmjs.org](http://registry.npmjs.org)
12. 怎样把一个 commit 变到某个分支上
如 将 e92908c0 接到 feat-qer 上
git checkout feat-qer
git cherry-pick e92908c0 参考链接
13.如何将 A 分支 push 到 next 分支上
git push origin HEAD:next
14.git stash pop 之后有冲突,不想处理,想要回退 stash pop
<span style="color:rgb(77, 77, 77);">git </span>reset<span style="color:rgb(77, 77, 77);"> --hard</span>ref
15. 如何修改 commit 的作者
git rebase -i HEAD~1
pick 改为 edit
git commit --amend --author="rychouwei <[email protected]>"
git rebase --continue
我自己的习惯记录
git checkout -b dev-qer // 创建一个新的分支
git add .
git commit -m "fix(): xxx" 规范
git checkout dev // 正式项目主线是在dev上,不是在main上,往main上合并要慎重且合理发布,普通项目这里应该是 main
git merge --no-ff dev-qer // 这里如果不想产生merge的commit记录,要加--no-commit在前面
git branch -d dev-qer
git push
去 github 上提交 pr git pull origin main git fetch 的区别是什么?
公司的习惯记录
可以 rebase 一下,合并成一个小 commit
git rebase dev 处理出现的冲突
去 git 提交 MR
案例/练习题
- 最下面的 commit 变成 TUICallKit-dev

创建一个新分支

TUICallKit-build-monorepo rebase 到新分支 move-folder
然后切换到 dev, reset har(忽略 changes)切换过去就好了

- 把最近的 3 个提交合并成同一个,并且保留第一个的 commit。如果保留最后一个的 commit 呢?
- 我有一个git分支,目前是 A -> B -> C -> D,D 是 head,现在我想变成 A -> D,我应该逐步执行哪些 git 命令?并解释。
git rebase -i HEAD~3
pick a1b2c3 A
drop d4e5f6 B
drop g7h8i9 C
pick j0k1l2 D
怎样撤销这个操作
git reflog
git reset --hard abc123
- 把github 仓库的 IMG_233.JPEG 换成 IMG_233.jpeg ,并且传到 github 上去
发布
Annotated Tags: git tag -a v1.4 -m "my version 1.4"
Lightweight Tags: git tag v1.0
推送 tags git push origin --tags
npm publish
npm publish --tag beta
@group npm publish --access public
npm publish --tag infinity
安装指定 tag
npm install rtc-sdk@latest latest 指向的版本
npm install rtc-sdk@beta beta指向的版本
修改tag 的指定版本
npm dist-tag add [email protected] latest
npm dist-tag add [email protected] beta
例如目前 latest 版本有问题,可以修改指定回退到某个版本,默认安装就会安装这个版本(也可以直接废弃)
npm dist-tag add [email protected] latest
查看tag
npm dist-tag ls rtc-sdk
npm info rtc-sdk
SVN
教程:https://www.youtube.com/watch?v=ylVz1rT7pw8
http://web.archive.org/web/20110316170621/http://www.duchnik.com/tutorials/vc/svn-command-reference
https://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-cli-main.html
Husky
error Command "husky-run" not found.
解决:npx husky install