常用git命令
Fork同步
- 检查本地仓库状态
1
git status
- 拉取远端源仓库更新
1
git fetch upstream
- 切换到 master 分支
1
git checkout master
- 合并远程的master分支
1
git merge upstream/master
- 推送修改至 Fork仓库
1
git push
子模块恢复
使用
git log
命令查找删除子模块之前的提交哈希值使用
git checkout
命令恢复.gitmodules
文件和子模块路径。将<commit-hash>
替换为步骤 3 中找到的哈希值,将<path>
替换为子模块的路径。1
git checkout <commit-hash> -- .gitmodules <path>
使用
git status
命令查看仓库状态。应该会看到.gitmodules
文件和子模块路径的更改。使用
git add
命令将.gitmodules
文件和子模块路径添加到暂存区。1
git add .gitmodules <path>
使用
git commit
命令提交更改1
git commit -m "Restore submodule"
使用
git submodule update --init --recursive
命令初始化并更新子模块1
git submodule update --init --recursive
使用
git push
命令将更改推送到远程仓库
提交记录合并
假设要合并最近的三个提交。
1
git rebase -i HEAD~3
这将打开一个交互式 rebase 窗口,列出了最近的三个提交
- 编辑提交历史: 在弹出的编辑器中,你会看到一个包含你最近提交的列表。每个提交前面都有一个单词
pick
。将除第一个以外的所有pick
更改为squash
或s
。这样就将它们合并到第一个提交中。确保第一个提交的行保持pick
,这将成为合并后的提交。 - 保存并关闭编辑器: 保存并关闭编辑器。Git 将自动继续执行 rebase 操作。
- 编辑新的提交信息: Git 将打开另一个编辑器窗口,让你编辑合并后的提交信息。编辑信息以描述这些提交的整体内容。
- 完成 rebase 操作: 保存并关闭编辑器。Git 将应用 rebase,并将你的提交历史整理成一条新的提交。
- 推送到远程仓库(可选): 如果这些提交是你已经推送到远程仓库的,你可能需要使用
git push --force
强制推送来更新远程分支。
获取最近一次的git的提交文件路径集合
1
git diff-tree --no-commit-id --name-only -r HEAD
解释
git diff-tree
:比较树形结构,适合用于查看提交文件变更。--no-commit-id
:不显示提交的 ID,仅显示文件列表。--name-only
:仅输出文件名而不包含详细信息。-r HEAD
:递归遍历指定的提交(此处为HEAD
,即最新一次提交)。- HEAD 可更换为指定的sha来获取制定的提交的内容
cherry-pick
将 feature-branch
分支中的提交记录 cherry-pick 到 main
分支上,步骤如下:
切换到目标分支(例如
main
分支):1
git checkout main
从源分支(例如
feature-branch
)中选择提交: 假设需要 cherry-pickfeature-branch
上的某几个提交记录,可以先找到它们的 SHA 值:1
git log feature-branch
执行 cherry-pick: 根据需要 cherry-pick 的提交记录,执行以下命令(假设 SHA 为
abc123
,def456
):1
git cherry-pick abc123 def456
或者,如果这些提交记录在 feature-branch
上是连续的,可以直接指定范围:
1
git cherry-pick abc123^..def456
这样,这些提交记录就会从 feature-branch
被 cherry-pick 到 main
上了。
配置SSH
>> URL
>> URL
1
ssh-keygen -t ed25519 -C "your_email@example.com"
如果你使用的是不支持 Ed25519
算法的旧系统,请使用以下命令:
1
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
GitLab导入GitHub仓库
步骤 1:在 GitLab 创建空仓库
- 登录 GitLab,点击右上角 New project。
- 选择 Create blank project。
- 输入项目名称、描述,不要勾选 “Initialize repository with a README”(确保仓库为空)。
- 点击 Create project,记下仓库的 Git URL(如
git@gitlab.com:yourusername/repo.git
)。
步骤 2:克隆 GitHub 仓库到本地
1
2
3
# 克隆 GitHub 仓库(使用 HTTPS 或 SSH)
git clone --mirror https://github.com/yourusername/repo.git
cd repo.git # 进入克隆的仓库目录
说明:
--mirror
会克隆所有分支、标签和提交记录(完整副本)。
步骤 3:添加 GitLab 远程仓库并推送
1
2
3
4
5
# 添加 GitLab 的远程地址
git remote add gitlab git@gitlab.com:yourusername/repo.git
# 推送所有分支、标签到 GitLab
git push --mirror gitlab
关键参数:
--mirror
:推送所有引用(分支、标签)和提交记录,保持完全一致。- 完成后,GitLab 仓库将包含 GitHub 仓库的全部历史。