标签: git-checkout

本地存储库的 Git checkout 修订版

我有一个 Xcode 项目的本地 git 存储库。如何(从终端)将项目的特定版本签出到不同的文件夹?

谢谢。

git revision repository git-checkout

2
推荐指数
1
解决办法
2545
查看次数

将文件从不同的分支检出到当前分支的不同路径中

所以我知道我们可以使用以下命令将文件从其他分支检出到我们当前的工作分支中:

git checkout [someOtherBranch] [path/to/file]
Run Code Online (Sandbox Code Playgroud)

我希望这样的事情是可能的:

git checkout [someOtherBranch] [path/to/file] [path/we/want/to/copy/to]
Run Code Online (Sandbox Code Playgroud)

这可能吗?

git copy path git-checkout git-branch

2
推荐指数
1
解决办法
434
查看次数

Git:切换到已隐藏更改的分支时发出警告

有没有办法让 git 在切换到已隐藏更改的分支时自动警告您?

我正在寻找类似的东西:

$ git checkout my-branch
Switched to branch 'my-branch'
Stashed changes present: stash@{0}: WIP on my-branch: 836b45a My HEAD commit
Run Code Online (Sandbox Code Playgroud)

只是为了让我不要忘记几天后回到项目时我已经在分支上开始的工作。

git git-stash git-config git-checkout

2
推荐指数
1
解决办法
371
查看次数

由于本地更改,git checkout 失败,但之后 stash 应用干净

我经常尝试签出一个新的远程分支(以从中创建一个本地分支,但这可能与我的问题无关)并且 git 失败并出现以下错误

错误:您对以下文件的本地更改将被检出覆盖:
请在切换分支之前提交您的更改或隐藏它们。

现在,当我看到这一点时,人们可能会天真地期望如果一个人隐藏更改,签出新分支,然后应用隐藏的更改,那么就会发生冲突,但几乎从来没有这种情况。发生的情况是,隐藏的更改应用得很干净,而且我在检出新分支之前不会丢失任何东西。为什么 git 会给出这个看似误导性的错误?如果我可以在结账之前将其藏起来并在最后干净地应用藏匿处,为什么不在git checkout引擎盖下这样做呢?

编辑:
为了更清楚,我不是在问为什么结帐失败,或者为什么有时使用脏工作区的结帐会成功,我理解这一切。我的问题是,在这种情况下,有一个 100% 无数据丢失的行动方案(或者是否存在一些我看不到数据可能丢失的极端情况??)那么为什么 git 不这样做?

如果我对 git 的新手说文件foo第 100 行上的一个 modif会与文件foo第 2 行上的另一个 modif 冲突,那么对他们来说,接受它是事实,而不是抱怨,并且很容易解决冲突。但是因为 git 是一个不错的工具,所以它做的很聪明,甚至不会用它可以解决的非问题来打扰您,而没有任何损坏的风险。为什么在这种情况下与git checkout?

git git-stash git-checkout

2
推荐指数
1
解决办法
1217
查看次数

如何从两周前或从特定日期开始 git checkout -b ?

我正在尝试从master分支签出我的代码的旧版本,我正在执行以下操作:

git checkout -b master_de1974 `git rev-list -n 1 --before="5 days ago" master`
Run Code Online (Sandbox Code Playgroud)

这是正确的命令吗?我如何确定我是否获得旧代码而不是新代码?

git git-checkout

2
推荐指数
1
解决办法
2692
查看次数

如何在 Git 中以交互方式将文件从一个分支签出到另一个分支

我的 repo 中有两个分支,我不断地来回编辑并将其中一个的更改合并到另一个分支中。但是在合并之前,我喜欢检查正在合并的更改以及替换的内容,但是 demo 和 master 中很少有文件本质上彼此不同,并且它们将始终存在。这就是为什么有 2 个不同的分支。所以我倾向于使用git checkout --patch demo将代码从演示分支拉入主分支。但这会不必要地检查所有文件。
是否可以交互地从 2 个分支中检出特定文件,而不是检查整个分支?关于 Git 上补丁方法的文档非常少。我希望有人能帮我解决这个问题。

git git-checkout

2
推荐指数
1
解决办法
2483
查看次数

我用-d删除了一个分支,我该如何恢复/恢复它?

我删除了一个分支:

git branch -d <branch>
Run Code Online (Sandbox Code Playgroud)

它说:

 git branch -d oleg/feature/1533692217
warning: deleting branch 'oleg/feature/1533692217' that has been merged to
         'refs/remotes/origin/oleg/feature/1533692217', but not yet merged to HEAD.
Deleted branch oleg/feature/1533692217 (was f7a4a13).
Run Code Online (Sandbox Code Playgroud)

我想我知道这意味着什么,如何用名称恢复分支:

oleg/feature/1533692217
Run Code Online (Sandbox Code Playgroud)

有没有办法恢复分支而不检查它?

请注意,当我将其与集成分支合并时,我压缩了我删除的功能分支,这就是为什么警告消息可能已经出现的一个原因.可能git不处理这种情况?

git git-checkout git-branch

2
推荐指数
1
解决办法
70
查看次数

为什么在 git clone 之后 git checkout?

我是 git 新手。我了解 git 基础知识以及使用 git 的开发过程,但是有一件事让我感到困惑。

每当我必须从包含多个项目的 git 存储库中提取某些内容时(示例),我都会看到以下说明步骤:

  1. git克隆xxx
  2. cd xxx
  3. git 结帐 yyy

这对我来说有点令人费解。由于我已经拥有整个存储库,如果我可以复制文件夹并对其进行任何我喜欢的操作,我为什么要签出我感兴趣的项目?

git version-control github git-clone git-checkout

2
推荐指数
2
解决办法
5923
查看次数

Git 说一个文件被修改了,即使它不是

所以我在我的分支internal_env_board2 上,我试图切换到分支battery_board。但是,当我尝试这样做时,出现错误:

$ git checkout battery_board
error: Your local changes to the following files would be overwritten by checkout:
        internal_env_board/internal_env_board2/internal_env_board_with_LCD_BOM.xlsx
Please commit your changes or stash them before you switch branches.
Aborting
Run Code Online (Sandbox Code Playgroud)

我很生气,因为我知道我没有修改这个 .xlsx 文件。我所做的唯一一件事就是打开 excel 文件,查看其内容,然后再次关闭它。出于某种原因,git 认为此文件中有更改。我尝试使用 git diff 来查找工作树副本和最近提交的副本之间的差异,并得到以下结果:

$ git diff HEAD internal_env_board_with_LCD_BOM.xlsx
diff --git a/internal_env_board/internal_env_board2/internal_env_board_with_LCD_BOM.xlsx b/internal_env_board/internal_env_board2/internal_env_board_with_LCD_BOM.xlsx
index 0fb3369..10c945e 100644
Binary files a/internal_env_board/internal_env_board2/internal_env_board_with_LCD_BOM.xlsx and b/internal_env_board/internal_env_board2/internal_env_board_with_LCD_BOM.xlsx differ
Run Code Online (Sandbox Code Playgroud)

我在理解这个 diff 命令的输出时遇到了很多麻烦。它只是告诉我它们不同,但不是如何。

所以我想我的两个问题是:

1. 为什么git只因为打开了文件就认为我修改了文件?

2. 如何读取 命令的输出git diff HEAD ?

git git-diff git-checkout

2
推荐指数
1
解决办法
1370
查看次数

如何使用Github Actions签出最新提交?

我创建了一个新的Rust项目,并决定,我将给Github Actions一个尝试在每个请求请求上运行自动化构建和测试的方法:

name: Rust
on: [pull_request]
Run Code Online (Sandbox Code Playgroud)

我花了一段时间注意到默认情况下,Github Actions根本不签出我的代码,而GITHUB_WORKSPACE只是空的。因此,我尝试手动克隆存储库。做这样的事情:

name: Rust
on: [pull_request]
Run Code Online (Sandbox Code Playgroud)

但这只是检查默认分支上的内容。因此,我调查了检查$GITHUB_SHA结果是否是我的存储库未知的。对于$GITHUB_REF空的情况也是如此。

在这一点上,我对所做的事情一无所知。我最初的假设是,实际上配置为运行的作业on: [pull request]应具有该代码,但无法检出并准备该代码。

我还调查了提供的Checkout操作:

此操作将您的存储库签出到$GITHUB_WORKSPACE,以便您的工作流可以访问存储库的内容。

默认情况下,这等效于运行git fetch和git checkout $GITHUB_SHA,因此您将始终以触发该工作流程的版本获得您的回购内容。请参阅此处以了解$GITHUB_SHA各种事件的含义。

但是正如我之前所说,$GITHUB_WORKSPACE完全是空的,a git fetch只会告诉您没有git存储库。

这是一个示例失败:

On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
fatal: reference is not a tree: d76745134ae45905e4a0ab8d27c92f1e2544bdc1
##[error]Process …
Run Code Online (Sandbox Code Playgroud)

git continuous-integration github git-checkout github-actions

2
推荐指数
1
解决办法
306
查看次数