当前位置:   article > 正文

git笔记之撤销、回退、reset方面的笔记_git 撤销拉取

git 撤销拉取

重要提醒: 使用 git reset --hard 时务必要小心,因为一旦执行,未提交的更改将无法恢复。在任何可能会丢失数据的操作之前,建议先做好备份。

2.git 已经commit了,还没push,修改最后的commit信息

如果你已经做了一个commit,但还没有将其push到远程仓库,并且希望修改这次commit的信息,你可以使用git commit --amend命令进行操作。下面是一步一步的指导:

  1. 打开你的命令行工具。
  2. 使用git log查看最近的commit,确保你要修改的是最近一次的commit信息。
  3. 输入以下命令来修改最后一次的commit信息:
git commit --amend

  • 1
  • 2
  1. 这将打开你的默认文本编辑器,允许你修改commit信息。在编辑器中修改commit信息,然后保存并关闭编辑器。
  2. 如果你想直接在命令行中修改commit信息,而不是打开文本编辑器,可以使用以下命令(其中new commit message是你的新commit信息):
git commit --amend -m "new commit message"

  • 1
  • 2
  1. 完成修改后,你可以使用git log再次检查以确保commit信息已更新。
  2. 现在,你可以像往常一样推送你的commit到远程仓库:
git push origin your-branch-name

  • 1
  • 2

请注意,如果你的commit已经被推送到了远程仓库,并且其他人可能已经基于这个commit进行了工作,那么使用--amend操作可能会导致问题。在这种情况下,你应该谨慎使用这个命令,并且可能需要与你的团队协调来决定是否要修改远程仓库中的commit信息。

3.git 已经commit了,也push了,发现远程没合,发现还有没改完,如何操作

如果你已经提交(commit)并推送(push)了代码到远程仓库,并且发现还有未完成的修改需要添加,你可以按照以下步骤操作:

3.1. 在本地进行修改

首先,在你的本地代码库中进行必要的修改。

3.2. 添加并提交修改

修改完成后,将这些更改添加到暂存区并创建一个新的提交:

git add .
git commit -m "说明你的修改"

  • 1
  • 2
  • 3

如果修改较小,你也可以选择将这些修改添加到上一个提交中,使用 --amend 选项:

git add .
git commit --amend --no-edit  # 保持上次提交的信息不变
# 如果你想修改提交信息,可以去掉 --no-edit

  • 1
  • 2
  • 3
  • 4
3.3. 推送到远程仓库

如果你没有修改上一次的提交(即第2步中没有使用 --amend),你可以正常推送到远程仓库:

git push origin <branch-name>

  • 1
  • 2

如果你使用了 --amend 修改了上一个提交,你需要强制推送,因为历史已经改变:

git push origin <branch-name> --force
# 或者使用更安全的 --force-with-lease 选项
git push origin <branch-name> --force-with-lease

  • 1
  • 2
  • 3
  • 4

注意:强制推送会重写远程仓库的历史。在共享的仓库中进行强制推送可能会给其他协作者带来问题。在强制推送之前,最好跟团队成员沟通一下。

–force-with-lease 详解

--force-with-leasegit push 命令的一个选项,它是 --force 的一个更安全的替代。强制推送(使用 --force)会覆盖远程仓库的分支,而不管其他人是否已经推送了他们的提交。这可能会导致他人的工作丢失,因为你的本地历史会覆盖远程历史。

相比之下,--force-with-lease 提供了一种保护机制,确保你不会意外覆盖其他人的更改。它会在强制推送之前检查远程分支的当前状态,确保远程分支的当前状态与你上次获取时的状态一致。如果有差异,说明可能有其他人已经推送了新的提交,那么 --force-with-lease 会阻止你的推送操作。

这里是如何操作的:

  • 当你执行 git push --force-with-lease 时,Git 会检查远程分支的当前引用是否匹配你本地的引用。
  • 如果它们匹配,说明自从你上次同步以来,没有人更新远程分支,你的强制推送将会执行。
  • 如果它们不匹配,说明有人在你之后推送了他们的更改,你的推送将会被拒绝。这可以防止你不小心覆盖别人的工作。

--force-with-lease 的好处在于,它提供了强制推送的能力,同时减少了意外覆盖同事代码的风险。它是一种更加谨慎的做法,尤其适用于多人协作的项目中。

这个选项还可以接受额外的参数来指定要检查的分支和引用:

git push --force-with-lease=<branch-name>:<expected-value>

  • 1
  • 2

这里,<branch-name> 是你想要推送的远程分支名,<expected-value> 是你期望远程分支引用的值。如果远程分支的实际引用与 <expected-value> 不同,Git 将阻止推送。

使用 --force-with-lease 是一个更安全的做法,因为它有助于防止数据丢失。不过,即使是这种安全的强制推送,也应该谨慎使用,并且最好在推送之前与团队成员沟通。

3.4. 如果有必要,打开一个新的合并请求(Merge Request)或拉取请求(Pull Request)

如果初始的合并请求还没有被处理,你可以继续在原来的合并请求中添加信息说明有新的提交添加。如果合并请求已经关闭,或者你需要创建一个新的合并请求,根据你使用的平台(GitHub, GitLab, Bitbucket等)的规则进行操作。

请注意,如果你的仓库设置了分支保护规则,禁止了强制推送,那么你可能需要联系仓库管理员或者使用别的方法(比如创建一个新的提交来修复问题,而不是修改已有提交)。

根据你的具体情况和团队的工作流程,这些步骤可能会有所不同。

4.使本地与远程保持一致

重置本地分支到远程分支的状态

如果你想要放弃本地分支上所有的更改,并使其与远程分支完全一致,可以使用 git reset 命令配合 --hard 选项。这样会使你的本地分支(比如 master)完全回退到远程分支的状态:

git fetch origin
git reset --hard origin/<branch_name>

  • 1
  • 2
  • 3

⚠️ 警告: 使用 --hard 选项会丢失所有未提交的更改和本地提交。在执行这个命令之前,请确保你不需要这些更改,或者已经对它们做了备份。

更新本地分支列表

有时,远程仓库的分支可能会被删除或重命名,你也需要更新你本地的分支列表以反映这些更改:

git fetch --prune

  • 1
  • 2

这个命令会从你的本地仓库中删除那些已经在远程仓库中被删除的追踪分支。

对于所有本地分支,跟踪远程分支

如果你有多个分支需要同步,你可以对每个分支重复上述的拉取或推送操作。此外,确保本地分支正确地跟踪对应的远程分支,可以使用:

git branch -u origin/<branch_name>

  • 1
  • 2

或者,在推送本地分支时设置上游(远程跟踪)分支:

git push -u origin <branch_name>

  • 1
  • 2

通过这些基本操作,你可以保持本地仓库与远程仓库的一致性。记得在执行可能会丢失数据的操作如 git reset --hard 前,总是确保备份你的工作。

5.git stash的作用

git stash 是一个非常有用的 Git 命令,它可以帮助你临时保存你的工作目录中的更改,而不是做一个提交。这在以下情况下非常有用:

  1. 当你正在进行一项工作但需要切换到另一个分支进行另一项工作时,而你的当前更改又不足以做一个完整的提交。
  2. 当你需要快速保存当前的工作状态,以便稍后再回来继续工作。

git stash 通常与几个选项一起使用:

  • git stash save "message":保存当前的工作进度。你可以提供一个消息作为参数,以帮助记住这个stash中保存了什么。
  • git stash list:列出所有的 stash。
  • git stash apply:重新应用最近保存的 stash。你可以指定一个 stash 来应用,如 git stash apply stash@{2}
  • git stash pop:应用最近的或指定的 stash,并从 stash 列表中移除它。
  • git stash drop:删除最近的或指定的 stash。
  • git stash clear:删除所有的 stashes。

当你执行 git stash(等同于 git stash push)时,Git 会执行以下操作:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数大数据工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
img

2837296645)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
[外链图片转存中…(img-LcoJxnUv-1712837296646)]

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/644952
推荐阅读
相关标签
  

闽ICP备14008679号