问题标签 [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.
git - 有 git uncheckout 吗?
有git clone
一个选项-n
可以防止HEAD
在克隆存储库后签出。是否有可能手动执行此操作?
编辑我认为该选项-n
在手册中的阅读效果比实际更好:使用-n
我所有的工具进行克隆后显示我仍然驻留在主分支上;唯一的区别是所有文件都显示为已删除。这与我称之为“未签出”的情况并不完全相同。
所以也许我应该删除HEAD
?
git - 如何从另一个分支只获取一个文件?
我正在使用 Git 并在master
分支上工作。该分支有一个名为app.js
.
我有一个experiment
分支,我在其中进行了大量更改和大量提交。现在我想将所做的所有更改都带到app.js
fromexperiment
到master
分支。
我怎么做?
我再一次不想合并。我只想将所有更改app.js
从experiment
一个分支带到master
另一个分支。
git - 为什么 Git 在检出旧版本时会显示某些新文件夹?
我仍在学习 Git 的技巧(喜欢它!)但前几天我注意到一些我不理解的行为。本质上,我们有三个文件夹在不同时间移入存储库(一个在我们创建存储库后立即移动,一个在不久之后,一个在最近)。最近,我不得不从旧版本中获取一些代码。我用了
拉起我们的第一次签入,当我注意到 Git 显示了旧文件夹(它应该)以及最新的文件夹(在签出提交后很久才添加到 repo 中)。但它没有显示第二个文件夹。
什么会导致 Git 显示带有旧版本的最新文件夹?
git - 吉特。合并提交之间的结帐功能分支
这有点奇怪,但我无法用 git 完成一个非常常见的操作。基本上我想要的是检查一个功能分支,而不是使用它的头部,而是使用 SHA id。此 SHA 指向来自 master 分支的合并。
问题是我得到的只是主分支,没有来自功能分支的提交。目前我正在尝试修复之前在 master 分支中引入的回归。
为了更具描述性,我制作了一个小型 bash 脚本来重新创建问题存储库:
基本上我想要的只是用文件1-4签出分支“补丁”,但不包括test5.txt。
正在做:
git checkout [sha_where_test4.txt_entered]
... 只给出一个带有 test1、test3、test4 的分支,但不包括 test2.txt
更复杂的例子:
谢谢。
git - 如何从 git 存储库中只签出一个文件?
如何从 git repo 中只签出一个文件?
git - “git reset --hard hash”和“git checkout hash”有区别吗?
虽然大多数reset
时候checkout
都有不同的用法,但我看不出这两者之间有什么区别。
可能有人或没有人会费心添加一个--hard
选项来做一些基本checkout
可以做的事情。
也许你会看到历史的方式有所不同?
git - git stash 错误:git stash pop 并以合并冲突告终
我做了一个git stash pop
并以合并冲突告终。我从文件系统中删除了文件并执行了git checkout
如下所示的操作,但它认为文件仍未合并。然后我尝试替换文件并git checkout
再次执行相同的结果。我尝试用-f
标志强制它。任何帮助,将不胜感激!
git - 意外结账后取回更改?
以下是我的回购的状态。
Accedently,我做到了git checkout -f
,现在我不应该做的改变已经消失了。
我可以取回更改吗?
git - Git:无法撤消本地更改(错误:路径...未合并)
我有以下工作树状态
文件foo/bar.txt
在那里,我想让它再次进入“未更改状态”(类似于'svn revert'):
现在它变得越来越混乱:
两个部分中的相同文件,新的和修改的?我该怎么办?
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:谁能告诉我如何为此添加赏金?无论我处于编辑模式还是查看模式,我都没有在此屏幕上的任何地方看到该选项。