git
#复习/Git
Git总结PDF版

前言
安装与初始化
git如何配置用户和查看用户::git config --global user.name "想要添加的用户名(没有空格可以省略双引号)" git config --global --list
如何初始化git仓库,命名的生成呢::git init. git init my 会创建一个my文件夹仓库在文件夹里
win和Linux中如何查看隐藏文件::Get-ChildItem -Force ls -a
原理

提交
如何添加所有文件及文件夹到git::add 添加到暂存区 add . 添加所有,包括文件夹git
commit 提交到仓库(只会把暂存区的加上,而不会加工作区的)
git提交需要有提交信息用什么命令::-m
git如何将已经追踪的文件同时暂存并提交两个操作::commit -am
git log 提交日志
如何列出当前工作目录中所有 被 Git 跟踪的文件::git ls-files 用于(即已经被添加到 Git 仓库中的文件,包括暂存区的。一般只有新建的没有提交过的,被忽略的不被跟踪)。
git如何修改之前提交的备注::使用git commit --amend -m
HEAD 是最新的版本id,HEAD~ 是第二新的版本
HEAD~2 是HEAD前的第二个版本,也就是第三个版本,以此类推
使用git status提示如下是什么意思
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: 123.txt
- 你在 `master` 分支上。
- 文件 `123.txt` 已经被修改并添加到暂存区,准备提交。
- 如果你不希望提交这些修改,可以使用 `git restore --staged 123.txt` 将文件从暂存区移除,撤销 `git add` 操作。
红色是修改了工作区没提交。绿色是没提交到仓库
恢复与比较差异

git reset 的三种区别
???
git reset --soft 是只修改指针,不修改内容,相当于撤销提交但保持修改,所以不会出现文件冲突 ^db9270
--hard 会删除所有修改,相当于原样回来,新增的也会删除.但未追踪的不会修改
--mixed 默认的,把指针回去,并清空暂存区,不做内容修改
+++
如何查看已经删除的记录::git reflog
git diff 比较不同使用什么命令,包括三种比较,怎么比较两次提交记录::默认比较暂存区和工作区.使用--cached比较暂存和仓库 单独使用HEAD比较上次提交以来的所有修改,无论是否暂存
HEAD 比较工作和仓库
--cached 比较暂存和仓库
--cached 是一个常用于命令行选项的参数,它表示 **操作暂存区(staging area)**,而不是操作工作区(working directory)
直接加上两个版本id

修改了不提交到暂存区也会有比较? 理解错了,就是没提交,所以和之前提交过的比较有差别
删除
git rm rf
当你使用 git rm rf 时,暂存区中的文件 会被标记为已删除,但它们不会立即从暂存区消失,直到你执行提交(git commit)
此时可以 git checkout --cached <file> 恢复
git中普通删除的命令和效果.git如何将文件从版本控制里移除,却保留工作区的文件::git rm 或者手动删除,但是暂存区的问题件不会删除. git rm --cached <file> 将文件从 Git 仓库的版本控制中移除,但 保留工作区中的文件。
忽略
.gitgnore



git中忽略命令怎么使用,文件夹怎么忽略.需要注意,已经添加过的再忽略还是能被检测到::将要忽略的文件添加到.gitignore文件中. echo 1.txt > .gitignore 文件夹的话用1/最后是反斜杠
git的忽略是怎样匹配的,git忽略的几种方式,[] !::从上往下. []表示匹配里面的单个字符,比如[abc]表示忽略 a b c !表示取反
注意echo的用法, 怎么样不覆盖,怎样换行::使用echo 1 >> 1.txt .默认时换行添加,添加到末尾
github
clone
push //推送到GitHub,但要提交到仓库
git remote add origin git@github.com :Pontos2334/tim.git 添加远程仓库并别名为origin
git remote -v查看本地 Git 仓库的远程仓库配置
- **`(fetch)`**:表示当你执行 `git fetch` 或其他相关操作(如 `git pull`)时,Git 将从这个远程仓库拉取数据(即抓取数据)。
- **`(push)`**:表示当你执行 `git push` 时,Git 将数据推送到这个远程仓库。
git push -u origin main -u会把本地和远程的origin联系起来
如何联系到GitHub,如何配置密钥并克隆,如何验证是否连接成功
???
使用GitHub的流程,使用ssh,先使用命令ssh-keygen -t rsa -b 4096.在本地/c/Users/13482/.ssh/ 生成了一对密钥,将公钥.pub复制到GitHub上,(如果本地之前有别的密钥,那么需要改一下config的配置),然后就可以clone仓库了。使用ssh -T
+++
如何将本地仓库与GitHub的仓库关联起来.pull和fetch的区别
???
- git remote add origin git@github.com :Pontos2334/Boost.git
- git branch -M main
- git push -u origin main
- pull和fetch的区别是fetch不会自动合并,需要手动合并
+++
git裸仓库和普通仓库的区别,怎么创建::git init --bare
分支
树,在不影响主干正常使用的情况下多人开发,最后合并
git branch 查看当前
git branch bug 创建
git merge bug 把bug分区合并到main分区
git branch -d bug 删除已经合并的bug分区
git checkout bug 切换到bug分区
git switch bug 切换到bug分区,不会有歧义

分支图的查看
git log --graph --oneline --decorate --all 图像一行标签名
1.git中如何创建分支2.如何切换分支3.如何合并分支,如何删除已经被合并没用的分支4.如何查看分支图
???
- git branch a
- git switch a
- git merge a \ git branch -d a
- git branch --graph --oneline
+++
冲突
什么情况,两个分支不一样也能合并成功,还是我操作有问题?
在图形化界面可以,在cmd中不行,不知道为什么
最简单的就是手动修改,先用diff查看不同,
如何终止合并::git merge --abort
可以用 git merge --abort 终止合并
回退和rebase
变基
就是改变下指针,让链表不再是树的形式,而是一条直线

git rebase main 将当前的分支变基到main分支上,在哪个分支做,哪个分支就在上头
一般不在公共git上操作
合并分支并且在一条直线上用什么命令,合并完的顺序是怎样的::git rebase .在哪个分支上操作哪个分支在前面
git中既能切换分支还能恢复文件的命令::checkout
git中合并使用rebase和meger的区别在哪里::看个人习惯,但一般不在公共分支上使用rebase
工作模型
