git

19 8.0~10.3 分钟 3599

#复习/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

|1000

|1000

|850

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的区别
???

  1. git remote add origin git@github.com :Pontos2334/Boost.git
  2. git branch -M main
  3. git push -u origin main
  4. 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.如何查看分支图
???

  1. git branch a
  2. git switch a
  3. git merge a \ git branch -d a
  4. 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

工作模型