이 글은 git과 github에 대한 소개는 물론 원격 웨어하우스 및 기타 관련 문제를 포함하여 git의 기본 지식 요약에 대한 관련 지식을 제공합니다. 모두에게 도움이 되기를 바랍니다.
실제 작업에서는 예측할 수 없는 많은 문제에 직면하게 됩니다.
문제 1: 요구 사항이 자주 변경됩니다. 예:
함수 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은 각 버전을 저장할 수 있기 때문에 현재 버전을 이전 버전으로 쉽게 전환할 수 있습니다.
질문 2: 파일이 실수로 삭제되어 다시 작성해야 합니다.
회사에서 코드를 조금 썼다가 집에 돌아와서 낮에 작성한 코드는 복사되지 않았습니다.
git을 사용하면 특정 파일을 삭제하여 새 버전을 만들면 쉽게 전환할 수 있습니다. 이전 버전에서는 삭제된 파일을 검색할 수 있습니다.
질문 3: 현재 컴퓨터에서 콘텐츠를 개발한 후, 다른 컴퓨터로 변경한 후에도 여전히 코드를 다시 작성해야 하는 것을 발견했습니다.
git을 사용하는 경우 매번 작성한 코드를 github 웹사이트에 업로드하면 인터넷 연결이 있는 한 다운로드할 수 있습니다. 백업과 동일합니다
질문 4: 직장에서 모두가 작성한 파일은 결국 하나의 큰 파일로 병합해야 하는데, 이 작업에는 매우 지루한 복사 및 붙여넣기가 필요합니다
여러 사람이 개발을 위해 별도로 작업하고 마지막으로 코드를 병합해야 합니다
git Merge 파일을 쉽게 사용할 수 있습니다
git: 분산 버전 관리 도구입니다. 사실 폴더를 관리하는데 사용되는 소프트웨어입니다. 명령을 통해 작동해야 합니다.
github: 파일 저장을 위한 세계적 수준의 오픈 소스 웹사이트. 사용자는 모두 개발자입니다. 나만 사용할 수 있도록 파일을 암호화하도록 선택하거나 모든 사람이 사용할 수 있도록 파일을 오픈 소스로 선택할 수 있습니다. 작가님과도 소통할 수 있어요. Git 도구 업로드만 허용됩니다. 이 웹사이트에는 다른 사람들이 작성한 다양한 언어로 된 많은 코드 파일이 있습니다. 다운로드해야 하는 플러그인이 있으면 이 웹사이트에서 검색할 수 있습니다.
Git은 gitgub의 파일뿐만 아니라 로컬 파일도 관리할 수 있습니다.
로컬 웨어하우스: 자신의 컴퓨터에서 git이 관리하는 폴더
원격 웨어하우스: 온라인으로 관리되는 폴더
푸시: 로컬 콘텐츠를 원격으로 업로드
동기화: 온라인 콘텐츠와 로컬 콘텐츠 결합 일관성 유지
여기서 git bash 사용 - 명령 작업 사용
저장소: 코드를 저장하는 데 사용되는 폴더입니다. 이 폴더는 git 도구에서 관리합니다.
로컬 저장소: 로컬 컴퓨팅에서 git에서 관리하는 폴더
원격 창고: 폴더 원격 서버에서 git으로 관리
Push: 로컬 창고의 내용을 원격 창고에 업로드 - push
Pull(동기화): 원격 창고의 내용 다운로드 로컬 복사본으로 이동 - 로컬 창고를 만들고 원격으로 만들기 일관된 창고
Baidu Netdisk와 유사하지만 코드 파일만 저장할 수 있습니다.
Baidu Tieba와 마찬가지로 친구를 사귀고 팬을 교환하고 좋아요를 누를 수 있습니다...
github.com - 세계 최대의 동성 데이트 웹사이트 - 외국
다운로드 및 설치하고 설치가 성공했는지 확인하세요.
git --version
또는 마우스 오른쪽 버튼을 클릭하면 다음 그림이 나타납니다
git 설치 성공 신호 |
---|
파일 보기
dir
먼저 이 폴더에서 git 명령 관리를 사용하기 전에 관리되는 폴더에서 초기화하세요.
git init
执行结束后,在文件夹中会生成一个 隐藏文件夹 .git;标志着这个文件夹成为了git仓库
초기화 이후, 숨겨진 폴더가 나타납니다 .git
이는 현재 폴더와 그 다음 내용이 모두 git에 의해 관리된다는 의미입니다. git이 폴더를 관리할 때 관리 프로세스는 3가지 영역으로 나뉩니다.
Workspace: 직접 작성한 소스 파일
Workspace 다이어그램 |
---|
版本信息示意图 |
---|
回到指定版本:
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
如果我们希望使用一下别人仓库中的代码,就克隆下来
我已经有过上传的代码了,我想修改代码,但是本地仓库不见了
项目经理做好一个项目的仓库,我需要根据这个仓库中已知的文件进行二次开发
上传到远程仓库:
在github上新建仓库:
使用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 pull
然后手动解决文件冲突
开辟新的分支,然后进行分支合并
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上一个特殊的分支:gh-pages
只要有这个分支,就可以将这个分支中的代码作为一个服务器打开其中的文件。默认打开index.html文件,其他名称的文件需要手动输入。
有了这个分支之后,就可以在这个仓库的setting中,找到打开这个分支中文件的服务器链接。
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分支上。
github上传除了使用https协议上传,也可以使用ssh协议来上传。ssh上传需要配置公钥和秘钥,公钥和秘钥是配置在自己计算机上的,所以使用了ssh之后,只能在当前计算机使用了,不像https上传,在任何电脑上都能上传。
但是ssh上传需要配合秘钥。
秘钥配置:
ssh-keygen -t rsa -C "git全局邮箱"# 敲3次回车
查看git全局配置:
git config --list
秘钥所在文件夹:C:\Users\Admin\.ssh
上面的秘钥,下面后缀为pub的是公钥,需要将公钥配置在github账号中。
打开之后,title项中自定义,key中将公钥文件中的所有内容复制过来。
点击添加按钮后,需要输入密码验证。
此时就将ssh配置好了,后面就可以使用ssh协议进行操作了。
以后就可以使用这个地址进行克隆和上传了。
推荐学习:《Git教程》
위 내용은 git nanny 수준의 교육 노트에 대한 폭발적인 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!