问题标签 [git-checkout]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
7221 浏览

git - 有 git uncheckout 吗?

git clone一个选项-n可以防止HEAD在克隆存储库后签出。是否有可能手动执行此操作?

编辑我认为该选项-n在手册中的阅读效果比实际更好:使用-n我所有的工具进行克隆后显示我仍然驻留在主分支上;唯一的区别是所有文件都显示为已删除。这与我称之为“未签出”的情况并不完全相同。

所以也许我应该删除HEAD

0 投票
13 回答
964773 浏览

git - 如何从另一个分支只获取一个文件?

我正在使用 Git 并在master分支上工作。该分支有一个名为app.js.

我有一个experiment分支,我在其中进行了大量更改和大量提交。现在我想将所做的所有更改都带到app.jsfromexperimentmaster分支。

我怎么做?

我再一次不想合并。我只想将所有更改app.jsexperiment一个分支带到master另一个分支。

0 投票
1 回答
94 浏览

git - 为什么 Git 在检出旧版本时会显示某些新文件夹?

我仍在学习 Git 的技巧(喜欢它!)但前几天我注意到一些我不理解的行为。本质上,我们有三个文件夹在不同时间移入存储库(一个在我们创建存储库后立即移动,一个在不久之后,一个在最近)。最近,我不得不从旧版本中获取一些代码。我用了

拉起我们的第一次签入,当我注意到 Git 显示了旧文件夹(它应该)以及最新的文件夹(在签出提交后很久才添加到 repo 中)。但它没有显示第二个文件夹。

什么会导致 Git 显示带有旧版本的最新文件夹?

0 投票
3 回答
1176 浏览

git - 吉特。合并提交之间的结帐功能分支

这有点奇怪,但我无法用 git 完成一个非常常见的操作。基本上我想要的是检查一个功能分支,而不是使用它的头部,而是使用 SHA id。此 SHA 指向来自 master 分支的合并。

问题是我得到的只是主分支,没有来自功能分支的提交。目前我正在尝试修复之前在 master 分支中引入的回归。

为了更具描述性,我制作了一个小型 bash 脚本来重新创建问题存储库:

基本上我想要的只是用文件1-4签出分支“补丁”,但不包括test5.txt。

正在做: git checkout [sha_where_test4.txt_entered]

... 只给出一个带有 test1、test3、test4 的分支,但不包括 test2.txt

更复杂的例子:

谢谢。

0 投票
21 回答
643305 浏览

git - 如何从 git 存储库中只签出一个文件?

如何从 git repo 中只签出一个文件?

0 投票
3 回答
17572 浏览

git - “git reset --hard hash”和“git checkout hash”有区别吗?

虽然大多数reset时候checkout都有不同的用法,但我看不出这两者之间有什么区别。

可能有人或没有人会费心添加一个--hard选项来做一些基本checkout可以做的事情。

也许你会看到历史的方式有所不同?

0 投票
5 回答
130815 浏览

git - git stash 错误:git stash pop 并以合并冲突告终

我做了一个git stash pop并以合并冲突告终。我从文件系统中删除了文件并执行了git checkout如下所示的操作,但它认为文件仍未合并。然后我尝试替换文件并git checkout再次执行相同的结果。我尝试用-f标志强制它。任何帮助,将不胜感激!

0 投票
13 回答
70342 浏览

git - 意外结账后取回更改?

以下是我的回购的状态。

Accedently,我做到了git checkout -f,现在我不应该做的改变已经消失了。

我可以取回更改吗?

0 投票
7 回答
228023 浏览

git - Git:无法撤消本地更改(错误:路径...未合并)

我有以下工作树状态

文件foo/bar.txt在那里,我想让它再次进入“未更改状态”(类似于'svn revert'):

现在它变得越来越混乱:

两个部分中的相同文件,新的修改的?我该怎么办?

0 投票
7 回答
60222 浏览

git - 当我所做的只是压缩提交时,为什么 git-rebase 会给我合并冲突?

我们有一个包含 400 多个提交的 Git 存储库,其中前几十个是大量的反复试验。我们希望通过将许多提交压缩成一个提交来清理这些提交。自然, git-rebase 似乎是要走的路。我的问题是它最终会出现合并冲突,而这些冲突并不容易解决。我不明白为什么会有任何冲突,因为我只是在压缩提交(而不是删除或重新排列)。很可能,这表明我并不完全理解 git-rebase 是如何进行压缩的。

这是我正在使用的脚本的修改版本:


repo_squash.sh(这是实际运行的脚本):



repo_squash_helper.sh(此脚本仅供 repo_squash.sh 使用):



repo_squash_list.txt:(此文件仅供 repo_squash_helper.sh 使用)



我将把“新消息”的内容留给你想象。最初,我在没有“--strategy theirs”选项的情况下执行此操作(即,使用默认策略,如果我正确理解文档是递归的,但我不确定使用哪种递归策略),它也没有不工作。另外,我应该指出,使用 repo_squash_helper.sh 中注释掉的代码,我保存了 sed 脚本工作的原始文件并针对它运行 sed 脚本以确保它正在做我想要它做的事情(它是)。同样,我什至不知道为什么发生冲突,所以使用哪种策略似乎并不重要。任何建议或见解都会有所帮助,但大多数情况下我只是想让这个挤压工作。

更新了与​​ Jefromi 讨论的额外信息:

在处理我们庞大的“真实”存储库之前,我在测试存储库上使用了类似的脚本。这是一个非常简单的存储库,并且测试运行良好。

失败时我收到的消息是:

这是第一次壁球提交后的第一个选择。运行会git status产生一个干净的工作目录。如果我然后执行 a git rebase --continue,我会在多次提交后收到非常相似的消息。如果我再做一次,我会在几十次提交后得到另一个非常相似的消息。如果我再做一次,这次它会经历大约一百次提交,并产生以下消息:

如果我然后运行git status,我得到:

“两个修改”位对我来说听起来很奇怪,因为这只是一个选择的结果。还值得注意的是,如果我查看“冲突”,它可以归结为一行,其中一个版本以 [tab] 字符开头,另一个版本以四个空格开头。这听起来可能是我如何设置配置文件的问题,但其中没有任何问题。(我确实注意到 core.ignorecase 设置为 true,但显然 git-clone 是自动完成的。考虑到原始源位于 Windows 机器上,我对此并不完全感到惊讶。)

如果我手动修复file_X.cpp,它会在不久之后因另一个冲突而失败,这次是在一个版本认为应该存在的文件(CMakeLists.txt)和一个版本认为不应该存在的文件(CMakeLists.txt)之间。如果我通过说我确实想要这个文件(我确实想要)来解决这个冲突,那么稍后我会遇到另一个冲突(在同一个文件中),现在有一些相当重要的更改。它仍然只完成了大约 25% 的冲突。

我还应该指出,因为这可能非常重要,所以这个项目是从一个 svn 存储库开始的。最初的历史很可能是从那个 svn 存储库中导入的。

更新#2:

在百灵鸟(受 Jefromi 评论的影响)上,我决定将我的 repo_squash.sh 更改为:

然后,我按原样接受了原始条目。即,“变基”不应该改变任何事情。它最终得到了与前面描述的相同的结果。

更新#3:

或者,如果我省略该策略并将最后一个命令替换为:

我不再遇到“无事可做”的变基问题,但我仍然面临其他冲突。

使用重新创建问题的玩具存储库进行更新:

test_squash.sh(这是您实际运行的文件):

test_squash_helper.sh(由 test_sqash.sh 使用):

PS:是的,当你看到我使用 emacs 作为后备编辑器时,我知道你们中的一些人会畏缩。

PPS:我们确实知道在 rebase 之后我们将不得不删除现有存储库的所有克隆。(按照“发布后您不应重新设置存储库”的思路。)

PPPS:谁能告诉我如何为此添加赏金?无论我处于编辑模式还是查看模式,我都没有在此屏幕上的任何地方看到该选项。