代码部分我给大家在最后单独整一个页面好看,正文内容里面也有大家可以一边看一用!!!!!!!!!!!!!!!!!!!!

昨天讲了ssh内容,今天讲解git,git是个灰常重要的工具,所以我要给大家先讲一下陌生的git。

先放网上解释:Git 是一种分布式版本控制系统,即,代码的本地克隆就是一个完整的版本控制存储库。 通过这些功能齐全的本地存储库,无论脱机还是远程都能轻松工作。 开发人员会在本地提交其工作,然后再将存储库的副本与服务器上的副本进行同步。 这种范例不同于集中式版本控制,后者要求客户端必须先与服务器同步代码,然后才能创建新版代码。 Git 的灵活性和受欢迎程度使其成为所有团队的绝佳选择。 很多开发人员和大学毕业生都已知道如何使用 Git。 Git 的用户社区创建了各种资源来训练开发人员,而 Git 的受欢迎程度也使得在需要时可轻松获得帮助。 几乎每个开发环境都有在各大主流操作系统上实现的 Git 支持和 Git 命令行工具

貌似有点难懂,我给大家讲个冷笑话方便一下大家的理解吧。

有一天,一个程序员走进了一家咖啡店。他打开电脑,开始写代码。突然,他的电脑屏幕变得一片漆黑。他惊慌失措,不知道发生了什么事情。

这时,一个神秘的声音在他的耳边响起:“不用担心,我在这里!” 声音的主人是一个名为“Git”的虚拟助手。

Git告诉他:“你的代码出现了一些问题,我已经帮你解决了。现在你可以继续工作了。”

程序员非常感激,问:“你是怎么做到的?”

Git回答:“很简单,我使用了一种叫做‘版本控制’的技术。我跟踪了你的代码的变化,一旦出现问题,我就可以回滚到之前的版本,或者合并新的代码。”

程序员听后恍然大悟:“原来如此!我以前一直以为‘Git’只是一个用来跟踪代码变化的工具,没想到它还能帮我解决问题!”

Git笑着说:“是的,我就是你的‘救星’!以后遇到问题,记得找我哦!”

这个笑话通过一个虚拟助手Git的形象,介绍了Git的作用——版本控制。它可以帮助程序员更好地管理代码的变化,避免出现错误和冲突。同时,Git还可以回滚到之前的版本,或者合并新的代码,从而解决代码中出现的问题。

下面我放我的笔记和部分内容的截屏,供大家理解

第五讲 git

代码托管平台:git.acwing.com

0、公钥的添加

如何获得公钥:在家目录下 ssh-keygen然后一直回车,就有公钥了

成功产生公钥后在 家目录 下的 .ssh/ 下,公钥就是id_rsa.pub

1、git基本概念

工作区:仓库的目录。工作区是独立于各个分支的。

暂存区:数据暂时存放的区域,类似于工作区写入版本库前的缓存区。暂存区是独立于各个分支的。

版本库:存放所有已经提交到本地仓库的代码版本

版本结构:树结构,树中每个节点代表一个代码版本。

add可以将修改后的文件放到暂存区,文件变绿表示已经放入暂存区

每次commit后暂存区就会清空

注意删文件rm a.txt b.txt操作也是需要被可持久化并且可以被存在暂存区的(暂存区不仅可以存加文件、修改文件,也可以存删文件操作)(注意不管是加还是删都用add,add不是创建,而是将对文件的操作加到暂存区),例如

rm a.txt b.txt;然后git add a.txt b.txt;再如果git restore --staged a.txt就可以将删除a这个操作从暂存区中去除;然后git restore a.txt就可以将它复原到工作区(因此我们如果不小心将某文件删除,可以回滚);就算将删除操作可持久化commit了,也可以将指针回滚到上一个版本

2、git常用命令(本地)

1、git config --global user.name xxx:设置全局用户名,信息记录在~/.gitconfig文件中

2、git config --global user.email xxx@xxx.com:设置全局邮箱地址,信息记录在~/.gitconfig文件中

3、git init:将当前目录配置成git仓库,信息记录在隐藏的.git文件夹中

4、git add XX:将XX文件添加到暂存区

git add .:将所有待加入暂存区的文件加入暂存区

5、git rm --cached XX:将文件从仓库索引目录中删掉

git restore --staged 与 git rm --cached 的区别,后者是“不希望管理某个文件”,将某个文件从管理的列表中删除(git不一定对每个文件都要管理,untracked file意思是还没有管理它),如果还想加回去,就add即可加回去前者是“我还要管理这个文件,但我只是把它从暂存区里拿了出来”

6、git commit -m "给自己看的备注信息":将暂存区的内容提交到当前分支(也就是说在上一个节点上面再产生一个新的节点,同时HEAD指针移动到这个新的节点)(注意这个备注信息是很重要的)

注意commit不一定要上传所有新修改的文件到下一个版本中;比如有两个文件都被修改了,但只add一个文件到暂存区,然后直接commit

7、git status:查看仓库状态

8、git diff XX:查看XX文件相对于暂存区修改了哪些内容

9、git log:查看当前分支的所有版本

从原先的空节点Empty走到当前节点的路径(从下往上走)

前七个字母就是版本号id

git log --pretty=oneline可以显示成一行

10、git reflog:查看HEAD指针的移动历史(包括被回滚的版本)(也是从下往上看)

在代码库被回滚后就用reflog来查看指针的移动历史,可以看到每一个版本的编号;然后用git reset --hard 版本号来回滚到任意节点

11、git reset --hard HEAD^ 或 git reset --hard HEAD~:将代码库回滚到上一个版本

git reset --hard HEAD^^:往上回滚两次,以此类推

git reset --hard HEAD~100:往上回滚100个版本

git reset --hard 版本号:回滚到某一特定版本

12、(git checkout — XX或)git restore XX:将XX文件尚未加入暂存区的修改全部撤销;并不是回滚到上一个历史版本,而是将工作区的内容回滚到暂存区中的版本,而如果暂存区没有任何内容,就表示头节点指向的这个版本

git restore --staged 如果连暂存区中的都不想用了(staged就是暂存区),可以将文件从暂存区中删出来

因此,我们先 git restore --staged 然后再git restore这个file,直接可以将这个file回滚到上一个版本

以上是关于 本地 的内容(将这些版本都存在了本地的 .git文件夹中);为了减少风险,将它们存到云端,以下是关于 云端origin 的内容

功能:“历史”中可以查看各版本的文件夹;点击“master”可以切换分支;克隆

13、git remote add origin git@git.acwing.com:xxx/XXX.git:将本地仓库关联到远程仓库(注意看这个@前面的就相当于前面ssh中的username,后面的就相当于ssh中的服务器ip地址或者域名)

14、git push -u (第一次需要-u以后不需要):将当前分支推送到远程仓库

git push origin branch_name:将本地的某个分支推送到远程仓库

15、git clone git@git.acwing.com:xxx/XXX.git:将远程仓库XXX下载到当前目录下

以下是关于 分支 的内容

暂存区 与 分支没有任何关系,它与分支是独立的,也就是说不管是master分支还是dev分支都共用一个暂存区;commit时它是看你当前在哪个分支,然后加到哪个分支后面;切换分支不会有多个暂存区

16、git checkout -b branch_name:创建并切换到branch_name这个分支

17、git branch:查看所有分支和当前所处分支

18、git checkout branch_name:切换到branch_name这个分支

19、git merge branch_name:将分支branch_name合并到当前分支上

20、git branch -d branch_name:删除本地仓库的branch_name分支(比如用merge将dev分支合并到master上之后,就可以把dev分支删除了)

21、git branch branch_name:创建新分支

22、git push --set-upstream origin branch_name:设置本地的branch_name分支对应远程仓库的branch_name分支

23、git push -d origin branch_name:删除远程仓库的branch_name分支

24、git pull:将远程仓库的当前分支与本地仓库的当前分支合并(先创建新同名对应分支,然后25,对应,再然后是pull合并,就和云端完全一样了)

git pull origin branch_name:将远程仓库的branch_name分支与本地仓库的当前分支合并(然后本地就比云端多一个分支了)

25、git branch --set-upstream-to=origin/branch_name1 branch_name2:将远程的branch_name1分支与本地的branch_name2分支对应(因此,要先在本地创建一个对应的分支)

26、git checkout -t origin/branch_name 将远程的branch_name分支拉取到本地

27、git stash:将工作区和暂存区中尚未提交的修改存入栈中

28、git stash apply:将栈顶存储的修改恢复到当前分支,但不删除栈顶元素

29、git stash drop:删除栈顶存储的修改

30、git stash pop:将栈顶存储的修改恢复到当前分支,同时删除栈顶元素

31、git stash list:查看栈中所有元素

git其他

注意github上默认主分支是main,而终端一般默认是master

git fetch是将远程仓库内容下载到 本地仓库,工作区不会有变化,git diff origin/main远程仓库名/分支名,就可以看到区别了

touch .gitignore然后在.gitignore中加上要忽略的文件(名字+后缀),比如sex.jpg,然后再git status就看不到图片未追踪提示了(注意不要随便用这个,因为如果一个文件加入到gitignore中了,在某一个分支中将它删除并且commit了,切换回另外一个分支它也不见了)

当非常确定删除一个分支时,d大写即可 git branch -D bad_boy

用 git remote -v 查看 本地仓库和哪些远程仓库有联系(因为刚从github远程仓库复制下来的,就会显示那个github远程仓库的地址)其中,origin表示远程仓库的名字

当要更新到远程仓库使用git push时,显示输入github的用户名密码然后显示出错了,因为2021年已经不支持直接通过账号密码的形式来push代码了,需要我们生成个人访问token

今天就讲到这里,下次争取一次给大家放完,然后开始蓝桥杯备赛之旅!!!!!!!!!!

1、git config --global user.name xxx:设置全局用户名,信息记录在~/.gitconfig文件中

2、git config --global user.email xxx@xxx.com:设置全局邮箱地址,信息记录在~/.gitconfig文件中

3、git init:将当前目录配置成git仓库,信息记录在隐藏的.git文件夹中

4、git add XX:将XX文件添加到暂存区

git add .:将所有待加入暂存区的文件加入暂存区

5、git rm --cached XX:将文件从仓库索引目录中删掉

6、git commit -m "给自己看的备注信息":将暂存区的内容提交到当前分支(也就是说在上一个节点上面再产生一个新的节点,同时HEAD指针移动到这个新的节点)(注意这个备注信息是很重要的)

7、git status:查看仓库状态

8、git diff XX:查看XX文件相对于暂存区修改了哪些内容

9、git log:查看当前分支的所有版本

git log --pretty=oneline可以显示成一行

10、git reflog:查看HEAD指针的移动历史(包括被回滚的版本)(也是从下往上看)

在代码库被回滚后就用reflog来查看指针的移动历史,可以看到每一个版本的编号;然后用git reset --hard 版本号来回滚到任意节点

11、git reset --hard HEAD^ 或 git reset --hard HEAD~:将代码库回滚到上一个版本

git reset --hard HEAD^^:往上回滚两次,以此类推

git reset --hard HEAD~100:往上回滚100个版本

git reset --hard 版本号:回滚到某一特定版本

12、(git checkout — XX或)git restore XX:将XX文件尚未加入暂存区的修改全部撤销;并不是回滚到上一个历史版本,而是将工作区的内容回滚到暂存区中的版本,而如果暂存区没有任何内容,就表示头节点指向的这个版本

git restore --staged 如果连暂存区中的都不想用了(staged就是暂存区),可以将文件从暂存区中删出来

因此,我们先 git restore --staged 然后再git restore这个file,直接可以将这个file回滚到上一个版本

13、git remote add origin git@git.acwing.com:xxx/XXX.git:将本地仓库关联到远程仓库(注意看这个@前面的就相当于前面ssh中的username,后面的就相当于ssh中的服务器ip地址或者域名)

14、git push -u (第一次需要-u以后不需要):将当前分支推送到远程仓库

git push origin branch_name:将本地的某个分支推送到远程仓库

15、git clone git@git.acwing.com:xxx/XXX.git:将远程仓库XXX下载到当前目录下

以下是关于 分支 的内容

暂存区 与 分支没有任何关系,它与分支是独立的,也就是说不管是master分支还是dev分支都共用一个暂存区;commit时它是看你当前在哪个分支,然后加到哪个分支后面;切换分支不会有多个暂存区

16、git checkout -b branch_name:创建并切换到branch_name这个分支

17、git branch:查看所有分支和当前所处分支

18、git checkout branch_name:切换到branch_name这个分支

19、git merge branch_name:将分支branch_name合并到当前分支上

20、git branch -d branch_name:删除本地仓库的branch_name分支(比如用merge将dev分支合并到master上之后,就可以把dev分支删除了)

21、git branch branch_name:创建新分支

22、git push --set-upstream origin branch_name:设置本地的branch_name分支对应远程仓库的branch_name分支

23、git push -d origin branch_name:删除远程仓库的branch_name分支

24、git pull:将远程仓库的当前分支与本地仓库的当前分支合并(先创建新同名对应分支,然后25,对应,再然后是pull合并,就和云端完全一样了)

git pull origin branch_name:将远程仓库的branch_name分支与本地仓库的当前分支合并(然后本地就比云端多一个分支了)

25、git branch --set-upstream-to=origin/branch_name1 branch_name2:将远程的branch_name1分支与本地的branch_name2分支对应(因此,要先在本地创建一个对应的分支)

26、git checkout -t origin/branch_name 将远程的branch_name分支拉取到本地

27、git stash:将工作区和暂存区中尚未提交的修改存入栈中

28、git stash apply:将栈顶存储的修改恢复到当前分支,但不删除栈顶元素

29、git stash drop:删除栈顶存储的修改

30、git stash pop:将栈顶存储的修改恢复到当前分支,同时删除栈顶元素

31、git stash list:查看栈中所有元素

精彩内容

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: