二次开发框架配置git

[将Git与Github进行SSH连接 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/108972475#:~:text=将公钥添加到 github 中 1 在 C%3A\user\xxx.ssh\ 文件夹中找到 id_rsa.pub,中取一个名字(任意), key 中粘贴你刚刚复制的内容。 然后点击 Add SSH key 即可。)

温馨提示:

1
ssh -T git@github.com

应该是不行的,这个时候就要在这个界面提交改动,会弹出来需要认证码的界面,认证过后即可:image-20230503155644065

模型库

在个人中心->模型->我的模型,查询访问令牌。可以通过令牌进行git仓库的使用。

1
2
3
4
git clone http://git.aistudio.baidu.com/2554132/Reading-Comprehension-Model-of-Chinese-Medicine.git

# 用码
git clone http://xxxxxxxxxxxxxxxxxxxxxxx@git.aistudio.baidu.com/2554132/Reading-Comprehension-Model-of-Chinese-Medicine.git

创建-切换分支

1
2
# 创建并切换到一个名为 my-cool-stuff 的分支
➜ git checkout -b my-cool-stuff

安装 pre-commit

1
pip install pre-commit==2.17.0 && pre-commit install

查看当前目录变化

1
2
3
4
5
6
7
8
git remote -v
git remote add upstream https://github.com/PaddlePaddle/Paddle
git remote -v

origin https://github.com/USERNAME/Paddle.git (fetch)
origin https://github.com/USERNAME/Paddle.git (push)
upstream https://github.com/PaddlePaddle/Paddle.git (fetch)
upstream https://github.com/PaddlePaddle/Paddle.git (push)

获取原始 Paddle 仓库的最新代码并更新当前分支。

1
git fetch upstream && git pull upstream develop

Push到远程仓库

1
2
# my-cool-stuff为分支名
git push origin my-cool-stuff

打开(https://github.com/jjyaoao/Paddle)页面,并切换到所建分支,然后单击 Compare & pull request 按钮。

还原到上个版本

1
git reset --hard

回到clone后的初始状态

1
git reset --hard HEAD^

同步本地代码与Develop

1
git fetch upstream develop && git merge upstream/develop
1
cd amp && rm -rf *_npu* && cd .. && git status && git add --all && pre-commit && git status

模型库

1
2
AccessToken=27ce32f8a7a2ffceae38867e73ab51400b463435
git clone http://${AccessToken}@git.aistudio.baidu.com/2554132/Reading-Comprehension-Model-of-Chinese-Medicine.git

rebase解决冲突

Git Rebase 与解决冲突 - 知乎 (zhihu.com)

1
2
3
4
5
6
git checkout develop && git fetch upstream && git pull upstream develop && git checkout xxx && git rebase develop


git rebase --continue

git push origin xxx --force-with-lease

下一次贡献

(1)切回 Paddle develop 分支

1
2
➜  cd Paddle
➜ git checkout develop

(2)保持本地仓库最新

1
2
➜  git fetch upstream
➜ git pull upstream develop

(3)创建新分支

1
➜  git checkout -b new_branch

解决大文件问题

1
2
git config lfs.dialtimeout 3600
git config lfs.activitytimeout 3600

当你准备向一个 Git 仓库提交大文件的时候,首先,你需要下载和安装 Git LFS 扩展并执行命令:

1
git lfs install

其次,在 Git 仓库中,你需要通过 git lfs track 命令告诉 Git LFS,你希望它帮你管理哪些文件:

1
git lfs track "*.jpg"

这里以 *.jpg 为例,它表示希望 Git LFS 对所有的 .jpg 格式的文件进行管理,这一步的结果是生成一个名为 .gitattributes 的文件。因此,理论上你可以直接编辑这个文件来达到相同的目的:

1
*.jpg filter=lfs diff=lfs merge=lfs -text

最后,你需要确保 .gitattributes 文件能被 Git 仓库追踪:

1
git add .gitattributes

一旦完成了这个准备工作,你就可以像平时一样提交和推送变更:

1
2
3
git add awesome.jpg
git commit -m "Add a awesome image file"
git push origin main

提交后的亡羊补牢

扁鹊见蔡桓公的故事,告诉我们防微杜渐的道理。可如果你是在提交了一个大文件以后,才开始接触 Git LFS 的相关内容。那么,你大概会遇到下面的错误:

image-20230410214940705

你可能会想,既然是这个文件的大小超过了 Github 的限制,那我把这个文件删除掉是不是就可以了呢?经过博主一番挣扎,发现这个思路完全是徒劳的。因为这个大文件就像持续了三年的新冠病毒一样,只要存在被它感染过的历史记录,都会在推送时提示上面的错误。所以,删除这个大文件并不能真正解决问题,我们必须要确保此前的提交历史中没有这个大文件。下面分享一个神奇的命令 git filter-branch :

1
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch /src/CSharpWasm/mono-6.12.0.182-x64-0.msi'

通过这个命令,我们就可以重写整个提交历史:

image-20230410215017270

此时,我们只需要按提交大文件前的步骤,重新提交该文件即可

git commit后的亡羊补牢

  1. 创建一个新分支(保留此次操作)
1
git checkout -b xxx
  1. 回到以前的分支
1
git checkout xxx(develop)
  1. 回到git Clone后的初始状态
1
git reset --hard HEAD^
  1. git log查看commit号,并切换到第一步新建的分支中
1
git log && git checkout xxx
    1. checkout + cherrypick
    1
    git cherry-pick xxxx(commit号)
    1. checkout + swtich
    1
    git switch -c xxx(重新开一个新分支) && git checkout xxx && git push origin xxx

虽然缓存区status没有显示任何内容,但是可以直接push提交该次commit

添加作者信息

vscode-fileheader插件 + ctrl alt i

追加开源贡献签名

1
2
3
4
5
# 进行修改
git commit --amend -s

# 推送到远程仓库
git push --force origin <branch-name>

删除远程端最后一个分支

1
git push origin HEAD --force-with-lease
1
git push origin <commit哈希值>:<远程分支名> --force-with-lease

合并多个commit

「Git」合并多个 Commit - 简书 (jianshu.com)

输入命令

1
2
# 这里的mybranch填你当前的分支, 例如jjy1
git push origin mybranch --force-with-lease

这样就将两个commit合并成了一个commit。

更改git的commit信息

最新的commit:

  1. 使用 git log 命令查看需要更改的提交的 SHA-1 值。
  2. 运行 git commit --amend 命令来更改提交信息。
  3. 按照提示修改提交信息。
  4. 使用 git log 命令确保提交信息已更改。
  5. 运行 git push --force-with-lease 命令来强制推送更改的提交信息。

旧的commit:

(52条消息) git修改历史提交(commit)信息(超详细,图文并茂)_git修改之前的commit信息_Allen Wu(WU, ZHWIEI)的博客-CSDN博客

rebase来调整已经提交的commit

  1. 首先,确保你的当前分支是你想要修改的分支。你可以使用 git branch 命令来查看你当前的分支。
  2. 然后,你可以使用 git rebase -i HEAD~n 来开始一个交互式的 rebase。这里的 n 是你想要修改的最近的 commit 数量。例如,如果你想要修改最近的 3 个 commit,你可以运行 git rebase -i HEAD~3
  3. 在交互式 rebase 中,你会看到一个列表,其中列出了你选择的 commit。在每个 commit 前面,你会看到 “pick” 字样。你可以将 “pick” 修改为其他命令来改变这个 commit。例如,你可以将 “pick” 改为 “reword” 来修改 commit 信息,或者改为 “edit” 来修改 commit 的内容。
  4. 在你修改完 commit 之后,你可以使用 git rebase --continue 来完成 rebase。
  5. 最后,你需要将你的修改推送到远程仓库。由于 rebase 会改变你的 Git 历史,所以你需要使用 git push origin <your-branch> --forcegit push origin <your-branch> --force-with-lease 来强制推送。