Git小结
集中式版本控制
SVN所有东西都存在服务器,不连网不能同步和切换,需要定期备份。
分布式版本控制
Git,每个人保存的都是所有版本
git组成部分
工作区 –add-> 暂存区 –commit-> 本地仓库 –push-> 远程
工作区 <-checkout– 暂存区 <-reset– 本地仓库 <-fetch/clone– 远程
工作区 <-checkout HEAD– 本地仓库
工作区 <-pull– 远程
git配置
1 2 3 4 5 6 7 8 9 10 11 12 13
| git config
--local --global --system 配置影响的范围,本仓库、本用户、本系统
不加后面具体值表示查看 --list 查看config信息 user.name "" 用户名 user.email "" 用户邮箱 core.autocrlf true\input\false 提交为lf取出改为crlf、提交改为lf、什么也不改 core.safecrlf true\false\warn 拒绝包含混合的文件、允许、给予警告 credential.helper store --file .m_credentials 保存密码存证,Push到https连接时,可不输入密码,--file后面是目录地址 alias 别名 alias.ci 'commit' 以后可以用ci表示commit 后面不是git命令 可以用!表示,如'!gitk' https.proxy http://127.0.0.1:1080 和 --unset https.proxy 设置和取消代理
|
git常用
1 2 3 4 5 6 7 8
| HEAD 最后的提交 HEAD^ 倒数第二提交 HEAD^^或者HEAD~2 倒数第三
init 在工作目录创建主分支 clone 克隆 -b 分支名 --depth 次数(不想把记录也搞下来可以为1) 地址 stash 暂存 save "信息" 暂存且指定名字 list 查看暂存 pop 弹出暂存 apply 类似pop,但是pop会删除暂存 drop 名称 移除 show -p 查看差异,p是详细
|
git查看
1 2 3 4 5 6
| log 查看日志 --stat 显示简短内容 --name-only 仅显示文件清单 --name-status 仅显示增删改的文件清单 --author="author" 列出该用户 --grep="" 过滤,可加--all--match表示同时满足 file 可以指定文件,查看某文件 status 当前状态 blame -L <start>,<end> 文件名 查看文件历史,从第start行到end行 diff 查看工作与暂存的差异 --cached <reference> 查看暂存和某次提交的差异,默认是HEAD show <reference>/标签名 查看某提交信息 tag 给提交或者仓库打标签 名/名 <reference> 给当前仓库/提交打标签 -d 名 删除标签 -m "" 注释信息
|
git删除
1 2 3
| clean 清除没有被跟踪的文件 -n 查看要清除什么 -f 执行清除 -x 连ingore的都删除 -X 只删除ignore -d 删除目录 path 指定目录,不加则为整仓库 rm 文件名 将文件移除 --cached 从暂存区移除 reset [--soft | --mixed | --hard] [HEAD] --soft 工作区不变,暂存区不变,本地仓库回滚 --mixed 默认参数,工作区不变,暂存区回滚,本地仓库回滚,需重新add --hard 三个区都回滚
|
git拉取提交
1 2 3 4 5 6 7
| add 文件名 添加文件,用.表示所有 commit --amend 结合上次提交一起 -m "" 注释 -a 跳过暂存区,直接到本地仓库 pull <远程主机名>(origin) <远程分支名>:<本地分支名> 拉取远程主机,分支与本地分支合并 --rebase 执行rebase不执行merge 实际该指令大概可以理解为fetch + merge push <远程主机名> <本地分支名>:<远程分支名> -u 名 指定默认主机 --force 强制推送,冲掉差异 --tags 推送标签 fetch <远程主机名> <分支名> 从远程获取最新版本,不指定分支名即全部 merge 分支名 合并该分支到当前分支 rebase 分支名 将另一分支合并到当前,不留痕迹,不像merge那样,将提交合并成patch,然后转到当前分支apply,当有冲突时,解决完用add后,执行--continue则继续执行apply,或者用--abort结束
|
git分支
1 2 3 4
| branch 列出本地所有分支;分支名 创建分支;-b 分支名 创建并切换分支;-a 列出所有分支;-m 名1 名2 将名1改为名2;-d 名 删除分支 checkout 文件名;分支名 切换分支;-b 名 [commit id] 创建并切换;commit id 切换到某提交; chrry-pick <commit id>【..<commit id>】 将提交应用到其它分支 remote
|
git补丁
1 2 3 4
| format-patch <commit id> -n 打包id和之前n-1个到patch,patch是一个提交一个;<id>..<id> 打包之间的;--stdout > fiilename.patch 指定名字 diff <id> <id> > filename.diff 打包到diff,只有一个 apply --check filename 应用 但是不创建提交 am filename 应用且创建提交
|
git文件
1 2 3 4 5 6 7 8 9 10 11 12 13
| .gitignore filename 忽略指定文件 filepath 忽略指定文件夹 * 统配符 !xxx 这xxx文件不忽略 /xxx 表示忽略最上层的xxx git check-ignore检查
..gitmodules git submodule add <url> <path> 添加子模块,path为保存路径 git submodule update --init --recursive 拉取子模块
移除子模块->移除目录、移除.gitmodules信息、移除.git/config信息、移除.git/module/ 对应信息
|
本文标题:Git小结
文章作者:whppmy
发布时间:2023-03-04
最后更新:2022-11-06
原始链接:http://bugnull.com/无处安放/git小结/
版权声明:个人记录,没有获取同意时,禁止转载!!