Git代码管理完整流程(没有废话)

Git学习

git 特点

特点:服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)

每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)

windows凭据

git 工作区

img

git和代码托管中心

代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库。

局域网:GitLab

互联网:GitHub+Gitee

git常用命令

img

git config user.name  #查看用户名
git config user.password # 查看密码
git config user.email #查看邮箱
git config --global user.password "新的密码"

设置成功可以通过查看gitconfig文件,一般在user文件夹里面

完整流程

首先在要进行操作的文件夹里面右键打开git bash

1、初始化本地库

git init

就是让git获得对这个文件夹的管理权限

img

如图,初始化本地库后会得到.git文件夹,这说明git已经掌握了对这个本地仓库的控制权(一般这个文件夹是隐藏的)千万不要修改这个文件夹

ll  #查看
ll  -a#查看隐藏文件

2、查看本地库状态

git status

vim hello.txt #创建一个文件
yy #复制
p #黏贴
:wq #保存并退出
cat hello.txt #查看hello.txt文件的内容
tail -n 1 hello.txt #查看文件末尾的第一行的内容是什么

img

Untracted files:hello.txt文件目前还在本地库,但是没有上传

3、添加到暂存区

git add hello.txt#添加到暂存区
git status

img

则git追踪到了这个hello.txt文件

#删掉暂存区的文件
git rm --cached hello.txt
#本地库里面还是有hello.txt文件
git status

4、添加到本地库(形成一个历史版本)

git commit -m "first commit" hello.txt #将hello.txt添加到本地库,其中 -m 就是让我们提交一个修改日志
git status

img

这个图片里面 02a8d9d是首次提交的版本号

git reflog  #查看修改的版本信息

img

5、 修改文件

vim README.md

img

修改了本地库文件后,标红了,git 还不能追踪

git add README.md #添加到暂存区
git status #绿色显示已经提交到了暂存区

img

git commit -m "second commit" README.md #提交到本地库中

img

则显示了nothing to commit. working tree clean ,表示提交全部完成

git reflog #查看版本信息,发现多了一条版本号,且这个指针指向第二个版本

img

6、版本穿梭

git reflog #查看版本信息
git log #查看版本详细信息

!img

git reset --hard 02a8d9d(版本控制号) #穿梭到版本控制号的版本
cat README.md #查看README 的修改情况

img

.git->refs->heads->master->里面是指向的版本号

7、GIT分支

分支:理解为单独的副本,底层是指针的调用

多个分支并行开发,互不影响

img

git branch -v #查看有几个分支
git branch hot-fix #创建一个紧急修复分支
git branch -v# 查看有几个分支

img

切换分支

git checkout hot-fix#切换分支到hot-fix
vim hello.txt #在hot-fix里面进行修改文件
git status
git add hello.txt
git commit -m "third commit" hello.txt #提交到本地库里面
git status

img

且.git 里面的HEAD文件开始指向hot-fix了

git reflog#查看版本日志

img

分支合并且是正常合并

git checkout main #切换到主分支
cat hello.txt #main分支里面的hello.txt并没有修改

img

把hot-fix分支合并到main分支:

#注意分支的时候先切回到main分支
git merge hot-fix #将hot-fix分支合并到main主分支上面去

img

合并后的结果

产生冲突:两个分支在同一个文件的同一个位置有两套完全不同的修改,Git无法决定使用哪一个,必须人为决定新代码的内容

vim hello.txt #修改hello.txt文件
git add hello.txt #加到暂存区去
git commit -m "main test" hello.txt
cat hello.txt

git checkout hot-fix #切换到hot-fix分支
vim hello.txt
git add hello.txt
git commit -m "hot-fix test" hello.txt
cat hello.txt

img

报了冲突,hello.txt里面出现了代码冲突

img

#此时需要我们手动打开代码
vim hello.txt

img

#其中HEAD 和一行等号之间是当前分支的代码,下面的是分支的代码把里面关于符号的全部删掉,保留你想保留的内容保存并退出即可

git add hello.txt #修改后记得添加到暂存区
#提交到本地库的时候不能带有文件名
git commit -m "merge test"
cat hello.txt

img

此时,手动解决了修改冲突问题

合并分支只会修改合并的分支,对于其他分支不变,比如在main里面合并hot-fix,那么只会修改main里面的文件,而不会改变hot-fix里面的文件

8、远程仓库的建立以及基本操作

img

团队协作

img

对内协助作

img

假设有三个账户
A
B
C

img

创建库的时候,一般库的名称和你的文件夹的名称一致即可

https和ssh是两种不同的协议

8.1创建远程库别名

#远程库的别名就是可以取一个简单的名称,省的每次得要复制一大段https:这种网址
git remote -v #查看远程仓库的别名
git remote add Ash-end https://github.com/Ash-end/Ash-end.github.io.git#这样就把这个网址的别名改成了Ash-end
#不过由于我的已经有了别名,所以就不实际操作了
git remote -v

img

8.2 推送本地库到远程库里面去

git push Ash-end main #把main分支推送到Ash-end别名的本地库里面取 

img

放到远程库成功

8.3 拉取远程库的代码到本地库里面去

当团队其他人推送到了远程库新的版本,这时候我们的本地库和远程库的东西就不一致了,这时候就需要拉取远程库的内容到本地库里面

在github里面修改了文件后
git pull Ash-end main#把Ash-end远程库里面的main分支拉取到本地库里面

img

此时本地库和远程库的代码就同步了:

img

8.4 (团队内协作)团队其他成员克隆远程库

git clone git@github.com:Ash-end/Ash-end.github.io.git #从Ash-end库里面克隆到自己本地
  • 拉取代码
  • 初始化本地库
  • 创建别名
#另一个人修改了文件代码后
vim hello.txt
git add hello.txt
git commit -m "modified by linyinj" hello.txt
git push Ash-end main #想推送到远程库里面去

远程库的所有者进入github里面->settings->manage access->invite a collaborator-> pending invite-> 发给linyinj->在github里面复制这个邀请函->accept invitation

此时,别人就能在你的库里面推送了

8.5 跨团队协作

团队外的人员->github->去别人的远程仓库里面->Fork->此时自己的库里面就有了代码且可以修改->修改之后提交成功了,但是只是修改了自己的账号的库->pull request->new pull request->create pull request->则在库拥有者的界面就能看见PUll request->点击连接查看修改的代码->Pull request里面可以随时聊天->merge pull request -> confirm merge(合并好之后就能看见别人修改的代码了)

8.6 ssh免密登录

先在你的user文件里面把.ssh文件删掉,然后在那个界面右键打开git bash

ssh-keygen -t rsa -C xxx@qq.com  #生成公钥和私钥
#连续敲三次回车
#再次回到家目录,则.ssh里面pub就是公钥
cat id_rsa #把里面公钥复制
#到github账号里面 settings->SSH and GPG keys -> new ssh-key 把公钥复制到里面的key即可,名字任取,add ssh key

提交成功之后,以前要用到https或者库别名的地方都可以替换成ssh连链接

posted @ 2023-10-26 10:55  lycheezhang  阅读(2863)  评论(0)    收藏  举报