Git 使用经验及心得

从头好好梳理一下我的 git 使用习惯,记录一下。

已经被Git跟踪的文件不会受到 .gitignore 的影响。要忽略已经被提交的文件,可以使用 git rm --cached <file>命令将其从版本控中移除。此命令还会保留本地仓库的内容。

git管理项目内容,针对文件夹的名字和文件名是没有大小写敏感性的。

场景:第一次创建文件夹或文件名字后,将其add(暂存)后(只要是仓库形成追踪),再将文件夹或者文件名称修改大小写,git记录的还是第一次提交时的名字,若其他文件引入路径是更新后的路径,会导致报错。

解决:将目标文件提出项目(更改原始路径),提交更改(只要是仓库形成追踪),在项目外面将名称修改好,再放回原来的路径,提交更改就可以了。

场景:在feat/A上提交并推送至远程仓库之后,开始开发B功能,但是这个时候由于粗心,导致没有做切换到main,然后pull,然后checkout -b feat/B,所以此时我依然在feat/A上。开发完B功能之后,不小心commit了,但是没有push到远程仓库,请问此时我该如何做才能弥补错误,使提交符合规范?

解决:

# 使用reset将提交内容返回到工作区
git reset HEAD~
# stash feat B的内容
git stash
# 切换至主分支并拉新代码
git checkout main && git pull
# 创建B分支
git checkout -b feat/B
# 将修改内容放到B分支上
git stash pop
# 提交并推送
git add .
git commit -m "feat: B"
git push origin HEAD

场景:

在feat/A上提交并推送至远程仓库之后,开始开发B功能,但是这个时候由于粗心,导致没有做切换到main,然后pull,然后checkout -b feat/B,所以此时我依然在feat/A上。开发完B功能之后,不小心commit了,并且push到了远程仓库,请问此时我该如何做才能弥补错误,使提交符合规范?假设错误commit的hash值为:abc123

解决:

  1. feat/A已经被合并到主分
    # 回到主分支,拉取最新代码,创建然后切换到一个名为fix/revert-A的分支
    git checkout main && git pull && git checkout -b fix/revert-A
    # 在fix/revert-A分支上使用revert abc123覆盖B功能代码
    git revert abc123
    
    # 使用rebase抹平此次revert记录
    git log # 找到xyz456
    git rebase -i xyz456^ # 表示将xyz456这个commit之后的提交合成一个
    # 根据自己的需要填表,保存,关闭;其实就是把自己不想要的commit前面的pick改成fixup
    
    # 将fix/revert-A分支推送到远程仓库并联系组长合并到主分支
    git add . && git commit -m "fix: revert" && git push origin HEAD
    # 切换至主分支并拉新代码
    git checkout main && git pull
    # 创建B分支
    git checkout -b feat/B
    # 使用cherry-pick将abc123提交记录复制一份到B分支上
    git cherry-pick abc123
    # 提交并推送
    git add .
    git commit -m "feat: B"
    git push origin HEAD
  2. feat/A没有被合并到主分支
# 在feat/A上生成一次revert提交记录,覆盖B功能代码
git revert abc123

# 使用rebase抹平此次revert记录
git log # 找到xyz456
git rebase -i xyz456^ # 表示将xyz456这个commit之后的提交合成一个
# 根据自己的需要填表,保存,关闭;其实就是把自己不想要的commit前面的pick改成fixup

# 将revert之后的本地分支推送到远程仓库
git push origin HEAD -f
# 切换至主分支并拉新代码
git checkout main && git pull
# 创建B分支
git checkout -b feat/B
# 使用cherry-pick将abc123提交记录复制一份到B分支上
git cherry-pick abc123
# 提交并推送
git add .
git commit -m "feat: B"
git push origin HEAD
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值