# Git
# git 推送本地仓库到远程分支的流程
常用命令
命令说明 | 命令 |
---|---|
初始化仓库 | git init |
添加文件到本地仓库 | git add .(文件 name) |
添加文件描述信息 | git commit -m “first commit” |
添加远程仓库 | git remote add origin + 远程仓库地址 |
同步远程分支 | git pull origin master |
线性合并远程仓库 | git pull --rebase origin master (无需 commit) |
推送到远程分支 | git push origin master <远程主机名> < 本地分支名 >:< 远程分支名 > |
强制推送 | git push --force origin master |
查看本地分支 | git branch -v <-a 查看所有分支> |
查看远程分支 | git branch -r |
删除本地分支 | git branch -d branName |
删除远程分支 | git push origin --delete master |
删除远程仓库文件 | git rm -r --cached [filenam] |
切换分支 | git checkout main |
创建本地分支 | git branch [name] |
拉取远程分支代码 | git fetch |
合并分支 | git merge [name] |
创建并切换分支 | git checkout -b main |
设置默认提交分支 | git push -u origin master <执行后下次推送可直接 git push> |
同步远程删除的分支 | git remote prune origin |
更新远程分支信息 | git remote update origin --prune |
查看提交记录 | git log |
清除 Git 缓存密码 | git credential-manager uninstall |
分支重命名 | git branch -m master main |
重新验证账户密码 | git config --global credential.helper store |
查看 git 配置信息 | git cofig --list 简写 git config -l |
设置全局账户 / 邮箱 | git config --global (user.name "" ) || (user.email "") |
设置当前仓库账户 / 邮箱 | git confit --local (user.name "" ) || (user.email "") |
覆盖之前的提交信息 | git commit --amend -m"说明信息" |
回退版本,只回退 commit 信息 | git reset --soft |
彻底回退,源码和 commit 均回退 | git reset --hard |
远程仓库命令
- 查看远程仓库:$ git remote -v
- 添加远程仓库:$ git remote add [name] [url]
- 删除远程仓库:$ git remote rm [name]
- 修改远程仓库:$ git remote set-url --push [name] [newUrl]
- 拉取远程仓库:$ git pull [remoteName] [localBranchName]
- 推送远程仓库:$ git push [remoteName] [localBranchName]
- 提交暂存区到仓库: $ git commit -m [message]
- 自动将修改文件添加到索引中;并显示提交信息: $ git commit -a
- 追加提交,覆盖上次的提交信息: $ git commit --amend
分支 branch 命令
- 查看本地分支:$ git branch
- 查看远程分支:$ git branch -r
- 创建本地分支:$ git branch [name] ---- 注意新分支创建后不会自动切换为当前分支
- 切换分支:$ git checkout [name]
- 创建新分支并立即切换到新分支:$ git checkout -b [name]
- 删除分支:$ git branch -d [name] ---- -d 选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用 - D 选项
- 合并分支:$ git merge [name] ---- 将名称为 [name] 的分支与当前分支合并
- 创建远程分支 (本地分支 push 到远程):$ git push origin [name]
- 删除远程分支:$ git push origin --delete [branch_name]
- 创建空的分支:(执行命令之前记得先提交你当前分支的修改,否则会被强制删干净没得后悔)
$git symbolic-ref HEAD refs/heads/[name] | |
$rm .git/index | |
$git clean -fdx |
版本 tag 相关命令
- 查看版本:$ git tag
- 创建版本:$ git tag [name]
- 删除版本:$ git tag -d [name]
- 查看远程版本:$ git tag -r
- 创建远程版本 (本地版本 push 到远程):$ git push origin [name]
- 删除远程版本:$ git push origin :refs/tags/[name]
- 合并远程仓库的 tag 到本地:$ git pull origin --tags
- 上传本地 tag 到远程仓库:$ git push origin --tags
- 创建带注释的 tag:$ git tag -a [name] -m 'yourMessage'
子模块 (submodule) 相关操作命令
- 添加子模块:$ git submodule add [url] [path]
- 初始化子模块:$ git submodule init ---- 只在首次检出仓库时运行一次就行
- 更新子模块:$ git submodule update ---- 每次更新或切换分支后都需要运行一下
- 删除子模块:(分 4 步走哦)
$ git rm --cached [path] | |
编辑“.gitmodules”文件,将子模块的相关配置节点删除掉 | |
编辑“ .git/config”文件,将子模块的相关配置节点删除掉 | |
手动删除子模块残留的目录 |
忽略一些文件,不提交的文件
在仓库根目录下创建名称为 “.gitignore” 的文件,写入不需要的文件夹名或文件,每个元素占一行
target #忽略 dbg 文件和 dbg 目录 | |
target/ #只忽略 target 文件,不忽略 dbg 目录 | |
target | |
!target/ #只忽略 dbg 文件不忽略 dgb 目录 | |
/target #只忽略当前目录下的 target 文件和目录,子目录的 target 不在忽略范围内 | |
bin | |
*.db | |
#忽略规则 | |
# 以 '#' 开始的行,被视为注释. | |
* ?:代表任意的一个字符 | |
* *:代表任意数目的字符 | |
* {!ab}:必须不是此类型 | |
* {ab,bb,cx}:代表ab,bb,cx中任一类型即可 | |
* [abc]:代表a,b,c中任一字符即可 | |
* [ ^abc]:代表必须不是a,b,c中任一字符 |
Git 证书路径变化
## 查看 git 系统配置信息 | |
git config --system --list | |
## 修改 git 整数执行的路径 | |
git config --system http.sslcainfo D:/AppHome/utils/Git/Git/mingw64/ssl/certs/ca-bundle.crt |
Git 设置代理
- GitHub 访问速度过慢导致相应的提交和拉去十分缓慢及超时的解决方案之一
- 设置全局代理
# 设置 git 全局配置的 http 代理 7890 为对应代理的端口 | |
git config --global http.http://github.com.proxy socks5://127.0.0.1:7890 | |
git config --global http.https://github.com.proxy socks5://127.0.0.1:7890 | |
# 取消代理设置 | |
git config --global --unset http.proxy | |
git config --global --unset https.proxy |
- 针对 GitHub 进行单独配置:
# 设置 github.com 的请求通过本地 7890 端口进行代理 | |
git config --global http.https://github.com.proxy socks5://127.0.0.1:7890 | |
#取消代理 | |
git config --global --unset http.https://github.com.proxy |