天道酬勤,学无止境

git branch unkown but checkout works

on my remote repository a new branch has been created. In GitBash in my Working Directory (on master branch) I type git remote update and git pull. To my understanding git remote update will update all branches set to track remote ones as explained here: What is the difference between 'git remote update', 'git fetch' and 'git pull'?

So when I type git diff master newBranch --name-only I expected to see a list of files which are different in both branches. But instead I got the following error message:

fatal: ambiguous argument 'newBranch': unknown revision or path not in the working tree.

But if I type git checkout newBranch it works fine, and if I switch back to master by typing git checkout master suddenly git diff master newBranch --name-only works perfectly?

Could anyone explain to me this behavior?

评论

When you typed git diff master newBranch --name-only for first time, you had not any local newBranch branch. So, it gives the error:

fatal: ambiguous argument 'newBranch': unknown revision or path not in the working tree.

Later when you checked out to the newBranch by git checkout newBranch command, a new local branch is created. So, next time git diff master newBranch --name-only is working as well.

Note: git checkout newBranch actually finds a local newBranch branch if found then switch to the branch. But if not found then finds in remote branch lists if found then create a new local newBranch branch tracking the remote newBranch branch.

As you mentioned you don't have the local copy of the branch "newBranch" so you need to specify that you want to do a diff with the branch tag from the remote like this:

git diff origin/master origin/newBranch --name-only

or assuming you have the master locally:

git diff master origin/newBranch --name-only

Check which branches you have locally:

git branch -l

or

git branch

check remote branches

git branch -r

check all branches:

git branch -a

So this worked for you after you did a checkout because git automatically created a local branch called newBranch. So before your checkout git branch would not show a branch called "newBranch" but after the checkout it would.

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Git:根据主服务器上未上演的/未提交的更改创建分支(Git: Create a branch from unstaged/uncommitted changes on master)
    问题 上下文:我正在为master添加一个简单的功能。 几分钟后,我意识到这并不是那么简单,进入一个新分支应该更好。 这总是发生在我身上,我不知道如何切换到另一个分支,并在我离开主分支的情况下进行所有这些未提交的更改。 我以为git stash && git stash branch new_branch可以简单地做到这一点,但这就是我得到的: ~/test $ git status # On branch master nothing to commit (working directory clean) ~/test $ echo "hello!" > testing ~/test $ git status # On branch master # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: testing # no changes added to commit (use "git add" and/or "git commit -a") ~/test $ git
  • Git获取远程分支(Git fetch remote branch)
    问题 我和我的同事正在同一存储库上工作。 我们已经将其分为两个分支,每个分支在技术上都针对不同的项目,但是它们具有相似之处,因此有时我们需要从branch中将其提交回* master 。 但是,我有branch 。 我的同事该如何专门拉那个分支? 仓库的git clone似乎并没有为他在本地创建分支,尽管我可以看到在推动我的分支之后它们仍然处于松散状态。 另外,当我最初创建分支时,我做了-b checkout 。 那有什么不同吗? $ git branch -r origin/HEAD -> origin/master origin/daves_branch origin/discover origin/master $ git fetch origin discover $ git checkout discover 这些是我运行的命令。 但这绝对不起作用。 我希望能够检出该分支,然后将各种协作者或工作站的分支更改推回并提交。 回答1 更新:使用Git开关 下面写的所有信息都是准确的,但是添加了新命令git switch,从而简化了工作。 如果daves_branch存在于远程存储库中,但不存在于本地分支中,则只需键入: git switch daves_branch 由于您在本地没有分支,这将自动使switch在远程仓库上显示。 然后,它还将自动设置远程分支跟踪。 原始帖子
  • Git:将更改移出主分支(Git: move changes off of master branch)
    问题 基本问题,但这一直发生在我身上: 在working-branch更改切换到master git merge working-branch git push cap deploy (到登台) 泡一杯新茶 然后我回来考虑其他事情并开始进行一些更改......同时仍在掌握中。 有什么简单的方法可以: 防止对 master 的直接编辑(可能是警告) 将所有编辑移至working-branch并清除master以便我可以继续在working-branch上进行编辑将编辑旋转到一个全新的分支new-working-branch然后丢弃working-branch ? 冒险并尝试在本页“分支”部分的后半部分推荐,但这只是抹去了我所有的编辑!?! 也许是因为在git branch dubious-experiment和git checkout master ,两个分支上的git status是相同的(不是 master 上的“干净”)。 所以git reset --hard <SHA1sum>消除了两者的所有更改!?! git branch dubious-experiment M---N-----O----P---Q ("master" and "dubious-experiment") git checkout master # Be careful with this next
  • 如何将更改合并到单个文件,而不是合并提交?(How do I merge changes to a single file, rather than merging commits?)
    问题 我有两个分支(A和B),我想将分支A中的单个文件与分支B中的相应单个文件合并。 回答1 我遇到了同样的问题。 确切地说,我有两个分支A和B具有相同的文件,但在某些文件中具有不同的编程接口。 现在,在分支B中更改了文件f的方法,该方法独立于两个分支中的接口差异,但是更改对于两个分支都很重要。 因此,我只是需要文件合并f分支B到文件f分支的A 。 如果我假设所有更改都在分支A和B都提交,那么一个简单的命令已经为我解决了这个问题: git checkout A git checkout --patch B f 第一个命令切换到分支A ,在这里我要合并文件f B版本。 第二条命令使用B的HEAD的f修补文件f 。 您甚至可以接受/丢弃补丁的单个部分。 除了B您还可以在此处指定任何提交,而不必为HEAD 。 社区编辑:如果文件f对B不存在上A还没有,那么忽略--patch选项。 否则,您将获得“无更改”。 信息。 回答2 这是我在这些情况下的工作。 这很麻烦,但对我来说很好。 根据您的工作分支创建另一个分支。 git pull / git合并包含要复制的文件的修订版(SHA1)。 因此,这将合并您的所有更改,但是我们仅使用此分支来抓取一个文件。 修复所有冲突等。调查您的文件。 结帐您的工作分支检出从合并提交的文件。 提交。 我尝试打补丁,而我的情况太丑陋了。 简而言之,它看起来像这样:
  • 存在相同名称的文件时,Git更改分支(Git change branch when file of same name is present)
    问题 我的git仓库中有一个名为xyz的文件。 巧合的是,我还有一个名为xyz的分支。 目前,我在master上,但是我想结帐到xyz分支。 使用的命令很简单 $ git checkout xyz 但这会将文件xyz检出到当前的HEAD。 如何将分支更改为分支xyz ? 回答1 如commit a047faf(git 1.8.4.3+)所示,您也可以尝试: git checkout xyz -- (注意:Git 2.21,Q1 2019会更清楚地显示错误消息) 这将清楚地表明xyz部分是分支或提交,而--之后的所有内容都必须是路径(此处未提供路径)。 有关双连字符约定的更多信息,请参见此处。 如果您尝试不使用' -- ',则可能有效或无效,如“为什么git checkout <remote_branchname>不会创建新的跟踪分支?”所示: git checkout name可以: 如果是本地分支或显式远程分支,请切换到该分支。 如果是跟踪的路径,请重置它如果它是远程分支,则创建一个跟踪分支并切换到该分支。 而且它的行为并不总是相同的。 因此,“ -- ”提供了明确的歧义。 更新2019年8月,Git 2.23+ git checkout太混乱了,被替换为: git switch :这意味着即使您有一个文件xyz , git switch xyz也可以工作, git
  • git checkout master 不切换分支 - 存储库损坏了?(git checkout master does not switch branch - repository broken?)
    问题 tl;dr : git checkout master没有切换到 master 分支,根本没有给出错误或任何输出,我不知道为什么。 任何其他分支都可以正常工作。 我有一个由分支development和master组成的 git 存储库。 我做了一个新的存储库克隆,默认检查分支development 。 $ git clone <REPO-URL> --branch development $ git branch -a * development origin/HEAD -> origin/development origin/development origin/master $ git show-ref 656c781c2affc26792f857baf8e232de07101535 refs/heads/development 656c781c2affc26792f857baf8e232de07101535 refs/remotes/origin/HEAD 656c781c2affc26792f857baf8e232de07101535 refs/remotes/origin/development cfee1a1761642453edf5d001565f23b50243ff09 refs/remotes/origin/master ref master 指向的是正确的
  • git:切换分支并忽略任何更改而无需提交(git: Switch branch and ignore any changes without committing)
    问题 我正在git分支上工作,可以提交更改,因此我使用了有用的提交消息进行了提交。 然后,我无意中对代码进行了微小的更改,这些更改不值得保留。 我现在想更改分支,但是git给了我, 错误:您对“ X”进行了本地更改; 无法切换分支。 我可以不提交就更改分支吗? 如果是这样,我该如何设置? 如果没有,我如何摆脱这个问题? 我想忽略小的更改而不提交,而只更改分支。 回答1 您需要一个干净的状态来更改分支。 仅在不影响“脏文件”的情况下才允许分支检出(如Charles Bailey在评论中所述)。 否则,您应该: 存放您当前的更改或重置--hard HEAD(如果您不介意丢失那些较小的更改)或 checkout -f(切换分支时,即使索引或工作树与HEAD不同,也要继续。这用于丢弃本地更改。) 或者,最近: 使用Git 2.23(2019年8月)和新命令git switch: git switch -f <branch-name> ( -f是--force缩写,它是--discard-changes的别名) 即使索引或工作树与HEAD不同,也要继续。 索引和工作树都将还原以匹配切换目标。 这与git switch -m <branch-name> ,后者在当前分支,您的工作树内容和新分支之间触发了三路合并:您不会以这种方式松散正在进行的工作。 回答2 如果您要放弃更改, git
  • “git 结帐 ”正在将分支更改为“无分支”(“git checkout <commit id>” is changing branch to “no branch”)
    问题 我正在 git 的一个分支上工作。 当我做 git checkout <commit id> (从git log获得的提交 ID),它正在提交该特定更改,但分支更改为<No-branch> 。 为什么会这样? 你如何解决这个问题? 回答1 如果您直接checkout提交 sha,它会将您置于“分离头”状态,这基本上只是意味着您的工作副本已检出的当前 sha 没有指向它的分支。 如果您还没有进行任何提交,您可以通过在检查提交 sha 之前简单地检查您所在的任何分支来离开分离的头部状态: git checkout <branch> 如果您确实在处于 detached head 状态时进行了提交,则可以通过在离开 detached head 状态之前或同时附加一个分支来保存您的工作: # Checkout a new branch at current detached head state: git checkout -b newBranch 您可以在官方 Linux 内核 Git 文档中阅读有关分离头状态的更多信息以进行结帐。 回答2 通过检查历史记录中的提交之一,您将 git 移动到所谓的“分离状态”,这看起来不是您想要的。 使用此单个命令在历史记录中的其中一个提交上创建一个新分支: git checkout -b <new_branch_name> <SHA1> 回答3
  • 带有点的Git结帐(Git checkout with dot)
    问题 下一个git命令之间有什么区别: git checkout branch git checkout branch . git checkout . #<-- used at the branch 为什么当我在第一个分支中将不同的分支签出到不同的文件夹时,我错过了一些文件。 但是,当我使用第二条命令时,一切正常吗? 回答1 无论是否给定路径说明符,git checkout(1)都会做非常不同的事情。 仅使用分支指定符( git checkout branch ),它将当前工作目录切换到指定的分支,并在可能的情况下保留本地更改,否则将失败。 如果您已经在branch ,那么它将什么都不做。 它仅修改工作目录中HEAD与branch之间不同的文件,如果其中任何一个进行了本地修改(是否已建立索引),则该文件将失败。 使用路径说明符,它将覆盖具有指定内容的所有匹配文件(所有文件都匹配. ): 仅使用路径说明符( git checkout . ),它从索引写入内容。 它撤消了未分级的本地修改。 要撤消分阶段的修改,请使用带有路径说明符的git reset 。 同时具有分支和路径说明符( git checkout branch . ),它将内容写入指定的修订版中。 它不会修改HEAD指向的位置,因此,如果branch与HEAD不同,此后将进行暂存的更改。 请注意,手册页区分了使用-b /
  • 无法使用多个遥控器进行结账(Can't do a checkout with multiple remotes)
    问题 我在本地git仓库中设置了两个遥控器。 一个是我正在贡献的开源项目的回购,另一个是我对该回购的支持。 看来我只能检出从origin遥控器拉下来的东西。 我从远程获取分支的常规方法包括 $ git fetch <remote> <branch> $ git checkout <branch> 但这在我当前的情况下似乎不起作用。 $ git fetch my-remote my-branch remote: Counting objects: 2297, done. remote: Compressing objects: 100% (1951/1951), done. remote: Total 2297 (delta 1044), reused 0 (delta 0), pack-reused 50 Receiving objects: 100% (2297/2297), 2.10 MiB | 1.59 MiB/s, done. Resolving deltas: 100% (1045/1045), done. From https://github.com/me/my-repo * branch my-branch -> FETCH_HEAD * [new branch] my-branch -> origin/my-branch $ git checkout my
  • GIT:在新/脏/开发分支中提交对旧/安全分支的更改,而不会检出或丢失未暂存的数据(GIT: commit changes to old/safe branch while in new/dirty/dev branch without checking out or losing unstaged data)
    问题 在开始开发一些实验性的东西之前,我创建了一个新分支。 我通常会忘记这一点(这不是问题),但现在我事先做了。 从那以后,我更新了 3 个文件。 在 2 中只是我不想提交到安全分支的实验性更改。 在 1 中只是我绝对希望提交到安全分支的安全(次要)更改。 我对将这些最后的更改也提交到新分支感到满意(但不是)。 是否有可能——我确定是——(快速)将一些未暂存的、未提交的更改从我的(脏)工作目录提交到一个旧的、安全的分支? 我唯一能想到的是切换分支(没有结帐),提交 1 个文件中的更改并切换回来,但我不知道切换回脏分支时更改会发生什么(它们还在吗?或者他们是否因为提交而“消失”了?)... 我确信 GIT 有一些漂亮的东西,但 GIT 有这么多,我找不到完全相同的东西。 (我一直在使用这本“手册”寻求帮助,但我不确定里面是否有相同的内容。如果是(并且您愿意扫描该内容),请告诉我,以便我知道接下来是时候看起来更努力了。) 谢谢! 现在,我将在手边放一张纸,其中包含“稍后提交到安全分支”的更改。 回答1 所以你的情况是 x--x--x (safe) \ <a,b,c> (3 private evolutions in exp branch) 你想去 x--x--x--a (a committed only in safe banch) \ b,c (b and c commited in
  • 为什么 git checkout 不创建新的跟踪分支?(Why does git checkout <remote_branchname> not create new tracking branch?)
    问题 TLDR :如果 X 作为远程分支存在,那么git checkout X应该创建它的本地分支。 就我而言,对于单个分支,它没有。 远程存储库有一个master, release,和一些其他分支(比如refactor-update ),我这样做: git clone WHATEVER/repo.git git checkout release 但是我没有收到正常的分支切换消息,也没有创建本地分支跟踪origin/release (根据git checkout的man页)。 我还在master. 请注意,如果我执行git checkout refactor-update一切正常。 这可以在其他计算机上重现(尽管相同的平台并且可能是相同版本的 git)。 我有(出于绝望,不是因为我认为它会起作用),删除了release分支并分别用备份和master替换它,行为没有改变( git push origin :release && git push origin master:release ) 我对可能导致问题的原因感到困惑。 我怀疑git checkout出于某种原因似乎无法识别release这个词,这使它很像只执行git checkout 。 为了尝试跟进这个,在另一个仓库中我创建了一个发布分支来查看它是否是一个保留字或其他东西,但它绝对只是在这个仓库中。 .git
  • 切换Git分支而无需文件检出(Switch Git branch without files checkout)
    问题 是否可以在Git中切换到另一个分支而不检出所有文件? 切换分支后,我需要删除所有文件,重新生成它们,然后提交并切换回去。 因此检出文件只是浪费时间(大约有14,000个文件-这是一个漫长的操作)。 为了使一切变得清晰: 我需要所有这些来将文档上传到GitHub。 我有一个带有gh-pages分支的存储库。 在本地重建文档时,将其复制到存储库目录,提交并推送到GitHub。 但是我不高兴,因为我在本地有两份文档。 我决定创建一个空分支,并在提交后切换到空并删除文件。 但是切换回来是一个漫长的操作-所以我问了这个问题。 我知道我可以只离开gh-pages分支并删除文件,但是我不喜欢脏的工作树。 回答1 是的,您可以这样做。 git symbolic-ref HEAD refs/heads/otherbranch 如果您需要在此分支上提交,则也需要重置索引,否则最终将根据最后一个签出分支提交一些内容。 git reset 回答2 仅使用基本的git命令: 这个答案比Charles的答案要长一些,但它只包含我能理解并记住的基本git命令,从而无需继续查找它。 标记您的当前位置(如果需要,请先提交): git checkout -b temp 在不更改工作目录的情况下,将标记重置(移动)到另一个分支: git reset <branch where you want to go>
  • git checkout到底是什么意思?(What do git checkouts really mean?)
    问题 什么是git中的checkout ? 我知道一旦您checkout到特定分支, HEAD指向该分支。 但这到底是什么意思? 这是否意味着我可以在那个分支上工作? 如果是,那么,在不签出分支的情况下,我无法进行处理吗? 另外, remote checkout是什么意思? 有什么用? 回答1 如前所述, HEAD是一个标签,用于指示您在提交树中的位置。 当您从一个提交移至另一个提交时,它会与您一​​起移动。 git checkout <commit>是在提交树中移动,将焦点( HEAD )移动到指定提交的基本机制。 可以通过多种方式中的任何一种来指定提交,提交哈希,分支名称,标签名称,相对语法( HEAD^ , HEAD~1等)等等。 通常认为将签出更改为分支是很有用的,从该角度来看,有一些选项可行,但是它们都引用提交。 检出一个提交除了会移动HEAD以外,还具有一些副作用。 工作目录将更新为检出提交的状态。 如果指定了分支名称,则检出将使该分支处于活动状态。 活动分支将随添加的所有新提交一起移动。 使用-b选项,将基于当前提交创建一个新分支,然后将其激活。 使用--track选项,可以使检出的分支知道远程分支使用--orphan选项,将创建一个新分支(与-b相似),但不会基于任何现有提交。 还有更多选项,您可以在git checkout手册页中阅读这些选项
  • 在不覆盖数据的情况下进行 git checkout(To git checkout without overwriting data)
    问题 如何在不覆盖数据的情况下进行git-checkout ? 我跑 git checkout master 我得到 error: Entry 'forms/answer.php' would be overwritten by merge. Cannot merge. 这令人惊讶,因为我在git-checkout时不知道 Git 会合并。 我一直在单独运行命令git merge new-feature 。 如果 Git 在结帐时合并,这显然是不必要的。 回答1 Git 警告您, forms/answers.php 在您的工作副本或索引中有尚未提交的更改。 您可以使用git-stash来保存您的更改,然后git-stash apply来恢复它们。 git-stash的常见用例是您正在处理更改,但必须临时检出不同的分支以修复错误。 因此,您可以将更改存储在索引和工作副本中,签出另一个分支,修复错误,提交,签出原始分支,然后git-stash 应用来恢复更改并从中断的地方继续。 回答2 Git 在切换分支时对未提交的更改进行 2 向合并(使用git checkout <branch> ),但通常它只进行微不足道的(树级)合并。 除了 Karl Voigtland 的git-stash解决方案,您还可以为 git checkout 提供其他选项,选择以下选项之一: 告诉
  • 错误:您对以下文件的本地更改将被签出覆盖(error: Your local changes to the following files would be overwritten by checkout)
    问题 这个问题与此类似,但更具体。 我有一个包含两个分支的项目: staging和beta 。 我在staging上staging开发,并使用master分支来修复错误。 因此,如果我正在暂存中并且看到错误,则更改为master分支: git checkout master 并做的事情: git add fileToAdd git commit -m "bug fixed" 然后我与两个分支合并: git checkout staging git merge master git checkout beta git merge beta 并且在工作树上是否还有其他文件也没关系。 但是现在,当我尝试更改为master分支时,出现了一个错误: error: Your local changes to the following files would be overwritten by checkout: src/Pro/ConvocationBundle/Controller/DefaultController.php Please, commit your changes or stash them before you can switch branches. Aborting 我认为应该从登台区域删除文件: git reset HEAD src/Pro
  • git post-receive钩子将每个分支签出到不同的文件夹?(Git post-receive hook to checkout each branch to different folders?)
    问题 我们的Git工作流程的基本设置是在本地网络服务器上的裸存储库,其中有两个开发人员将其推入/拉入。 我们想自动复制(签出)每个被推送到本地网络服务器上不同位置的分支。 举例说明: 将“ develop”分支副本推送到“ develop”子文件夹。 将“ master”分支推送到“ master”子文件夹。 我们遇到的问题是使接收后钩子执行此操作。 这是我们目前拥有的: #!/bin/bash while read oldrev newrev ref do branch=`echo $ref | cut -d/ -f3` if [ "master" == "$branch" ]; then GIT_WORK_TREE=/master git checkout -f $branch echo 'Changes pushed master.' fi if [ "develop" == "$branch" ]; then GIT_WORK_TREE=/develop git checkout -f $branch echo 'Changes pushed to develop.' fi done 收到的错误是: “远程:致命:此操作必须在远程工作树中运行:已推动更改以进行开发。” 正如您从该错误中预期的那样-实际上没有任何内容被检出。 我也尝试过用这种方式来接收邮件,但是存在相同的问题
  • Git将母版合并到功能分支中(Git merge master into feature branch)
    问题 假设我们在Git中有以下情况: 创建的存储库: mkdir GitTest2 cd GitTest2 git init 在主服务器中进行一些修改并提交: echo "On Master" > file git commit -a -m "Initial commit" Feature1从master分支出来,并完成了一些工作: git branch feature1 git checkout feature1 echo "Feature1" > featureFile git commit -a -m "Commit for feature1" 同时,在主代码中发现一个错误,并建立了一个修补程序分支: git checkout master git branch hotfix1 git checkout hotfix1 该错误已在hotfix分支中修复,并重新合并到master中(可能在请求请求/代码审查之后): echo "Bugfix" > bugfixFile git commit -a -m "Bugfix Commit" git checkout master git merge --no-ff hotfix1 Feature1的开发仍在继续: git checkout feature1 假设我在功能分支中需要此修补程序,也许是因为该错误也发生在这里。
  • 如何解决git的“无法合并的错误”错误(How to resolve git's “not something we can merge” error)
    问题 在git中将分支合并到master时遇到了一个问题。 首先,我通过运行git ls-remote获得分支名称。 我们将该分支称为“分支名称”。 然后,我运行git merge branch-name命令并获得以下结果: fatal: branch-name - not something we can merge 我该如何解决此错误? 回答1 如“如何无法合并”所示,该错误可能是由分支名称中的错字引起的,因为您试图拉出不存在的分支。 如果这不是问题所在(如我的情况),则可能您没有要合并的分支的本地副本。 Git需要两个分支的本地知识才能合并这些分支。 您可以通过签出要合并的分支,然后返回要合并到的分支来解决此问题。 git checkout branch-name git checkout master git merge branch-name 这应该可以,但是如果出现错误提示 error: pathspec 'remote-name/branch-name' did not match any file(s) known to git. 您需要在签出分支之前获取远程对象(可能但不一定是“源”): git fetch remote-name 回答2 这是一个愚蠢的建议,但请确保分支名称中没有错字! 回答3 从远程上游拉git fetch --all , git fetch
  • 将Git分支合并到master中的最佳(最安全)方法是什么?(What is the best (and safest) way to merge a Git branch into master?)
    问题 从master创建了一个新分支,我们将其称为test 。 有几个开发人员要么致力于master要么创建其他分支,然后合并为master 。 假设test工作需要花费几天的时间,并且您想通过master内的提交来不断更新test 。 我会做git pull origin master从test 。 问题1:这是正确的方法吗? 其他开发人员可以像我一样轻松地处理相同的文件。 我的test工作已经完成,我准备将其合并回master 。 这是我可以想到的两种方法: A: git checkout test git pull origin master git push origin test git checkout master git pull origin test B: git checkout test git pull origin master git checkout master git merge test 我不使用--rebase因为据我所知,rebase将获得master和stack mine的更改,因此它可能会覆盖其他人所做的更改。 问题2:这两种方法中哪一种是正确的? 有什么区别? 所有这一切的目的是使我的test分支与master发生的事情保持更新,然后我可以将它们合并回master希望时间线尽可能保持线性。 回答1 我将如何做 git checkout