git在真实开发的系列场景问题

以此记录实习期间的git工具的使用,如果入职前git不熟练或者不懂,千万千万小心写代码!!!当然都是犯错是难免了,踩了很多的坑或许会进步很快。

不是讲git命令本身,而是结合开发的场景来使用git,当然个人开发和企业级别的团队开发使用git的场景也是不同的。

绪论

列出经常使用的git命令、个人开发的场景、团队开发的场景。

从以上三点来写。

常用命令

# 目录结构
.
|-- README.md
|-- clickhouse.cpp
|-- main.cpp
|-- mysql.cpp
`-- save.h
# 最基本最基本
git add main.cpp
git commit -m "修复xxxbug"
git push origin main
# 如果想git push一步到位使用,之后直接push即可
git push --set--upstream origin main

# 查看远程链接地址
git remote -v
# 删除远程地址
git remote remove origin
# 添加令牌token
git remote add origin https://token@github.com/githubname/test1_github.git

# 分支操作
# 查看本地分支
git branch
# 查看远程分支
git branch -a
# 创建分支
git branch dev
# 切换分支
git checkout dev
# 创建分支并切换分支
git checkout -b dev

# 删除分支
# 删除本地分支
git branch -d D_Campaign
# 强制删除本地分支
git branch -D D_Campaign
# 删除远程分支
git push origin --delete D_Campaign

# 暂存操作
缓存当前分支的一些操作,方便不执行commit进行切换分支。
git stash:没有命名直接存储;
git stash save "修改了弹窗":有名字的存储;
git stash list:查看存储了哪些;
git stash show stash@{0}:显示第一个存储的改动;
git stash show -p stash@{0}:显示第一个存储的详细改动;
git stash apply stash@{0}:应用第一个存储,不进行删除;
git stash pop stash@{0}:应用第一个存储,进行删除;
git stash drop stash@{0}:删除第一个存储;
git stash clear:清除所有的存储。

# 暂存未跟踪的文件
git stash save -u "暂存修改"

# 查看log信息
git log
# 精简的log信息
git log --oneline

# 查看节点或者文件的不同
git diff aesaads
git diff filename

# 撤销操作
# 第一种方法:
git checkout config.yaml:放弃修改
# 第二种方法:
# 如果是没有add也没有commit的文件:
git restore config.yaml
# 如果是add的了文件:
git restore --staged config.yaml

# 回退操作
# 会保留回退之前add的内容,只是将commit撤销
git reset --soft sahwkrww
# 会直接回退到之前的add前的内容,连修改都被抹去了
git reset --hard sahwkrww

所有的场景用到的命令上面都用。

场景1:新需求需建新分支

公司的代码肯定是多分支进行开发的,一般来说线上跑着的(main分支),开发者测试的以及大家可能还会有一个共同的测试分支(dev分支)。

首先有个需求下发,那么必须是在main分支的基础上开分支,不能在dev也不能在任何其他的分支。

写完了需求是需要合并到main和dev分支的,dev也是基于main一步一步迭代的,固然有新需求应该基于main开新分支。

场景2:旧需求切分支

假如现在在开发一个新需求,但是旧的需求在线上或者未上线前的dev分支有bug,那么就需要找到之前的分支进行修改bug(如果已经上线在mian分支了,当然也可以在main分支上新开一个分支),那么在这之前,需要将当前的分支进行切换。

现在有的代码,可能有问题,而且直接add还要commit才能生成一个节点方便回退。

那么就可以使用git stash暂存来解决这个问题,先git stash当前分支的修改内容,然后再git checkout到相应的分支。

场景3:合并有冲突需回退

假如当前的需求开发完了,自己也在自己的分支测试了,那么就可以将当前分支先合并到dev分支上。

但是呢,切换到dev分支执行git merge操作的时候出现了大量的冲突,人麻了。

就在你解决冲突觉得自己可以的时候,解决完冲突肯定是需要先自己测试的,因为你可能在解决冲突的时候将代码弄乱了,导致运行出错,所以解决完冲突是不能直接push的。

需要回退的话,直接git log找到合并之前的那个节点的hash,直接git reset --hard就可以。

场景4:合并有冲突得解决

解决冲突是最痛苦的,特别是多个人同时开发相似的需求改到相同的文件,那么这个冲突简直是多的离谱。

解决冲突的方式:还是乖乖使用编译器给的git工具。

需要注意的是,你开发的需求的分支是plan,需要合并到的分支是dev,切换到dev执行git merge plan后的冲突,应该优先保留dev上的,因为dev分支在你合并之前是没问题的,那么你的代码要incoming,必须得保证incoming后不出问题。

场景5:边测试边push

比如python你需要执行某个函数或者写一些操作,同时还是修改一些函数的内容,然后push。

这里用两种方法:

第一种是用两个窗口,一个用来测试,另一个用来提代码。

这种方式需要复制测试的部分代码到提代码的分支,可能在复制粘贴的过程出现错误,如果改动的少,可以使用。

第二种是使用git stash,对没错,又是git stash,这个命令真的好用。

注意

每次git add先git status和git diff

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Git是一种分布式版本控制系统,它可以帮助团队在局域网环境下进行协同开发。在局域网,可以通过搭建Git服务器来实现团队成员之间的代码共享和协作。 以下是一种常见的局域网协同开发的方式: 1. 搭建Git服务器:首先,需要在局域网搭建一个Git服务器,可以选择使用GitLab、Gitea等开源软件,或者使用商业化的解决方案如GitHub Enterprise。这个服务器将作为代码的央仓库,团队成员可以将代码推送到该仓库,并从获取最新的代码。 2. 创建项目仓库:在Git服务器上创建一个项目仓库,用于存放团队成员共享的代码。可以设置权限,控制团队成员对仓库的访问和操作权限。 3. 克隆仓库:团队成员通过克隆仓库到本地,获取代码的副本。可以使用命令行或者图形化工具如Git GUI、SourceTree等进行操作。 4. 分支管理:每个团队成员可以在本地创建自己的分支,用于开发新功能或修复bug。分支可以独立于主分支进行开发,不影响其他人的工作。 5. 提交和推送:团队成员在本地进行代码修改后,可以将修改提交到本地仓库,并推送到Git服务器上的对应分支。其他团队成员可以通过拉取操作获取最新的代码。 6. 解决冲突:当多个团队成员对同一文件进行修改并推送时,可能发生冲突。在这种情况下,需要手动解决冲突,并重新提交和推送代码。 7. 合并代码:当一个功能开发完成或者一个bug修复完成后,可以将分支合并到主分支或其他目标分支上。这样其他团队成员就可以获取到最新的代码。 8. 定期更新:团队成员应该定期从Git服务器上拉取最新的代码,以便获取其他人的修改并保持代码同步。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值