0


Git 生产操作总结

一、git 工作机制
1)概述

在这里插入图片描述

工作区:存放代码的地方

暂存区:临时存储,将工作区的代码让 git 知道,通过 git add 将代码放到暂存区

本地库:将暂存区的代码提交到本地库,就会生成对应的历史版本,这个代码就无法删除

远程库:将本地库的代码推送到远程库

2)代码托管中心

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

  • 局域网 - GitLab:自己搭建 远程库- gogs: Gogs 是一款极易搭建的自助 Git 服务
  • 互联网 - GitHub (外网),可能无法访问- Gitee 码云(国内网站)
3)github 和 gitee 对比

在这里插入图片描述

4)常用命令

在这里插入图片描述

5)案例实操
1.在 gitee 创建远程仓库

在这里插入图片描述

2.克隆远程仓库到本地
git clone https://gitee.com/han-hongxu/git_operator.git
3.创建文件后查看本地库状态
git status

在这里插入图片描述

红色代表这个文件只存在于工作区,git 从来没有追踪过这个文件

4.将工作区的文件添加到暂存区
git add day01.txt

查看状态

在这里插入图片描述

5.将暂存区的文件提交到本地库
git commit -m "first commit" day01.txt

查看状态

在这里插入图片描述

6.查看日志信息
git reflog 查看版本信息

在这里插入图片描述

git log 查看详细版本信息

在这里插入图片描述

7.修改文件

在这里插入图片描述

文件被修改了,修改的文件还没有提交到暂存区。

8.将修改的文件添加到暂存区,提交到本地库
git add day01.txt
git commit -m "second commit" day01.txt

在这里插入图片描述

9.版本穿梭
git reset --hard 版本号
git reset --hard 0823ca6fcfe90b1145a4907ada5866d3937654db

git 切换版本, 底层其实是移动的 HEAD 指针。

注意:切换到旧版本之后,git log 不再显示新版本记录,如果还需要再回到旧版本,需要手动记录 commit_id。

二、分支操作
1)概述

在这里插入图片描述

在版本控制过程中, 同时推进多个任务,为每个任务创建单独的分支。

各个分支在开发过程中, 如果某一个分支开发失败,不会对其他分支有任何影响,失败的分支删除重新开始即可。

2)常用命令

在这里插入图片描述

2)案例实操
1.查看分支
git branch -v

在这里插入图片描述

2.创建分支
git branch 分支名
git branch feature_1

在这里插入图片描述

3.切换分支
git checkout 分支名
git checkout feature_1
4.在新分支上修改文件

在这里插入图片描述

5.合并分支
git merge 分支名

# 在 master 分支上合并 feature_1 分支
git checkout master
git merge feature_1

在这里插入图片描述

2)冲突处理

冲突产生的表现: 后面状态为 MERGING

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

1.制造冲突

【第一步】 切换到 master 分支上,修改 day01.txt

【第二步】 切换到 feature_1 分支上,修改 day01.txt

【第三步】 切换到 master 分支,merge 合并 feature_1 分支

在这里插入图片描述

2.解决冲突

编辑有冲突的文件,删除特殊符号,决定要使用的内容

特殊符号

<<<<<<< HEAD
***
=======
***
>>>>>>> feature_1

在这里插入图片描述

修改文件如下

在这里插入图片描述

添加到暂存区,执行提交(此时 git commit 命令不能带文件名)

在这里插入图片描述

注意:此时修改的只是 master 分支的内容,feature_1 分支的内容没有发生改变。

三、git 团队内协作
1)概述

在这里插入图片描述

2)git 跨团队内协作

在这里插入图片描述

3)远程仓库操作

在这里插入图片描述

4)案例实操
1.查看创建远程仓库别名
git remote -v 查看当前所有远程地址别名
git remote add 别名 远程地址

在这里插入图片描述

2.推送本地分支到远程仓库
git push 别名 分支
git push origin master
3.拉取远程仓库内容
git pull 远程库地址别名 远程分支名

在这里插入图片描述

4.克隆远程仓库到本地
git clone 远程地址
四、fork仓库开发流程
1)概述

在这里插入图片描述

2)案例实操
向 fork 的仓库新创建的分支提交修改

方式一

克隆 fork 的仓库到本地,创建新分支,提交修改到 fork 的仓库,再 PR 到远端仓库。

方式二

克隆 flink 的仓库到本地,添加 fork 的仓库为 remote,创建新分支,提交修改到 fork 的仓库,再 PR 到远端仓库。

注意:需要具备 push 权限。

在这里插入图片描述

五、工作流程
1)拉取远端最新分支【无冲突】
git fetch origin master
git merge origin master
或
git pull origin master
或
git pull --rebase origin master【不推荐】
2)拉取远端最新分支【有冲突】
a)本地新修改未 add

手动处理/添加到暂存区(git add filename)

b)本地新修改已 add

回滚到上个 commit 【新文件不保留】

git reset --hard 版本号
git pull origin master

暂存修改【新文件保留,需手动解决冲突】

git stash 【暂存更改】
git stash list 【查看暂存列表】
git stash pop【弹出更改,手动解决冲突】
git stash clear 【情况咋存列表】
git pull origin master
c)本地新修改已 commit
git reset --soft HEAD^
git stash
git stash pop
3)撤销 add
git reset HEAD 【撤销上次 add 的全部内容】
git reset HEAD filename 【撤销上次 add 的某个文件】
4)撤销 commit
git reset --mixed HEAD^:将修改退回到工作区,不删除工作区改动的代码,撤销 commit,撤销 add。
git reset --soft HEAD^:将修改退回到暂存区,不删除工作区改动的代码,撤销 commit,不撤销 add 
git reset --hard:删除工作区的改动代码,撤销 commit,撤销 add

注意:HEAD^ 表示上一次的 commit,几个^ 代表几次 commit,如果回滚两次就是 HEAD^^,也可写成 HEAD1、HEAD2。

5)向前追加提交,
git commit -m "***" --amend

在这里插入图片描述

注意:新提交的注释信息会覆盖旧提交的。

6)合并两个提交
git rebase -i HEAD~2

合并提交前

在这里插入图片描述

合并提交后

在这里插入图片描述

7)修改提交注释
git commit --amend
8)查看存在冲突文件
git diff --check/git diff
git status【双方修改】
9)提交本地最新修改【无冲突】
git push origin master
git push origin HEAD --force // 将本地分支代码强制推送到远处分支[不建议]
六、常用命令解析
1)revert
git revert:放弃某次提交,之前的提交仍会保留在 git log 中,而此次撤销会做为一次新的提交。
git revert -m:用于对 merge 节点的操作,-m 指定具体某个提交点。

撤销提交

git log
git revert commit_id // 这时候代码会发生冲突 解决冲突 重新提交即可 相当于一次新的commit
git push
2)rebase【不建议使用,推荐用 merge】
git rebase:彻底删除 git 中的某次提交的内容,也不会在 git log 中保留,可以撤销中间某次提交

撤销提交

git log
git rebase -i commit_id // 进入vim编辑模式,把要删除的commit的前面的 pick 改为 drop 
git push origin HEAD --force // 推到远程分支上

使用 git reset 命令可以将当前分支的 HEAD 指针移到任意提交,可以删除 git 存储库中的提交。
使用 git revert 命令可以撤销指定提交的更改,并创建一个新的提交来保留已撤销的更改的历史记录。
使用 git rebase 命令来删除提交,可以永久删除提交并更改 git 历史记录。

# 拉取远端分支,并变基
git pull --rebase

合并近三次的commit

git rebase -i HEAD~3
3)commit
git merge

不对仓库历史做任何改变,它会保留分支上所有的历史commit,然后简单地创建一个合并的commit。

git merge master

在这里插入图片描述

4)pull
git pull:先 git fetch 再 git merge HEAD.
git pull --rebase:先 git fetch 再 git rebase HEAD.
5)git squash

git merge

中,每一次 merge 就会产生一个额外的 commit,如果在工程中有许多 bug 和一些微小改变的 commit,那么可以使用

--squash

选项将

feature

分支中的所有 commit 取出,然后压缩这些 commit 为一个并加入到

master

分支中。

git merge --squash feature

注意:上述的合并命令并不会创建一个commit,实际上就是将

feature

中的每一次 commit 的更改应用到本地,还需要手动提交该commit:

git commit -m <"your commit message">

七、注意
1、一定要创建新分支再进行操作,禁止直接在 master 分支上操作。
【如果 PR 合并的是 master 分支,此时在 master 分支进行修改、提交,那么此 master 分支的后续任何变动都会自动合并到之前的 PR 中】
标签: git 大数据

本文转载自: https://blog.csdn.net/m0_50186249/article/details/139314858
版权归原作者 猫猫爱吃小鱼粮 所有, 如有侵权,请联系我们删除。

“Git 生产操作总结”的评论:

还没有评论