6.1 KiB
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 / #设置追踪关系 -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 #提交信息 --edit #创建合并提交前,允许编辑提交信息 # # 若产生冲突,解决冲突后,需进行以下操作 # git add # git commit
git reset #回溯
--hard HEAD1 #撤销最后一次commit 本地仓库 and 暂存区 and 工作树
HEAD1 #撤销最后一次commit 仅本地仓库 and 暂存区
--soft HEAD~1 #撤销最后一次commit 仅本地仓库
git revert #提交一个反commit用于撤销前面的commit HEAD [hash]
git rebase #变基 将一系列提交从一个分支上移植到另一个分支上 #将当前分支更改应用到分支上 -i #压缩历史 交互式变基 # -i HEAD~N #回退N次提交 --onto #将分支变基到上 --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