实际工作开发:git详细工作流的完整操作(更新ing)

目录

gitlab如何创建代码仓库

本地已有项目代码文件与创建的远程仓库做关联

关于版本分支

git协同开发过程

git如何从远程拉取分支/新的别名分支

需求分支开发好后如何操作?

git场景总结

一、分支合并时间问题

二、远程分支的节点提交时间晚于本地节点提交时间

三、使用错误的用户信息提交commit节点导致无法推送远程

git常用命令

推荐git可视化工具

sourcetree

vscode

安装


gitlab如何创建代码仓库

方式一:在GitLab上创建代码仓库的步骤如下:

  1. 登录到GitLab账户。
  2. 在页面的右上角,点击“+”按钮,选择“新建项目”(New project)。
  3. 填写项目信息:
    1. 在“项目路径”(Project name)字段中输入仓库名称。
      在“项目描述"(Project description)字段中输入仓库的简短描述。
    2. 选择“私有”(Private)或"内部”(Internal)以保护仓库不公开,或选择“公开”(Public)让任何人都能看到仓库。

  4. 点击”创建项目”(Create project) 按钮。

图片中的初始化仓库未勾选,则可以在已有项目做git init命令操作,与远程仓库做关联操作

如若没有项目,则可勾选,并使用git clone将仓库项目克隆到本地。

创建成功后,请完成仓库的初始化

方式二:以下是使用Git命令行创建本地仓库并将其推送到GitLab的示例:

# 在本地创建一个新的目录作为仓库
mkdir my-project
cd my-project

# 初始化Git仓库
git init

# 添加文件到仓库
touch README.md
git add README.md
git commit -m "Initial commit"

# 添加GitLab仓库为远程仓库
git remote add origin git@gitlab.com:<username>/my-project.git

# 将代码推送到GitLab
git push -u origin master

本地已有项目代码文件与创建的远程仓库做关联

注:一般是先建立远程仓库,然后使用git clone命令拉取远程仓库代码,因为我本地已经先搭建了项目,所以这里我直接在已有项目文件上做远程仓库关联动作

首先,打开我们项目文件,在文件夹下开启命令行窗口

输入命令

# 指本地仓库和远程仓库建立连接

git remote add origin 远程仓库地址

#Git 全局设置

git config --global user.name "代码编辑者用户名"

git config --global user.email "代码编辑者邮箱(即登录gitlab的邮箱账号)"

注:由于这里是用我的gitlab账号创建的git仓库,所以当我设置完以上的设置,我已经拥有操作该仓库的权限,若你是企业员工,需要拉取企业的项目代码,则需要企业为你开通账号权限

由于我是本地操作的项目代码与远程仓库做关联,所以这个时候我的本地分支和远程分支是不存在的

// 方法一

git push -u origin "master"命令的意思是将当前分支推送到远程仓库的master分支上,‌并将本地的master分支与远程的master分支关联起来。‌这个命令通常用于将本地代码提交到远程仓库的master分支,‌并且将本地的master分支与远程的master分支进行关联,‌以便后续的提交可以直接推送到远程仓库而不需要再次输入远程仓库的名称。‌

// 方法二

#本地创建分支

git checkout -b master   //  创建master分支并切换到该分支

git add.     // 暂存修改的信息

git commit -m 'master'   // 提交修改的信息

git push --set-upstream origin master 

注:以下输入的是gitlab的登录账号以及密码(密码可在setting中修改)

git push --set-upstream origin master 这个命令是用于设置默认的上游分支,这样在后续的 git push 或者 git pull 操作中就不需要每次都指定远程分支了。

具体来说,git push --set-upstream origin master 是将本地的 master 分支推送到 origin 远程仓库,并将 origin/master 设置为本地 master 分支的上游分支。

如果你已经执行了这个命令,那么以后你只需要执行 git push 或者 git pull 就可以了,因为 Git 会自动知道你想要推送或拉取的是 origin/master 分支。

如果你想要改变默认的上游分支,你可以使用 git branch --set-upstream-to=origin/<branch>,其中 <branch> 是你想要设置的新的默认上游分支。

例如,如果你想要将默认的上游分支改为 origin/dev,你可以执行以下命令:

git branch --set-upstream-to=origin/dev

可以使用命令 git branch -vv 查看本地和远程分支的对应关系

// 左边是分支名 -> 右边是节点信息

git remote show origin 查看本地分支对应的远程分支

关于版本分支

一般我们在企业中的操作,完整的项目从开发到上线过程通常会涉及到:master分支、版本分支、stage分支、需求分支

master分支:正式上线的代码分支,一般在正式上线前,会同步消息确认在确定的版本周期内,所有的需求分支都已经完成合并到版本分支上,然后将版本分支上的代码合并到master分支上,等待IT做上线动作

需求分支:即你接到的需求单独作为一个分支进行开发,完成后可以合并到stage分支上

stage分支:测试分支,即你和你的搭档完成的所有需求分支都需要合并到这个分支上,以方便QA做测试验收工作

版本分支:xx.xx.xx,指在测试分支QA完成测试验收工作,则这个时候代码审核者会再对测试验收通过的需求分支再做一轮测试和代码审核,完成后则会将该需求分支合并到该分支

注:分支的定义一般以企业规范为主,这里只示例一般的工作流程,每个公司都会有差异,这里仅供参考

git命令 协同开发过程

git如何从远程拉取分支/新的别名分支

描述:此场景基于别的需求分支上拉出新的需求分支

git checkout -b <新的需求分支>  origin/<基于的远程分支名>     

比如:git checkout -b test2  origin/test1

如果是新的分支,则在进行推送代码到远程分支,需要输入git push --set-upstream origin <新的分支名>,比如git push --set-upstream origin test2

如果是和远程分支同名的分支,则直接 git push

注:每次从远程拉取时,记得更新远程仓库的状态,输入git fetch origin

需求分支开发好后如何操作?

描述:一般开发员接受任务会在本周期内的版本分支拉出一个分支作为该任务的需求分支,当我们完成代码开发,我们会进行保存、提交、合并操作

代码开发好完成保存,我们会进行一下命令

git add .

git commit -m '提交描述信息‘    // 引号里的内容这个可以自由发挥,有时候公司也会有规范

git push  //  如果分支已经关联了远程分支

git push --set-upstream origin <分支名>  // 若没有完成完成远程分支关联,则需要设置并关联 

当我们完成需求分支的开发,此时会将该分支合并到测试分支,这里测试分支以stage为分支名

git checkout stage // 先切换到测试分支

git merge <需求分支名> 

此时可能会出现冲突,如果有冲突,先解决冲突,然后再进行保存,重复以上的操作,再推送到远程

git场景总结

一、分支合并时间问题

描述:

同一个文件同一行代码

test1 修改时间节点比test2晚,这个时候在test2分支上merge test1分支上的代码,会发生冲突

如果test1修改时间节点早于test2,这个时候在test2分支上merge test1 分支上的代码,test2分支的代码会直接覆盖test1分支的代码

这种时候一般要沟通一下

二、远程分支的节点提交时间晚于本地节点提交时间

报错信息:Your branch and 'origin/master' have diverged, and have 2 and 1 different commits each, respectively. (use "git pull" to merge the remote branch into yours)

描述:这个错误信息表示你的本地分支和远程仓库(origin/master)已经分叉了,本地分支比远程分支超前2个提交,而远程分支比本地分支超前1个提交。

这里我采用的是第三种

如果不小心使用了第二种,把本地代码冲掉了,可以使用

三、使用错误的用户信息提交commit节点导致无法推送远程

报错信息:commit authorName check error,commit sha <节点号HEAD>  error authorName is <提交编辑用户名>

首先先删除该节点,因为这个节点的author名与gitlab拥有权限的用户不一致,就算重新配置了git config里的user.name和user.email,也是还会报错

删除错误的编辑者信息节点后

配置与仓库匹配权限的user.name和user.email

重新 git add . 和git commit -m ''

最后git push

四、代码遴选

# 将当前分支变基到master分支
git rebase master

# 选择提交节点abc123并将其应用到当前分支

#abc123是HEAD码
git cherry-pick abc123

# 选择一系列连续的提交并应用到当前分支
git cherry-pick startCommit^..endCommit

五、更新远程仓库别人新推的分支或者代码

git fetch origin

git fetch origin是一个Git命令,它用于从远程仓库(通常名为“origin”的默认远程仓库)获取最新的提交和分支信息,但并不会自动合并或修改你的本地分支。

六、git重置reset和恢复revert

可参考Git 命令 reset 和 revert 的区别 - 墨天轮

在团队开发中,使用 Git 作为版本开发工具,可以便捷地协同多人管理并行开发,但是由于自己或者其他人代码提交污染了远程分支,就需要对远程代码进行恢复操作,Git 提供了 reset 和 revert 两种命令来进行恢复操作,这两种操作效果是截然不同的,不太清楚这个原理的同学需要了解一下,以免在实际的开发过程中翻车,导致线上远程仓库不可逆转的操作。

git reset 的作用是将 HEAD 指向指定的版本上去:

git reset   // 取消上一次暂存(git add .),不会影响正在编辑的代码

git reset --hard HEAD    //  HEAD是你要恢复的节点号,可以通过git log查看

git push -f     //  如果操作的节点已经push到远程了,需要执行该命令使远程节点与本地同步

warning 警告
在团队合作的共同操作一个仓库的时候, git reset 命令一定要慎重使用,在使用的时候一定要再三确认其他同学的代码是否会被重置操作而导致代码丢失,导致一些提交记录的丢失,这些都是不可逆的,一定要慎重。

推荐git可视化工具

sourcetree

// 待整理

vscode

安装

首先我们需要安装gitlens扩展插件

方式一:直接搜索安装

方式二:通过导入VSIX文件(适用于只能使用内网环境)

在安装VSIX文件可能会出现文件过期的问题,建议搜索下载最新版本的gitlens VSIX文件

这是我搜到的可以用的地址,仅供参考GitLens download | SourceForge.net

安装完成的正常显示效果,请对比做检查是否有遗漏:

使用
关于拉取分支

关于git graph

代码暂存和推送

查看代码差异

– 在VS Code的侧边栏中打开Git面板(通过View -> Git或者Ctrl + Shift + G)。
– 在Git面板中点击”Branches”按钮,然后选择要进行比较的分支。选择一个分支后,会显示该分支的Git历史。
– 在Git历史列表中选择一个提交记录,右键点击并选择”Compare with branch”,然后选择要进行比较的目标分支。VS Code会自动打开一个比较窗口,展示这两个分支之间的差异。

查看当前文件的commit节点信息

git常用命令

git config --global --list  // 查看git config配置

git fetch origin  // 更新远程仓库获取最新的提交和分支信息

git reset   // 取消上一次暂存(git add .),不会影响正在编辑的代码

git checkout -b <newbranch>  //  创建并切换到新分支

git branch -D <branch>     //   删除分支名

  • 15
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值