从B站搜到的尚硅谷视频学习了Git,记录了一下学习的内容,收获很大
学习地址:
https://www.bilibili.com/video/BV1vy4y1s7k6?p=11&share_source=copy_web
免费开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目
易于学习,占地面积小,性能极快。具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于Subversion 、CVS、Perforce和ClearCase 等版本控制工具
什么是版本控制?
版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统
版本控制最重要的是可以记录文件修改历史记录,从而让用户能够看到历史版本,方便版本切换
(情景:自己在写东西时,不确定修改后的下一版本是否比上一个版本好,这时候就需要退回上一个版本,把每个版本的文件都另存一份,就能轻松退回上一个版本,就能实现一个简单的版本控制)
为什么要用到版本控制工具?
个人开发过渡到团队协作
(情景:在团队协作开发的时候,甲乙两个同学都需要修改自己那部分内容,他们将原先的内容从公司的服务器上下载下来,然后进行修改,修改完成时,如果甲乙都上传文件并覆盖,那么必定有一个同学的被另一个同学的替换掉,这时候就需要版本控制工具,来将两个人修改的结合起来)
版本控制工具
集中式版本控制工具
CVS、SVN(Subversion)、VSS…
都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们通过客户端连接到这台服务器,取出最新的文件或者提交更新。
好处:每个人都可以在一定程度上看到项目中其他人正在做什么,管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来的轻松容易
坏处:中央服务器的单点故障。如果服务器一小时不能工作,那么这一个小时内,谁都无法提交更新,也就无法协同工作.
分布式版本控制工具
Git、Mercurial、Bazaar、Darcs…
每台客户端就是一个代码库,每个人在自己的本地计算机上做版本控制,在写代码之前,要把远程库上的代码克隆下来到自己的本地库,然后基于自己的本地库做版本控制,在自己的电脑上写好后,再推送到远程库,就算远程库没了,也可以再自己电脑上做版本控制。
优点:每个人手上都有一份完整的,包含历史记录的代码
Git工作机制
工作区(代码存放的本地目录) ——【通过git add
命令添加到暂存区】—— 暂存区(在工作区写代码后,添加到暂存区,暂存区的代码是可以删除和修改的) ——【通过git commit
命令提交到本地库,本地库的代码是不能删除和修改的】—— 本地库 ——【通过git push命令推送到远程库】——远程库
Git和代码托管中心
代码托管中心是基于网络服务器的远程代码仓库
Git官网:Git (git-scm.com),可以在搜索引擎直接搜,通常第一个就是Git
下载安装步骤:
进入官网后,点击右边的小电脑上面的Download for Windows,电脑就能自动下载Git
下载完成后打开Git安装文件
协议界面直接下一步
选择好安装目录后下一步
Select Components选项内容勾选(使用默认的就行,然后直接下一步):
-Additional icons //创建快捷方式
--On the Desktop //桌面上
-Windows Explorer integration //右键菜单 ✔
--Git Bash Here //Git的命令行客户端 ✔
--Git GUI Here //Git的GUI客户端(图形化界面) ✔
-Git LFS (Large File Support) //大文件的支持 ✔
-Associate .git* configuration files with the default text editor //配置默认编辑器 ✔
-Associate .sh files to be run with Bash //关联.sh格式文件 ✔
-Check daily for Git for Windows updates //每天检查Git是否使用Windows更新
-(NEW!)Add a Git Bash Profile to Windows Terminal //(新!)将 Git Bash 配置文件添加到窗口终端
Select Start Menu Folder选择开始菜单的位置,下一步
Choosing the default editor used by Git选择默认编辑器,根据自己的情况而定 下一步(视频里用的Vim,也可以用自己熟悉的编辑器)
Adjusting the name of the initial branch in new repositories是否要修改初始化分支的名字 默认让Git决定就行 下一步
-Let Git decide //让Git决定,以后无论创建哪个库,都是用master作为名字(默认)
-Override the default branch name for new repositories //自定义初始化分支名字
Adjusting your PATH environment是否要修改环境变量 根据自己的情况而定 下一步
-Use Git from Git Bash only //只在Git Bash客户端里面使用Git(不会修改环境变量)(默认)
-Git from the command line and also from 3rd-party software //可以在Git Bash里面使用Git,也可以在第三方软件的控制台等里面使用Git
-Use Git and optional Unix tools from the command Prompt //会修改掉一些Windows工具(一般不选这个)
Choosing HTTPS transport backend选择后台客户端连接协议,默认OpenSSL就行了 下一步
-Use the OpenSSL library //使用OpenSSL协议进行连接
-Use the native Windows Secure Channel library
Configuring the line ending conversion配置行末换行符 默认选第一个就行 下一步
-Check Windows-style ,cimmit Unix-style line endings //自动选择样式
-Checkout as-is ,commit Unix-style line endings
-Checkout as-is ,commit as-is
Configuring the terminal emulator to use with Git Bash配置Git Bash终端类型 默认选第一个就行 下一步
-Use MinTTY(the default terminal of MSYS2)
-Use Windows' default console window //这个需要用dos命令
**Choose the default behavior of git pull
**选择默认的从远程库拉取代码到本地库的行为 默认就行 下一步
-Default(fast-forward or merge)
-Rebase
-Only ever fast-forward
Choose a credential helper凭据管理器 选第一个 下一步
-Git Credential Manager Core //选择跨平台的凭据管理器
-Git Credential Manager //选择windows的凭据管理器
-None
Configuring extra options其他配置
-Enable file system caching //使用文件缓存机制,默认勾选
-Enable symbolic links //使用符号连接,勾选
Configuring experimental options 实验室功能 视频中不勾选 然后安装
-Enable experimental support for pseudo consoles //允许在Git Bash里面运行第三方程序
-Enable experimental built-in file system monitor //启用实验内置文件系统监视器 (自动允许内置文件系统监视器,以加快包含许多文件的工作树中的常见操作,如`git status` ,`git add`,`git commit`等 这个视频中的Git版本没有,应该可以勾选
然后就安装完成了,安装完成后在桌面右击可以看到Git的快捷菜单
命令名称 | 作用 |
---|---|
git config --global user.name 用户名 | 设置用户签名 |
git config --global user.email 邮箱 | 设置用户签名 |
git init | 初始化本地库 |
git status | 查看本地库状态 |
git add 文件名 | 添加到暂存区 |
git rm --cached 文件名 | 删除暂存区文件 |
git commit -m “日志信息” 文件名 | 提交到本地库 |
git reflog | 查看历史记录 |
git reset --hard 版本号 | 版本穿梭 |
鼠标右击Git Bush Here
输入下面的命令并回车(用户名和邮箱输入自己定的用户名和邮箱)
git config --global user.name 【这里写用户名】
git config --global user.email 【这里写邮箱】
完成后可在用户C盘的用户目录下找到.gitconfig 里面存有自己的用户签名
说明:签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的.Git首次安装必须设置一下用户签名,否则无法提交代码
注意:这里的用户签名和将来登录GitHub(或其他代码托管中心)的账号没有任何关系
git init
然后回车初始化好的本地库,就可以查看本地库的状态了,使用命令git status
就可以查看了
什么项目都没有创建的情况下 会显示
On branch master
No commit yet
nothing to commit (create/copy files and use "git add" to track)
可以创建一个文件在里面
然后再用git status
这时候会显示(发现一个未被追踪过的文件,需要用git add
命令添加暂存区)
On branch master
No commit yet
Untracked files:
(use "git add ..." to include in what will be committed)
hello.txt
nothing added to commit but untracked files present (use "git add" to track)
输入命令git add 【这里输入文件名】
我的是git add hello.txt
,就把文件存到暂存区
warning: LF will be replaced by CRLF in hello.txt.
The file will have its original line endings in your working directory
用git rm --cached 【文件名】
可以删除暂存区的内容,git rm --cached hello.txt
删除后可以再用git add 【文件名】
添加到暂存区
使用命令git commit -m "日志信息" 文件名
将暂存区的文件提交到本地库,形成自己电脑上的历史版本
git commit -m “first commit” hello.txt
执行后再允许 git status 会显示
On branch master
nothing to commit, working tree clean
可以通过 git reflog
查看历史记录,输入后会显示
c5b235a (HEAD -> master) HEAD@{0}: commit (initial): first commit
//其中的前7位是缩减版的版本号,是版本号的前七位
//(HEAD -> master)代表指针指向当前版本
可以通过git log 查看版本的详细信息,输入后会显示
commit c5b235add282638e3f41d30ed3ebc2bb7a676f6e (HEAD -> master) //版本号
Author: zqq <[email protected]>
Date: Mon Jul 19 16:29:03 2021 +0800
first commit
修改自己的文件,修改完保存,然后输入命令git status
,会显示
On branch master
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git restore ..." to discard changes in working directory)
modified: hello.txt
no changes added to commit (use "git add" and/or "git commit -a")
//检测到文件被修改了,需要重新添加暂存区,提交本地库
使用git add hello.txt
和 git commit -m "second commit" hello.txt
之后 显示如下
warning: LF will be replaced by CRLF in hello.txt.
The file will have its original line endings in your working directory
[master 622bb3c] second commit
1 file changed, 1 insertion(+), 1 deletion(-)
此时输入git log
就可以查看历史版本的详细信息,如下
commit 622bb3c70c8270ff345b61856c77787e8c77d10e (HEAD -> master)
Author: zqq <[email protected]>
Date: Mon Jul 19 16:41:51 2021 +0800
second commit
commit c5b235add282638e3f41d30ed3ebc2bb7a676f6e
Author: zqq <[email protected]>
Date: Mon Jul 19 16:29:03 2021 +0800
first commit
使用 git reset --hard 【版本号(前七位就行)】
先使用git reflog
查看版本信息,显示
622bb3c (HEAD -> master) HEAD@{0}: commit: second commit //此时指向的是第二个版本
c5b235a HEAD@{1}: commit (initial): first commit
然后使用git reset --hard c5b235a
,此时指向第一个版本,此时会发现目录下文件的内容也变成了第一个版本的内容,用git reflog
命令显示如下
c5b235a (HEAD -> master) HEAD@{0}: reset: moving to c5b235a
622bb3c HEAD@{1}: commit: second commit
c5b235a (HEAD -> master) HEAD@{2}: commit (initial): first commit //此时指向的是第一个版本
能从第二个版本切到第一个版本,同时也可以再切回第二个版本,切完以后会改变提交的文件内容
在版本控制过程中,同时推进多个任务,可以为每个任务创建单独的分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行,(情景:可以想象成副本,主分支的已经上线使用,然后需要加入新的功能的时候,把主分支的内容拷贝下来,作为一个分支,新的内容在这个分支上开发完以后,再将新分支合并到主分支)
命令名称 | 作用 |
---|---|
git branch 分支名 | 创建分支 |
git branch -v | 查看分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 把指定的分支合并到当前分支上 |
查看分支
命令 git branch -v
可以查看分支,结果如下
master c5b235a first commit
创建分支
命令git branch 【分支名】
可以创建分支,git branch hot-fix
后git branch -v
结果如下
hot-fix c5b235a first commit
* master c5b235a first commit
切换分支
git后面还是master,说明当前还是master分支
使用git checkout 【分支名】
可以切换分支 先 git checkout hot-fix
然后git branch -v
,可以看到切换到了 hot-fix 分支
* hot-fix c5b235a first commit
master c5b235a first commit
修改分支
切换完分支以后,就可以修改工作区的内容(.git文件所在目录下)
修改完以后,需要git add 【文件名】
git commit -m "【版本信息】" 【文件名】
我这边是 git add hello.txt
git commit -m "hot-fix first commit" hello.txt
然后git reflog
, 可以看到指向了hot-fix分支
a6f5eea (HEAD -> hot-fix) HEAD@{0}: commit: hot-fix first commit
c5b235a (master) HEAD@{1}: checkout: moving from master to hot-fix
c5b235a (master) HEAD@{2}: reset: moving to c5b235a
622bb3c HEAD@{3}: commit: second commit
c5b235a (master) HEAD@{4}: commit (initial): first commit
合并分支
想把hot-fix 合并到master分支,需要先切换到master分支,然后再master分支下执行命令git merge hot-fix
,就可以把hot-fix 合并到master分支下
我这边是git checkout master
切换完以后发现.git目录所在目录的hello.txt文件内容又变成了之前master的内容,然后git merge hot-fix
,此时发现分支合并了,hello.txt文件的内容变成了hot-fix的内容
产生冲突
合并分支时,两个分支在同一个文件的同一位置有两套完全不同的修改。Git无法替我们决定使用哪一个,必须人为决定新代码内容
先修改master分支文件的内容
git add hello.txt
后 git commit -m "master test" hello.txt
再修改hot-fix分支文件的内容
git checkout hot-fix
后 git add hello.txt
后 git commit -m "master test" hello.txt
此时执行 git checkout master
切换master,然后合并 git merge hot-fix
,会显示如下内容
Auto-merging hello.txt
CONFLICT (content): Merge conflict in hello.txt
Automatic merge failed; fix conflicts and then commit the result.
此时执行命令git status
,会提示两个文件都修改了,就需要手动合并代码
On branch master
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add ..." to mark resolution)
both modified: hello.txt
no changes added to commit (use "git add" and/or "git commit -a")
解决冲突
出现冲突合并失败后,打开hello.txt文件,会再文件中标记出来,手动将文件中的内容合并,然后删除下面的合并提示```<<<<<<< HEAD``及其后面的内容都是合并提示,修改完以后保存,然后添加到暂存区,提交到本地库,(master|MERGING)状态下,提交时不用写文件名,实现手动合并
git add hello.txt
添加到暂存区 git commit -m "merge test"
然后就手动合并成功了
团队中甲本地库写好了基础代码以后,用push命令推送 到远程库
团队中乙拥有甲授予的权限,乙从远程库clone代码下来进行拓展修改,完成后push到远程库
甲再从远程库中用pull命令拉取远程库中修改过的代码,这样就实现了团队代码的同步
A团队中的代码遇到解决不了的问题,请求B团队帮忙
B团队的
人通过fork命令作为分支,将A团队的远程库代码复制过来,作为自己的远程库
B团队从自己的远程库clone下来,然后再自己本地库进行修改,完成后push到自己的远程库
B团队完成后,需要pull request向A团队发送一个请求,然后A团队审核
A团队审核后,使用merge将代码合并过来,然后用拉取到本地库,实现跨团队协作
GitHub官网https://github.com
1.登录GitHub后,点击网页右上角的+号,选择 new Repository(新建存储库)
2.远程库的名字和本地库的名字最好相同,(本地库的名字指.git文件夹所在的文件夹名)
输入好远程库名称后,会自动检测是否可用
3.公有库私有库的选项,因为是测试,默认用公有库就行
4.直接点最下方的Create repository,就创建好了一个远程库
5.此时会弹出一个页面,可以选择远程库的链接,有两种不同协议的链接 HTTPS 和 SSH
我们先用HTTPS的链接,可以直接点后面的按钮复制链接
https://github.com/zqq2017123491/git-demo.git
查看远程库链接别名的命令git remote -v
,此时是没有别名的
创建远程库链接别名的命令
git remote add git-demo https://github.com/zqq2017123491/git-demo.git
此时查看别名,结果如下:(出现两个别名,说明这个别名既可以拉取,也可以推送)
git-demo https://github.com/zqq2017123491/git-demo.git (fetch)
git-demo https://github.com/zqq2017123491/git-demo.git (push)
基本语法git push 别名 分支
比如我把master分支推送,那就git push git-demo master
执行后会弹窗让我们登录,可以用浏览器的账号登录,登录后会提示我们认证
绑定后会提示Authentication Succeeded,认证成功,Git Bash会显示如下
Enumerating objects: 24, done.
Counting objects: 100% (24/24), done.
Delta compression using up to 8 threads
Compressing objects: 100% (16/16), done.
Writing objects: 100% (24/24), 1.84 KiB | 471.00 KiB/s, done.
Total 24 (delta 7), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (7/7), done.
To https://github.com/zqq2017123491/git-demo.git
* [new branch] master -> master
然后就可以在github的库里看到自己推送的文件了
在github上可以直接点文件右上角的修改文件内容, 改完以后需要在下方的commitchanges里面输入版本信息然后提交,这样就可以开始pull的尝试了
代码拉取的命令 git pull 链接别名 分支
,我这里是git pull git-demo master
,结果如下,此时打开.git所在目录的文件就能看到改完后的内容了,说明拉取成功
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 671 bytes | 5.00 KiB/s, done.
From https://github.com/zqq2017123491/git-demo
* branch master -> FETCH_HEAD
26143e9..0e77469 master -> git-demo/master
error: could not spawn fsmonitor--daemon in the background
Updating 26143e9..0e77469
error: could not spawn fsmonitor--daemon in the background
Fast-forward
hello.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
项目搭建好后,同一个团队的其他人可以通过Clone来获取代码,在尝试Clone之前先删除windows凭据管理器下github的账号信息,Clone代码是不需要登录账号的,Clone需要先知道远程库的链接
在windows开始菜单搜索框搜索 “凭据管理器”,然后删除github的登录凭据
新建一个文件夹,在里面右击打开Git Bush
执行命令git clone 【远程库链接】
git clone https://github.com/zqq2017123491/git-demo.git
结果如下
Cloning into 'git-demo'...
remote: Enumerating objects: 27, done.
remote: Counting objects: 100% (27/27), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 27 (delta 8), reused 23 (delta 7), pack-reused 0
Receiving objects: 100% (27/27), done.
Resolving deltas: 100% (8/8), done.
此时会发现刚才创建的目录下多了一个文件夹,打开后就是.git所在的目录
使用git remote -v
可以查看链接别名
结果如下
origin https://github.com/zqq2017123491/git-demo.git (fetch)
origin https://github.com/zqq2017123491/git-demo.git (push)
创建远程库的人邀请团队成员
在GitHub打开远程库,然后点击右上方的设置菜单
选择左侧的Manage access
点击Invite a collaborator
输入团队人的用户名或者邮箱,会自动弹出用户,选中就可以了
然后再最底下点击Pending Invite邀请用户,就可以获取一个邀请链接
https://github.com/zqq2017123491/git-demo/invitations
团队成员接受邀请,推送修改的内容
登录团队成员的账号
然后在浏览器中打开邀请链接
点击Accept invitation 接受邀请
然后就可以在修改文件内容后,登录团队成员的账号 进行推送了
执行git add hello.txt
执行git commit -m "other test push" hello.txt
执行git push origin master
同样需要登录认证
结果如下:(然后团队内的成员就都能在github中看到内容了)
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 290 bytes | 290.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/zqq2017123491/git-demo.git
0e77469..90b33e0 master -> master
创建远程库的人拉取修改后的文件
先将凭据管理器中成员的github账号删除
在github上登录创建远程库的账号
打开之前的文件夹
右击打开Git Bash
执行 git pull 【链接】 【分支】
我这边是 git pull git-demo master
,执行结果:
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (1/1), done.
remote: Total 3 (delta 1), reused 3 (delta 1), pack-reused 0
Unpacking objects: 100% (3/3), 270 bytes | 1024 bytes/s, done.
From https://github.com/zqq2017123491/git-demo
* branch master -> FETCH_HEAD
0e77469..90b33e0 master -> git-demo/master
error: could not spawn fsmonitor--daemon in the background
Updating 0e77469..90b33e0
error: could not spawn fsmonitor--daemon in the background
Fast-forward
hello.txt | 1 +
1 file changed, 1 insertion(+)
然后就能使创建远程库的那个工作区和远程库的同步了
想要和其他团队合作,登录账号后,打开其他人团队的远程库连接地址,或者通过搜索的方式找到远程库,然后点击右上方头像下面的Fork
,就可以在自己账号上创建一个同样的远程库,可以clone下来修改,也可以直接在GitHub里面改,完成后选择上方的Pull requests菜单,点击Create pull request按钮,可以输入标题和评论,就完成了请求,然后点Create pull request,等待对方团队审核
对方团队登录后,也要点击Pull requests菜单,查看修改的内容,进行审核,审核通过以后,点击上面的conversation菜单,点Merge pull request按钮然后点Confirm merge,合并到自己的项目中,就合并完成
远程仓库的Code下拉框里,还有一个SSH连接
先打开自己电脑C盘 "用户"文件夹,在"用户"文件夹下,找到自己电脑用户的文件夹打开
如果里面有.ssh,先删除
然后右击 Git Bash Here
输入命令 ssh-keygen -t rsa -C 【描述内容】
,输入完成后,按几下回车
ssh-keygen 是生成免密登录协议
-t 指定用哪种加密算法来生成,这边的rsa是一种非对称加密算法
-C 描述,自己定,可以用来描述这个免密登录协议是给哪个账号的
敲完结果如下
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/99152/.ssh/id_rsa):
Created directory '/c/Users/99152/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/99152/.ssh/id_rsa
Your public key has been saved in /c/Users/99152/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:qDF2Aiqfrrw+VW2xFvJRBedxCgeIFUm3C+vAZzqHkoM coderZqq
The key's randomart image is:
+---[RSA 3072]----+
| ++=*+= . |
| o *. * + |
| . +.=. o |
| . ... Bo . |
|o *o=+S. |
|...+.*B |
| E++.+ o |
|.o o o |
|o=+ |
+----[SHA256]-----+
此时发现目录下生成了一个.ssh文件夹,里面有一个私钥和一个公钥,复制公钥(id_rsa.pub)里面的内容
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDBdkPYGxBXWLc1zlvy+d2CKB6CHJJgVeN3txMwEYB2gAKb9glPcee40CCO7oYX0ih/aeJ8Akek1Bh+rkHku7JjkAdmFNCG3dtU8NqjnPF1yXcpB8saKP9ixbYEO9MqZUd2GQmTUN8e59orLSLDjXLnV4FqH9X0+g/GIPvEasB8n6LRc8LHcvXn3dTvgMIIaoI6V7CT2fu8Wa8nQod5KHioNxL25rULz72jt90BLVavbMyqvEz21j84DDWrTjxQgK0wYJP+kvLkNZbGH2bJyKopYLKoSh8SJPEZg6EpsyYniAiy1P76IMX/t3CIhEIxLPKXo3ugBN6lnAg9N6lZDP3QqmBM9ezMKB9sQZdh9/oXNUltinTMWXs4O+voqP3tvQsDsMryYxjO/Lsj0zfJBPFsxi9OBqP09KKB1mLNbnUi65eSAZp08W6ziD48hijsX74wmuGPUg3wDomBdKpmwO/EhKazTZkzxsUl+YKhyrNHQM/1bKyzONiwcmwhtiqAhMM = coderZqq
登录GitHub,点击头像下拉菜单,选择Settings,然后选择左侧菜单栏中的SSH and GPG keys
点击New SSHkey,随便起个名字,然后再key里面粘贴公钥
打开本地工作区的目录(.git所在目录),右击打开git-demo
执行命令 git pull 【ssh链接】
我这边是git pull [email protected]:zqq2017123491/git-demo.git
,得到如下结果,输入yes回车
The authenticity of host 'github.com (13.229.188.59)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?
然后能得到如下结果,此时可以发现工作区(.git所在目录)的文件内容已经拉取好了,可以修改其中的内容,然后在push试一下
修改完内容,然后执行命令git add hello.txt
然后 git commit -m "coderZqq commit" hello.txt
然后git push [email protected]:zqq2017123491/git-demo.git master
结果如下,到Github上检查一下,修改成功!
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 291 bytes | 291.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To github.com:zqq2017123491/git-demo.git
0f0b69a..34de50c master -> master
为什么要忽略他们?
与项目实际功能无关,不参与服务器上部署运行。把它们忽略掉能屏蔽IDE工具之间的差异
怎么忽略?
创建忽略规则文件 xxxx.ignore(前缀名随便起,建议是git.ignore)
需要在c盘的用户目录下,找到自己的用户文件夹,在里面创建一个git.ignore文件,记事本打开,将下面内容复制进去并保存(要忽略的文件)
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml
然后打开用户目录下的.gitconfig文件里面进行配置(在后面加入两行内容,路径根据自己的路径来写)
[core]
excludesfile = C:/Users/99152/git.ignore
注意:这里路径用的是"/" 不是"\"
保存后就配置完成
打开IDEA,创建一个Maven工程
打开file——Settings ,找到Version Control,找到Git,然后再第一行设置下Git的安装目录
找到Git的安装目录的bin目录下的git.exe,然后点OK,然后点Test,此时会有个弹窗,说明IDEA已经定位到Git程序,然后点OK就行
点击IDEA上方菜单的VCS——import into Version Control——Create Git Respository
选中的目录就是当前项目的根目录然后点OK,此时右击项目,就能看到Git,并且pom.xml文件变红了,代表文件未被追踪,可以在pom.xml文件右击,选择Git——Add,就能添加到暂存区
此时可以创建一个类,会自动提示是否需要将文件添加到暂存区
写完类以后,可以将这个类添加到暂存库,也可以把整个项目添加到暂存库
点击添加时,会询问是否提交忽略文件,点取消
添加完后,会自动追踪到文件,后面修改文件可以直接点提交
点击提交,在Commit Message里面输入版本信息,就可以提交
提交完成后,可以在IDEA下方的Version Control中,Log里面查看已经提交的版本,选中某一个版本可以查看版本的详细信息
提交多个版本后,可以在Log里面查看,然后选中一个版本右击,选择Checkout Reversion,就可以切换到选中的版本
法1:右击项目名,选择Git,找到Repository,选择Branches,然后点击New Branches,创建分支
法2:点击IDEA右下角,有个Git:master,同样点击New Branches ,创建分支
创建完以后,右下角就从master变成你的分支名
切换分支,可以通过右下角的Git:分支名,然后选择想要切换的分支,Checkout,进行切换
修改完自己创建的分支后,提交到本地库,在下方的Log可以看到黄色的头指针在自己新创的分支上
切换到master分支,然后点击右下角的Git:分支,选择刚才创建的分支,然后选Merge into current,就能合并分支。
在创建和修改了新分支的内容,同时修改了master分支的内容,就会产生冲突,可以在合并时弹出来的页面进行修改,点击左右两边的箭头合成
在IDEA的Settings里面找到Version Control 里面的GitHub(没有可以直接在Plugins里面下载),点击里面的Add account,登录GitHub
登录不上可以点击Enter token ,需要先去GitHub申请个Token
在GitHub官网,点击头像下拉,选择Settings,Developer settings,找到Personal access tokens
Generate new token将口令的权限打满,生成完以后把口令复制下来
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
然后就可以通过个人口令来登录GitHub了
IDEA可以直接点击VCS菜单中的import into Version Control ,Share Project On GitHub将项目分享到GitHub,(不需要在GitHub中创建远程库,他会自动创建一个远程库)
直接右击项目,选择Git——Repository——Push,就可以将项目推送到远程库
或者点VCS菜单下的Git——Push,也可以推送
用HTTPS协议可能push很慢,可以将GitHub远程库的SSH复制下来,然后在Push的时候点击别名,选择Define Remote ,修改别名,将SSH的链接粘贴进去,选中修改好的别名再push会快一些
如果远程库代码和本地库代码不一致,会自动合并,如果自动合并失败,还会涉及到手动解决冲突的问题
也是在Git菜单下,有个Pull,直接点击就可以拉取
同样的可以切换SSH链接来拉取
重新找一个文件夹,打开IDEA,在IDEA的初始界面有个Get from Version Control,点击后选择Git,输入地址和路径,就能把代码克隆到本地
码云官网: https://gitee.com
登录账号后,点击右上角的"+",就可以创建远程库了,和GitHub类似,码云也是支持SSH免密登录的,配置方法和GitHub一样
需要在settings的Plugins里面下载一个Gitee
然后就可以在Git里面修改路径,push自己的项目了
在码云里面创建仓库的时候,可以直接在最下方找到导入已有仓库,在GitHub里面复制远程库的HTTPS链接,然后在码云里面粘贴,然后直接点击创建按钮,就可以把GitHub的项目复制过来
如果GitHub的项目更新以后,在码云项目名字后面,有个刷新按钮,就可以进行项目同步
在使用GitLab之前,需要有一台服务器,没有的可以使用VMware虚拟机来搭建
这里用的是CentOS 7作为服务器的操作系统(我没有使用B站教程中的材料)
VMware下载链接:
链接:https://pan.baidu.com/s/1dxE9mYk-39gir8b4vxaBfA
提取码:1s2r
GitLab官网: https://about.gitlab.com
CentOS 7 下载链接:
链接:https://pan.baidu.com/s/1IlTfOHwo_FAA4pbb_ghoSQ
提取码:1e2e
准备一个CentOS7以上版本服务器,内存4G,磁盘50G
关闭防火墙,配置好主机名和IP,保证服务器可以上网
点击虚拟机上的编辑菜单,选择虚拟网络编辑器
点击弹出框右下角的更改设置,然后选中VMent8,修改子网ip,主要改后面两位(我这边设置的是192.168.8.0)
点NAT设置,修改网关IP,我设置的是192.168.8.2
点击DHCP设置,修改起始ip为192.168.8.128 结束ip为192.168.8.254
然后在windows开始菜单搜索框搜索“网络连接”,
打开后找到自己的WLAN,右击属性,共享,选择一个家庭网络,选VMWare NetworkAdapter VMnet8然后保存
然后选中VMWare NetworkAdapter VMnet8,右击属性,双击Internet协议版本4(TCP/IPv4)
点击使用下面的IP地址,IP地址、子网掩码、网关设置要和vmware里面的设置一致
我的是:
ip地址:192.168.8.1
子网掩码:255.255.255.0
默认网关:192.168.8.2
root连接服务器,执行指令 cd /etc/sysconfig/network-scripts/
执行指令 vi ifcfg-ens33
按i进行编辑
在里面修改BOOTPROTO=none
(代表静态分配IP)修改 ONBOOT=yes
,在最后面加上IP和网关 DNS1,我的是
IPADDR=192.168.8.100 #IP地址
NETMASK=255.255.255.0#子网掩码
#这里的ip和前面设置的C:\Windows\System32\drivers\etc\host的ip地址一致实现映射
GATEWAY=192.168.8.2 #网关 必须和VMware里面的网关相同
DNS1=8.8.8.8
编辑完成 按esc
键 然后输入:wq
保存退出
然后执行 service network restart
然后可以ping www.baidu.com
试试看是否能正常联网
然后修改主机名,vi /etc/hostname
改成git-server,然后重启服务器
打开自己电脑的 C:\Windows\System32\drivers\etc\host
在里面加入映射,如下所示,在最后加上ip和主机名(这里的映射服务器上暂时没配置,因为我这边没配置静态ip,只能先用DHCP协议联网,方便后面GitLab相关文件的下载,我在安装好GitLab后进行了配置)
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
127.0.0.1 activate.navicat.com
192.168.8.100 gitlab-server
在服务器上执行ifconfig
命令,没有的话需要在服务器上安装ifconfig
先执行yum search ifconfig
然后执行 yum install -y net-tools.x86_64
,就能安装成功
成功后执行ifconfig,就可以看到ip地址变成了我们设置的ip地址
由于没有使用视频中提供的资源,所以我是自己在服务器上下载gitlab,安装过程如下
我的这个系统已经有了ssh、postfix和防火墙,所以直接执行下面内容
sudo yum install curl policycoreutils openssh-server openssh-clients
启动ssh服务
sudo systemctl enable sshd
sudo systemctl start sshd
添加http服务到firewalld(–permanent表示永久生效)
sudo firewall-cmd --permanent --add-service=http
重启防火墙
sudo systemctl reload firewalld
启动postfix
sudo systemctl start postfix
systemctl enable postfix.service//设为开机启动
新建 /etc/yum.repos.d/gitlab-ce.repo
命令:
cd /
cd etc
cd yum.repos.d
vi gitlab-ce.repo
内容为(配置清华镜像) 按 i
键开始编辑
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
然后按esc
输入:wq
然后执行
sudo yum makecache
sudo yum install gitlab-ce
执行命令 gitlab-ctl reconfigure
初始化GitLab服务
执行命令gitlab-ctl start
启动GitLab服务
如需停止服务,执行命令 gitlab-ctl stop
使用浏览器访问gitlab-server或者http://192.168.8.100,就可以进入GitLab页面登录,修改密码后登录
cd /opt/gitlab/bin
gitlab-rails console
user=User.where(id:1).first
user.password="xxx"//这边是设置密码
user.save!
quit
可以在IDEA的Settings Plugins搜索gitlab,然后安装GitLab插件
点击File——Settings——Version Control——GitLab,选择Add New GitLab Server
输入GitLab服务器地址 https://gitlab-server/
选择HTTPS协议,然后点击OK
打开浏览器创建一个GitLab远程库,点击Clone,复制远程库链接,修改链接中的gitlab.example.com为自己的地址,我的是gitlab-server,也可以是192.168.8.100
剩下的Git的的操作就和IDEA集成Gitee一样了