gpt4 book ai didi

git - 如何在保持在同一分支上的同时将 git 工作副本更新为特定提交?

转载 作者:太空狗 更新时间:2023-10-29 14:31:59 24 4
gpt4 key购买 nike

假设我的工作副本在一个干净的 master 分支上。我想要的是将整个代码带到某个提交时的状态,但实际上不切换到该提交/分离 HEAD。

我可以通过以下步骤实现:

  1. 创建整个工作副本目录的副本;
  2. checkout 我希望我的代码处于该状态的提交的新副本;
  3. 摆脱 .git 目录并从原始工作副本中取出一个(仍处于干净的 master):

这是一个例子,说明我最终想要什么:

mkdir code
cd code/
git init .
echo 'content 1' > file.txt
git add --all && git commit -m 'version 1' && git tag v1
echo 'content 2' > file.txt
git add --all && git commit -m 'version 2' && git tag v2
cd ..
cp -pr code code1
cd code1/
git checkout v1
rm -rf .git
mv ../code/.git ./

git diff
diff --git a/file.txt b/file.txt
index 4d4bc1c..a0054e4 100644
--- a/file.txt
+++ b/file.txt
@@ -1 +1 @@
-content 2
+content 1

git status
On branch master
Changes not staged for commit:
modified: file.txt

问题是:如何仅使用 git 命令而不处理 .git 文件夹来实现这一点?像 git bring-to-the-state-of hash/branch/tag 这样的东西?

最佳答案

前面的答案似乎通过 --patch 准确地为您提供了您想要的内容。但是要回答问题的标题,您可以通过使用带有 path 参数的 checkout 变体来实现。

因此,例如,如果您已经检查了 master 分支,并且您想要更新工作目录,以便所有文件看起来像在 2.3.4 版本中一样

git checkout v2.3.4 -- .

这将暂存所有已更改的文件。发出 git status 将显示所有更改的文件。

关于git - 如何在保持在同一分支上的同时将 git 工作副本更新为特定提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37112158/

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