material/tool/git/git.md
2025-02-27 22:25:34 +08:00

182 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# git
git config --global credential.helper store
/\ /\ user.name " "
|| || user.email " "
配置git环境 配置整个环境
工作树 -- 暂存区 -- 本地仓库 -- 远端仓库
git status #查看当前仓库状态
git init #创建仓库
--bare <code.git> #没有工作树的选项(多用于git服务器)
git add 文件 #将文件放到暂存区
-n 演习
* 所有 新建的,删除的,修改的
. 新建的,修改的
-u 更新已追踪
-f 允许添加忽略的文件
-A, --all 添加所有已跟踪和未跟踪
git commit #将暂存区修改合成一个提交
-m "填写概要"
# 不写概要则会创建一个文件,第一行概要,第二行空,第三行详细
-am #相当于add + commit
git log #仓库日志
-a #查看所有分支的提交记录
--stat #详细
--pretty=[short/oneline] #特殊显示
--graph #更直观选项
--after="YYYY-MM-DD" #指定日期
--before="YYYY-MM-DD" #指定日期
--author="xxx" #特点作者提交
origin/master #看远端仓库的日志
文件/目录 #单独追踪
git diff #比对差异 与暂存区差异
HEAD #与本地仓库最新提交差异
git reflog #查询历史操作
git branch #显示本地分支
xxx #创建名为 xxx 的分支
-a #查看全部分支
-r #列出远端分支
-d/D #删除分支 大写强制
-m/M #修改主分支 大写强制
-u <remote>/<branch> #设置追踪关系
-vv #查看每个分支的最后提交信息和跟踪关系,常用于检查是否全部分支已同步
--merged #列出所有已合并到当前分支的分支
--no-merged #未合并
git checkout #切换分支
xxx #切换到 xxx 分支
-b xxx #创建并切换到 xxx 分支
[file] #未提交的文件撤销修改
[hash] #回退
git switch #切换分支
-c xxx #创建并切换到 xxx 分支
git merge #合并分支
xxx #将 xxx 分支合并到当前工作分支
--no-ff #在历史记录中记录合并 (尽量加这个)
--squash #将分支合并为一个提交进行合并,简化历史
--abort #假如合并过程中出现冲突,可使用这个命令终止合并
-m <message> #提交信息
--edit #创建合并提交前,允许编辑提交信息
#
# 若产生冲突,解决冲突后,需进行以下操作
# git add
# git commit
git reset #回溯
--hard HEAD~1 #撤销最后一次commit 本地仓库 and 暂存区 and 工作树
HEAD~1 #撤销最后一次commit 仅本地仓库 and 暂存区
--soft HEAD~1 #撤销最后一次commit 仅本地仓库
git revert #提交一个反commit用于撤销前面的commit
HEAD
[hash]
git rebase #变基 将一系列提交从一个分支上移植到另一个分支上
<basebranch> #将当前分支更改应用到<basebranch>分支上
-i #压缩历史 交互式变基
# -i HEAD~N #回退N次提交
--onto <newbase> <branch> #将<branch>分支变基到<newbase>
--abort #当冲突时撤销合并
--continue #继续合并
git switch #
-c xxx #创建并切换到 xxx 分支
git stash #保存工作区当前状态
list #查看存储状态
pop #将最新一次记录恢复并删除
apply #默认恢复最新记录
clear #清除所有记录
show #看当前与栈顶差异
save xxx #提交注释
-----------------------------------------------------------------------------
git clone URL #clone一个仓库
git remote #操作远程仓库
add origin URL #添加远程仓库
rm origin URL #删除远程仓库
-v #显示详细信息
git push #推送到远程
origin xxx:xxx #将 xxx 分支推送到远端 origin 仓库 本地分支:远端分支
-u origin xxx #推送同时尝试将origin 的 xxx 设置为上游
origin xxx --delete #删除远端的xxx分支
--tags #推送全部标签
-f #强制提交
origin :xxx #删除远端 xxx 分支
git pull #拉取远端仓库 全部 = git fetch + git merge
origin xxx #直接覆盖当前工作树
--rebase #将本地分支的提交应用到拉取的提交之上,保持历史线性
--no-commit #拉取并合并代码,但不自动提交结果
--edit #创建合并提交前,允许编辑提交信息
git fetch #拉取到本地仓库中 不对工作树进行覆盖
--all #获取所有远端仓库更新
--prune #拉取更新时,清理已删除的分支
git tag #查看所有标签
-d #删除标签
[tag] #
-a #设置标签名
-m #填写标签说明
-----------------------------------------------------------------------------
.gitignore #此文件中可放置不想追踪的文件
#1:
修改了ssh端口的推送与clone
git remote add iaalai ssh://root@api.iaalai.cn:25522/root/git/code.git/
git clone ssh://root@api.iaalai.cn:25522/root/git/code.git/
#2:
搭建git服务器
1 + install git/openssh
2 + useradd git
3 + 创建证书登陆
用户: .ssh/id.rsa.pub -> 服务器:.ssh/authorized_keys 一行一个
4 + 创建仓库并移交权限给git用户
5 + 禁用登陆shll usermod -s /bin/git-shell git
#3:
工作流参考
1 + git clone 到本地仓库
2 + git checkout -b feature 创建新分支
3 + git commit -am 提交
4 + git push origin feature
当遇到主分支更新时
1 + git checkout main 切换到主分支
2 + git pull origin main 拉取最新更新
3 + git checkout feature 切换到特性分支
4 + git rebase main 尝试变基合并
5 + git push -f origin feature 强制提交特性分支
6 + Pull Request Squash and merge 合并到主分支
7 + git checkout main 切换回主分支
8 + git branch -D feature 删除特性分支
9 + git pull origin main 拉取最新主分支
#4:
开发时查看远端仓库是否更新
pull or fetch