Git学习笔记

虽然一直在用git,但是自从开始用JetBrains家的IDE以后就没碰过命令行版本的git了(图形化界面害人不浅)

基础知识

The woking directory:与本地文件系统同步

Staging index:即被git add加入的暂存区

Commit history:git commit后加入的版本库

HEAD指针:在Commit history中指向当前工作位置

具体命令

branch

git branch列出所有分支,git branch <branch>基于HEAD新建分支,-d用于删除已合并的分支,-D强制删除分支,m重命名分支。

status

status 显示的是目前需要add(图中为红色)和需要commit(绿色)的文件,这一命令同时给出文件目前的状态

1652797912_1_.png

log

log 显示当前分支的版本历史,--branches=*查看所有分支的历史。可以增加各种选项。--oneline显示简介版本,--graph绘制拓扑图更直观显示版本变化,-n限制显示个数,--author等可以查询特定限制的修改。

1652870295.png

checkout

1.切换分支

2.使用git checkout -b <new-branch><existing-branch> 可以基于已有分支新建并切换到新分支,<existing-branch>默认为当前HEAD。

3.切换到某次commit的状态,可以查看旧版本的代码。但此时处于"detached HEAD"状态,此时所进行的修改与整个开发工作完全分离。可以通过 git switch -c <new-branch-name>建立新branch来保存修改,或是直接git switch - 来撤销修改(好像也可以用git checkout -b?不知道有啥区别)。

具体实现过程是用commit history中的文件更新staging index,再更新woking directory。因此可以使用git checkout .来放弃未add的更改。

1652885307.png

revert

通过一个新的提交来消除某次提交产生的影响,原有的提交会保留。

1652885946_1_.png

使用git revert HEAD

image-20220518230004577.png

reset

将HEAD指针和branch的指针指向指定的commit。--soft到此为止,--mixed还会修改Staging index,即当前的文件修改不会丢失,--hard额外再修改woking directory。默认为--mixed。(所以--soft是处理啥需求的啊

reset相当于丢弃了所选commit之后的commit,因此只能在push之前执行。

可以利用git reset <file>来将特定文件移出Staging index,或直接使用git reset 重置Staging index。

rm

--cached主要用于删除Staging index中的文件,默认则会同时删除Staging index和woking directory下的文件。如果Staging index或woking directory中要删除的文件与HEAD中的文件不同,则需要使用-f。同样地,-r用于删除目录。

remote

管理本地储存的远程库条目。-v显示所有远程库,addrmrename增、删、改远程库条目

fetch

下载远程分支并储存在本地的远程库副本中,并不改变本地工作目录的内容。这种操作比较灵活安全,可以通过checkout切换到远程分支上进行操作并通过 git switch -c <new-branch-name>将远程库保存到新分支上。pull相当于fetch后直接merge,在本地库建立新提交。pull --rebase相当于fetchrebase,在本地库重现远程提交来保证线性历史。可以用git config --global branch.autosetuprebase always来默认使用rebase

1652927529_1_.png

1652927549_1_.png

1652927566_1_.png

1652927577_1_.png

rebase

将整个分支移动到另一个分支,通过将原始分支中的每个提交创建新的提交来实现(如下图),可以保证提交历史的简洁性和线性。-i可以让分支的历史记录更加符合需求。

1652928637_1_.png

merge

建立一个全新的提交来合并两个分支,不会改变已有的提交历史,但是会引入一个新的提交,污染了历史记录。

git push --force

强制更改远程分支使其与本地分支同步,只有当没有其他人在使用这一远程分支时才可以考虑使用,可以有效清除黑历史

posted @ 2022-05-19 11:28  Ηydra  阅读(63)  评论(0编辑  收藏  举报