问题标签 [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 checkout 的困惑
我对 git checkout 的行为感到困惑。git checkout的文档说:
- 合并
切换分支时,如果您对一个或多个在当前分支和您要切换到的分支之间不同的文件进行了本地修改,该命令将拒绝切换分支以在上下文中保留您的修改。但是,使用此选项,当前分支、工作树内容和新分支之间的三向合并完成,您将位于新分支上。
但是,我做了一个小测试,它的行为不像粗体部分所说的那样。那是:
- 我创建了一个 git repo
- 创建一个目录和一个包含一些内容的文件并将其提交到 master 分支。
- 创建另一个分支“testbranch”
- 更改主文件的内容。但没有承诺。
- 切换到“测试分支”。
- 现在,来自 master 分支的已更改和未提交的更改来到了 testbranch!
如果我有一些本地更改并想切换到分支,它不应该失败吗?
以下是重现此行为的命令列表:
谁能解释一下?
下面是我的 git 版本输出:
git - 在不使用结帐的情况下合并、更新和拉取 Git 分支
我在一个有 2 个分支 A 和 B 的项目上工作。我通常在分支 A 上工作,并合并来自分支 B 的东西。对于合并,我通常会这样做:
但是,我还想保留分支 B 的本地副本,因为我可能偶尔会在没有先与分支 A 合并的情况下签出分支。为此,我会这样做:
有没有办法在一个命令中完成上述操作,而不必来回切换分支?我应该为此使用git update-ref
吗?如何?
git - Git:如何将自上次提交以来的更改移动到新分支
我一直在研究一个我们可以称之为“A”的分支。我刚刚意识到自上次提交以来我添加的代码应该位于特定(实验)分支中,而不是“A”中。如何将更改提交到新分支并保持上次提交时的分支“A”?
git - Git:如何从远程源主机更新/签出单个文件?
场景:
- 我在本地对单个文件进行了一些更改并运行
git add
,git commit
并且git push
- 该文件被推送到远程源主存储库
- 我有另一个本地存储库,它通过 Capistrano 使用来自该远程存储库的“remote_cache”方法部署
- 现在我不想部署整个应用程序,而只是更新/签出单个文件。
这对git有可能吗?我找不到任何可行的方法,也无法弄清楚。使用 SVN,我刚刚做了svn up file
,瞧。
git - 显示你在哪个 git 标签上?
我无法找出当前签出的标签。
当我做:
我似乎无法找出我在哪个标签上。它只记录:
是否可以找出签出的标签?在上面的例子中,这将是tag1
.
git - 如何回到 Git 中的最新版本?
我最近从 SVN 搬到了 Git,对某些事情有点困惑。我需要通过调试器运行以前版本的脚本,所以我做了git checkout <previous version hash>
并且做了我需要做的事情。
现在我想回到最新版本,但我不知道它的哈希值。当我键入时git log
,我看不到它。
我怎样才能做到这一点?此外,有没有比输入哈希更简单的方法来更改版本 - 例如“返回两个版本”或“转到按时间顺序排列的最新版本”?
git - “git reset”和“git checkout”有什么区别?
我一直认为git reset
和git checkout
相同,因为两者都将项目带回特定的提交。但是,我觉得它们不可能完全相同,因为那将是多余的。两者之间的实际区别是什么?我有点困惑,因为 svn 只svn co
需要恢复提交。
添加
VonC 和 Charles很好地解释了git reset
和之间的区别。git checkout
我目前的理解是,git reset
将所有更改还原回特定的提交,而git checkout
或多或少地为分支做准备。我发现以下两个图表对理解这一点非常有用:
添加 3
从http://think-like-a-git.net/sections/rebase-from-the-ground-up/using-git-cherry-pick-to-simulate-git-rebase.html,结帐和重置可以模拟变基。
git - 错误:git checkout-index:无法创建文件
我要做的是在 Windows 上进行 git clone,但父存储库存在于 unix 机器中。
我正在使用 ssh 克隆从 UNIX 到 Windows 的克隆,我收到了这个奇怪的错误。
这发生在 git clone 的结帐步骤中。
谁能帮我?
git - git checkout HEAD~2 (example) 删除未跟踪的文件,如果它们是在最后一次提交中添加的
我添加新文件(以前作为未跟踪文件存在)并提交它们。当我在此提交之前结帐时,这些文件将被删除。他们不应该。
.gitignore 是否列出这些文件并不重要(这需要执行 git add -f ...)。
git - GIT:在新/脏/开发分支中提交对旧/安全分支的更改,而不签出或丢失未暂存的数据
在我开始开发一些实验性的东西之前,我创建了一个新的分支。我通常会忘记这一点(这不是问题),但现在我提前做到了。
从那以后,我更新了 3 个文件。
- 在 2 中只是我不想提交给安全分支的实验性更改。
- 在 1 中只是安全(次要)更改,我绝对希望将其提交到安全分支。我也可以将这些最后的更改提交给新分支(但不是)。
是否有可能——我敢肯定——(快速)从我的(脏)工作目录提交一些未暂存的、未提交的更改到一个旧的、安全的分支?
我唯一能想到的是切换分支(没有结帐),在 1 个文件中提交更改并切换回来,但我不知道切换回脏分支时更改会发生什么(它们是否仍然存在还是因为提交而“消失”了?)...
我确信 GIT 有一些漂亮的东西,但是 GIT 有这么多,我找不到完全相同的东西。
(我一直在使用这个“手册”寻求帮助 ,但我不确定里面是否有同样的东西。如果是(并且你愿意扫描它),请告诉我,所以我知道下一个是时候更加努力了。)
谢谢!现在,我将在手边保留一张纸,其中包含“稍后提交到安全分支”的更改。