gpt4 book ai didi

checkout 任何分支并覆盖本地更改的 Git 命令

转载 作者:IT王子 更新时间:2023-10-29 00:46:21 25 4
gpt4 key购买 nike

是否有 Git 命令(或一小段命令)可以安全可靠地执行以下操作?

  • 摆脱任何本地更改。
  • 如有必要,从原点获取给定的分支
  • 检查给定的分支?

目前我坚持:

git fetch -p
git stash
git stash drop
git checkout $branch
git pull

但这让我很困扰,因为我被要求输入密码两次(通过 fetchpull)。 一般来说,只要密码只需要一次,我就会对任何解决方案感到满意。

一些注意事项:

  • 它是应用程序的自制部署脚本的一部分(代码托管在 GitHub 上)。
  • 分支是否已经从源获取应该没有区别(即新分支的首次部署理想情况下不应该需要任何额外的步骤)。
  • 该脚本位于可由多个人访问的远程计算机上,因此不存储凭据并且必须输入用户名/密码(但如果可能只输入一次)。
  • 我不关心任何局部变化;我总是想要给定分支的原始副本(部署脚本的进一步部分会产生本地更改)。
  • 我无法每次都克隆或导出新的存储库;这需要太多时间。

最佳答案

您可以采用类似于"How do I force “git pull” to overwrite local files? " 的解决方案:

git fetch --all
git reset --hard origin/abranch
git checkout abranch

那将只涉及一次获取。

在 Git 2.23+ 中,git checkout 在这里被替换为 git switch (presented here) (仍处于实验阶段)。

git switch -f $branch

(使用 -f being an alias for --discard-changes,如 Jananswer 中所述)

Proceed even if the index or the working tree differs from HEAD.
Both the index and working tree are restored to match the switching target.


如果您不想切换分支,而只是恢复来自另一个分支的文件夹,那么git restore是替代旧的过时且令人困惑的 git checkout 的另一个命令。
我提出了git restore here .

git restore --source=anotherBranch --staged] [--worktree -- aFolder
# or, shorter:
git restore -s anotherBranch -SW -- aFolder

关于 checkout 任何分支并覆盖本地更改的 Git 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18487089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com