清除用户名与邮箱命令(全局)
git config --global --unset user.name
git config --global --unset user.email
设置用户名与邮箱命令(全局)
git config --global user.name "用户名"
git config --global user.email "邮箱"
查看用户名邮箱(全局)
git config --global --list
Windows 下保存 Gitee 账号密码路径
控制面板 → 用户帐户 → 凭据管理器 → 找到 https://gitee.com
创建分支
git branch branch-name
# 创建空分支
git checkout --orphan main
切换分支
git checkout branch-name
创建并切换分支
git chekout -b branch-name
删除分支
git branch -d branch-name
删除远程分支
git push origin :branch-name
会分别对 暂存区 和 工作区 的文件进行进度保存
git stash
# 完整版本
git stash save "message…"
如果你想要将 新添加的文件 也保存起来
git stash -u
# or
git stash --all
在你需要的时候可以将进度弹出对文件进行恢复
git stash pop
查看保存的进度
git stash list
清空暂存区
git stash apply
或 git stash pop
来恢复更改,检查是否还需要这些更改,然后再决定是否删除。
git stash clear
这里的 --depth=1
意思是只克隆最近一次提交,而不是克隆整个提交历史,可以减少克隆的时间,因为我们只需要最新的代码。
# 这里用的是 plum 举例,在 git 地址后可以加上想要的项目名称
git clone --depth=1 https://github.com/rime/plum my-plum
-M 表示强制重命名,即便新分支存在也会执行重命名。
git branch -M main
将当前分支推送到远程仓库,通过 -u
关联远程仓库和 main 分支,后续使用 git push
即可。
git push -u origin main
如果你想要使用合并(merge)来解决冲突,可以执行
git config pull.rebase false
如果你想要使用变基(rebase)来解决冲突,可以运行
git config pull.rebase true
git merge
到一半不想解决冲突了怎么办?
# 这将会取消合并,并且将代码状态恢复到合并之前的状态
git merge --abort
如图所示:
执行下面命令关闭对文件名的 quote 即可
git config --global core.quotepath false
找到需要更改信息的 commit 哈希值
git rebase -i commitHash~1
将 YYYY-MM-DD HH:MM:SS
更改成你想要的时间
GIT_COMMITTER_DATE="YYYY-MM-DD HH:MM:SS" git commit --amend --no-edit --date "YYYY-MM-DD HH:MM:SS"
结束
git rebase --continue
强制提交
git push --force
- 查看需要修改 commit 信息的 hash 值
git log
git reflog
- 找到此 commit 的位置的父 commit hash 信息 ~ 后面的代表回数几个 commit
git rebase -i commitHash~1
- 进入 Vim 编辑,找到你需要修改的 commit msg 行,将前面的
pick
更改为reword
或r
,Vim:x
,保存并退出 - 此时会自动弹出这个 commit msg 之前的提交信息,对其进行修改并保存退出
- 强制提交
git push --force
⚠️ 要加上 --cached,否则本地的文件也会被删除。
- 先
git rm --cached
清除这个文件或文件夹; git add
加上git commit
清除远程仓库托管信息即可,也就是删除远程仓库的文件或者文件夹。
sumodule - 链接一个独立的子仓库进行管理。
git submodule add 远程仓库地址
git submodule update --remote
修改子模块,以下配置需要同步更新:
.git/config
配置.gitmodules
映射.git/modules/
目录下无用子模块清理
例如:你创建了一个文件 callout.md
写入内容并提交到远程仓库中,突然有一天,你想将这个文件名的首字母改为大写,更改后会发现没有任何提示信息,你感到很诧异,这并不奇怪,因为 Git 默认是不区分文件名大小写的,所以对你的文件名大小写并不敏感。
那么我们怎么能让 Git 对大小写敏感呢?很简单,一个命令:
git config core.ignorecase false
执行完命令之后,不出意外的话你会发现 Git 仓库有文件的修改信息提示了,于是你兴冲冲的将 add&commit&push
一套组合拳打在 Git 身上,但这可能仅仅是个开始…你打开 Git 远程仓库一看,诶!怎么有两个文件?🤨 一个是首字母大写的 Callout.md
(修改后),一个是没大写的 callout.md
(修改前),明明你的本地只有一个啊
小问题,不要慌 👊,清除一下本地 Git 记录的文件缓存信息,然后重新提交即可,如下:
# -r 是为了递归删除,多个文件的话,建议你直接写目录名,反正在 add 阶段会被 Git diff 掉
# !!! 注意一定要加上 --cached 选项,如果不加,不仅会删除托管信息,还会在硬盘上删除此文件
git rm -r --cached callout.md
git add callout.md
git commit -m "chore: rm cached file"
git push