首頁 > 開發工具 > Git > 爆肝總結git保母級教學筆記

爆肝總結git保母級教學筆記

WBOY
發布: 2022-02-08 17:49:54
轉載
2039 人瀏覽過

這篇文章為大家帶來了關於git的基礎知識總結的相關知識,其中包括git和github的簡介以及遠端倉庫等相關問題,希望對大家有幫助。

爆肝總結git保母級教學筆記

Git

在實際工作中,我們會遇到很多無法預料的問題:

問題一:頻繁改需求。例:

開發功能A - V1

新增功能B - V2

#在功能B上新增功能C - 重新寫入功能B,再新增功能C - V3

在功能B上新增功能D - 重新寫功能B,再天新增功能D

项目开发好以后,形成版本v1.0
需求改变:
在v1.0的基础上添加功能A,形成版本v1.1 - 在上个版本的基础上添加功能A
在v1.0的基础上添加功能B,形成版本v1.2 - 在上个版本的基础上删除功能A,添加功能B
在v1.1的基础上添加功能C,形成版本v1.3 - 在上个版本的基础上删除功能B,添加功能A,再添加功能C
在v1.2的基础上添加功能D,形成版本v1.4 - 上个版本的基础上删除功能A,删除功能C,添加功能B,添加功能D
登入後複製

git可以完美解決這個刪除新增的過程。因為git可以將每個版本儲存下來,可以輕鬆的將目前版本切換到之前的某個版本。

問題二:一不小心將檔案刪除了,還需要重新寫。

在公司寫了一丟丟程式碼,回了家,繼續開發,白天寫的程式碼沒有拷貝回來

使用git的話,如果將某個文件刪除,形成新的版本,也可以很輕鬆的切換到先前的版本,將刪除的檔案找回來。

問題三:在目前電腦開發好的內容,換了一台電腦,發現程式碼還需要重新寫

使用git的話,將每次寫好的程式碼,上傳到github網站,只要有網就能下載,相當於備份

問題四:工作中每個人寫好的檔案最後需要合併到一個大檔案中,需要很繁瑣的複製貼上

#多人分工開發,最終需要將程式碼合併起來

使用git可以很輕鬆的進行檔案合併

git和github簡介

git:分散式版本控制工具。其實就是一個軟體,來管理資料夾使用的。需要透過命令操作。

github:世界級的開源網站,儲存檔案使用。使用者都是開發者。文件可以選擇加密,只有自己能用,可以選擇開源,所有人都能用。還可以和作者溝通。只接受git工具上傳。在這個網站上又很多別人寫好的各種語言的程式碼文件,如果有什麼插件需要下載,可以在這個網站上搜尋。

git可以管理本機文件,也可以管理gitgub的文件。

本地倉庫:在自己電腦上被git 管理的資料夾

遠端倉庫:在線上管理的資料夾

推播:將本地的內容,上傳到遠端

同步:將線上的內容和本地內容保持一致

專業術語

使用的是git bash here - 使用命令操作

倉庫:是用來儲存程式碼的一個資料夾,這個資料夾被git工具所管理

本地倉庫:本地計算上被git管理的資料夾

遠端倉庫:遠端伺服器上被git管理的資料夾

推送:將本地倉庫中的內容上傳到遠端倉庫- push

拉取(同步):將遠端倉庫的內容下載到本地一份- 讓本地倉庫和遠端倉庫保持一致

像百度網盤- 但是只能儲存代碼檔案

像百度貼吧- 可以進行交友、互粉、點讚…

github.com - 全球最大的同性交友網站- 國外

本地使用git

下載安裝,偵測是否安裝成功:

git --version
登入後複製

或點選滑鼠右鍵出現下圖也可以

git安裝成功的標誌
爆肝總結git保母級教學筆記

#檢視檔案

dir
登入後複製

爆肝總結git保母級教學筆記

首先要在被管理的資料夾中進行初始化,才能在這個資料夾中使用git指令管理:

git init
登入後複製
执行结束后,在文件夹中会生成一个 隐藏文件夹 .git;标志着这个文件夹成为了git仓库
登入後複製

爆肝總結git保母級教學筆記

初始化後,會出現一個隱藏的資料夾.git,此時代表目前這個資料夾及其以下內容都被git管理了。 git管理資料夾的時候將管理過程分成3個區域:

  1. 工作區:自己寫的來源檔案

    工作區示意圖
    爆肝總結git保母級教學筆記
  2. 暫存區:將要已儲存的文件,暫時存在暫存區

    暫存區示意圖
    爆肝總結git保母級教學筆記
  3. 历史区:生成一个版本,只能将暂存区的内容生成版本。上传的时候只能上传历史区的内容

将源文件添加到暂存区:

git add 文件 # 将单独一个文件添加到暂存区
git add 文件夹/ # 将整个文件夹添加到暂存区(git不管理空文件夹)
git add --all # 将当前文件夹中所有文件和文件夹都添加到暂存区  -  简写:git add .
登入後複製

爆肝總結git保母級教學筆記

查看git管理的文件的状态:

git status
登入後複製

爆肝總結git保母級教學筆記

将暂存区的文件拉回到源文件:

git reset HEAD -- 文件 # 将某个文件从暂存区变为源文件
git reset HEAD -- 文件夹/ # 将整个文件夹从暂存区变为源文件
git reset HEAD -- . # 将所有文件从暂存区变为源文件
登入後複製

爆肝總結git保母級教學筆記

将暂存区的内容生成历史版本:

git commit -m "版本说明"
登入後複製

爆肝總結git保母級教學筆記
working tree clean 工作区是干净的 转移历史区成功!
当将所有暂存区的内容放到历史区的时候,工作区就是赶干净 working tree clean
爆肝總結git保母級教學筆記
注意事项:
不能单独将某一个文件放到历史区,一次性会将所有暂存区的内容放到历史区
只能将暂存区的内容放到历史区,不能跨步骤(将工作区的内容放到历史)操作

初次需要设置自己的邮箱和姓名   输入以下指令
所以解决方法是当出现这个上述提示后 接着补充
你在命令行中执行
git config --global user.email "你的邮箱"
git config --global user.name "你的名字"
(注意 “ 前面是有空格的)
输入完后再接着执行git commit 即可成功!
查看所有版本信息:
登入後複製

爆肝總結git保母級教學筆記

git log
登入後複製

查看版本信息:

版本信息示意图
爆肝總結git保母級教學筆記

回到指定版本:

git reset --hard HEAD^ # 有几个上档键就回退几个版本git reset --hard 历史版本号
登入後複製

删除历史版本:

git rebase -i 指定的历史版本
登入後複製

删除历史版本的坑:

1.删除的时候不能指定要删除的版本,需要指定要删除的版本之前的版本

2.删除命令执行后,会打开一个文件, :wq 敲回车,需要将其中的pick改成drop才能删除成功
3. 打开这个文件以后,是无法进行输入的,需要按 i a s 进入到插入模式
4. 就可以将单词进行修改,保存并退出,按 esc 退出了插入模式,再按 :wq 保存并退出的意思

两个特殊文件

git在进行管理文件夹的时候,不能管理空文件夹,为了避免误会产生,让空文件夹被管理,git提供了一个专业的管理空文件夹的文件 - 名字是固定的:.gitkeep - 将这个文件放到被管理的空文件夹 - 此时的空文件夹被管理了

如果某些文件或文件夹不希望被git管理,就可以设置一个黑名单,让这个文件或文件夹被忽略掉,此时git提供了一个文件叫 .gitignore 这个文件就可以设置黑名单 将需要被忽略掉的文件的路径写在这个文件中

让git能管理一个空文件夹:

在空文件夹中新建文件:.gitkeep,这个文件没有实际意义,这是为了占位,让空文件夹能被管理的标识,以后要在文件夹中写文件的时候,这个文件可以被删除

让某些文件或者文件夹被忽略管理:

在和.git同级的位置,新建文件:.gitignore,在这个文件中书写要忽略的内容:

直接写文件名,代表要忽略的是哪个文件
写文件夹路径,表示要忽略的是哪个文件夹
*.后缀,表示要忽略的是所有后缀为指定后缀的文件
登入後複製

远程操作

创建仓库的时候,可以选择初始化,也可以选择不初始化

不初始化

在本地创建仓库,放到暂存区,形成历史区

让本地仓库和远程仓库之间建立连接

git remote add origin https://gitee.com/web_wang_wu/good-man.git

origin是一个变量,可以自定义

将本地仓库的内容上传到远程仓库:

git push -u origin master

需要输入账号密码:注册使用的邮箱以及密码

当下次再次上传的时候,就不需要输入账号密码了,因为windows已经将这次输入的账号密码保存起来了

账号密码存储在计算机的 “凭据管理器” 中 ,可以删除

并且我们下次上传的时候,只需要执行命令:

git push

选择初始化

相当于远程仓库中已经有内容了
首先,必须先将这个仓库给本地克隆一份
git clone 远程仓库地址 // 远程仓库地址后,有一个可选项,代表克隆到本地的文件夹名称
就在这个文件夹中,进行本地操作,要上传到远程
git push
如果我们希望使用一下别人仓库中的代码,就克隆下来

我已经有过上传的代码了,我想修改代码,但是本地仓库不见了

项目经理做好一个项目的仓库,我需要根据这个仓库中已知的文件进行二次开发

爆肝總結git保母級教學筆記

远程仓库

上传到远程仓库:

在github上新建仓库:

爆肝總結git保母級教學筆記

| [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pyFfquEl-1622645729955)(media/1568646397296.png)] |](https://img-blog.csdnimg.cn/20210602230131213.png)

使用https上传:

添加上传地址:

git remote add origin https://github.com/weberWangjie/test.git # 其中的origin是变量名表示上传地址,可以自定义
登入後複製

开始上传:

git push -u origin master # 其中的origin是表示地址的那个变量名
登入後複製

首次推送远程需要输入用户名和密码。

第二次上传的时候只需要:git push

将远程代码拉取到本地:(要先新建一个文件夹作为git管理的文件夹)

git clone 远程仓库地址
登入後複製

将本地代码和远程代码同步:(在本地仓库使用命令)

git pull
登入後複製
登入後複製

分支

一个大项目,会分很多人开发,每个人一个功能,这时候,每个功能作为一个分支,主分支只有目录结构。当所有人将自己负责的功能开发完成的时候,再将所有分支合并到主分支上,形成一个完整的项目。

每次初始化一个git的时候,默认创建一个主要分支:master

创建分支:

git branch 分支名
登入後複製

查看当前分支:

git branch
登入後複製

切换分支:

git checkout 分支名
登入後複製

创建并切换到这个分支:

git checkout -b 新分支名
登入後複製

合并分支:(将别的分支合并到自己分支)

git merge 要合并的分支
登入後複製

删除分支:(不能自己删自己)

git branch -D 要删除的分支
登入後複製

冲突

在项目开发阶段,有两个人同时操作一个仓库,最终总会有一个人先上传, 一个人后上传,先上传的能成功,后上传的不能成功

因为,git远程仓库中,任何一个版本的形成,都需要从上一个版本 作为基础 再形成新的版本
如果推送不成功,就需要在本地先有远程的版本2,然后再形成版本3,推送才能成功

同步/拉取

git pull // 让本地先跟远程保持一致,然后再次推送新版本
远程仓库中,任何一个新版本,都必须是基于上一个版本形成的,跳版本形成:李四 - 1~3 必须是2~3

同步:

在本地新建一个跟远程分支同名的分支名,本地切换过去,git pull

失败,提示命令:

git branch --set-upstream-to=origin/远程的分支名 本地的分支名

继续git pull

提交:

在本地新建了分支,希望推送到远程仓库,失败,提示命令:

git push --set-upstream origin 远程的分支名

git add .

git commit -m “版本描述” # 为了避免代码丢失,一定要写完以后 commit一下

git push

git pull

git clone 远程仓库地址

远程分支操作 - 给别人提交

爆肝總結git保母級教學筆記

两个人同时操作同一个分支,提交的时候会有先后顺序,先提交的人正常提交了,后一个人提交的时候会产生冲突。因为git规定,每次提交必须是在原来的版本基础上,但是第二个人在提交的时候,在远程已经有了第二个版本,所以第二个人相当于从第一个版本向第三个版本提交。如下图:

git冲突示意图
爆肝總結git保母級教學筆記

爆肝總結git保母級教學筆記

冲突解决:

  1. 使用命令让本地和远程同步:

    git pull
    登入後複製
    登入後複製

    然后手动解决文件冲突

  2. 开辟新的分支,然后进行分支合并

    git fetch origin master:tmp # 使用 fetch 获取远程最新信息并开辟一个临时分支
    git diff tmp # 将当前分支和远程分支进行对比
    git merge tmp # 将临时分支合并到当前分支
    登入後複製

历史版本回滚的冲突

本地先形成版本1

本地再形成版本2

上传到远程

本地回滚到版本1

再次形成版本1·2

再次上传

报错

因为远程仓库只有一条时间线,但本地有两条,解决:

先拉取,解决冲突问题

再次上传

分支远程操作

默认不能提交其他分支,因为,远程默认提交为master分支。

如果非要提交其他分支:

git --set-upstream push origin 分支名 # 将以前记录的-u默认的master改为新的分支名
git push origin 分支名 # 临时提交,不改默认的master
登入後複製

本地跟远程仓库进行除了master分支之外的分支,进行推送、同步,多执行一个命令,报错提示的命令。

删除远程分支:

git push origin --delete 将要删除的分支名
登入後複製

github服务器分支

github上一个特殊的分支:gh-pages

只要有这个分支,就可以将这个分支中的代码作为一个服务器打开其中的文件。默认打开index.html文件,其他名称的文件需要手动输入。

有了这个分支之后,就可以在这个仓库的setting中,找到打开这个分支中文件的服务器链接。

爆肝總結git保母級教學筆記

爆肝總結git保母級教學筆記

分支命名规范

master是主分支,创建仓库的时候默认生成。不接收任何上传,只接收dev分支合并的内容,这个分支只存储每一次开发过程中经过测试合格的代码。

dev是开发主分支,也可以说development/deve,初始化项目后,从master分支上开辟的新分支。这个分支也不接受任何代码提交,只接收主功能分支合并的内容。当dev分支上的代码测试通过以后,会被合并到主分支上。

feature-XXX是主功能分支,是从dev分支上开辟出的分支,进行各个功能的开发,开发完成后合并到dev分支上进行测试,这些分支接收开发的代码提交。

feature-XXX-fix-XXX是功能bug解决分支,在项目运行过程中,出现的bug进行修复,是从功能分支上开辟出来的,修改完毕后合并到功能分支上,再由功能分支合并到dev分支上。

hot-fix-XXX是紧急bug修复分支,直接从master上开辟,修复紧急bug后,直接合并到master分支上。

SSH提交配置秘钥

github上传除了使用https协议上传,也可以使用ssh协议来上传。ssh上传需要配置公钥和秘钥,公钥和秘钥是配置在自己计算机上的,所以使用了ssh之后,只能在当前计算机使用了,不像https上传,在任何电脑上都能上传。

但是ssh上传需要配合秘钥。

秘钥配置:

ssh-keygen -t rsa -C "git全局邮箱"# 敲3次回车
登入後複製

查看git全局配置:

git config --list
登入後複製

秘钥所在文件夹:C:\Users\Admin\.ssh

爆肝總結git保母級教學筆記

上面的秘钥,下面后缀为pub的是公钥,需要将公钥配置在github账号中。

爆肝總結git保母級教學筆記

爆肝總結git保母級教學筆記

打开之后,title项中自定义,key中将公钥文件中的所有内容复制过来。

点击添加按钮后,需要输入密码验证。

此时就将ssh配置好了,后面就可以使用ssh协议进行操作了。

爆肝總結git保母級教學筆記

以后就可以使用这个地址进行克隆和上传了。

推荐学习:《Git教程

以上是爆肝總結git保母級教學筆記的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
git
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板