【问题标题】:git: question about creating branches and cloning reposgit:关于创建分支和克隆 repos 的问题
【发布时间】:2019-12-08 04:43:34
【问题描述】:

我刚刚从master 创建了一个名为new_branch 的分支

所以我检查了那个新分支,添加了一个新文件,然后添加/提交/推送。

git add new_file.php
git commit -m "A new file"
git push origin new_branch

所以在那之后,我克隆了我的 repo 示例,问题是我在新分支中添加的那个文件不在克隆的工作树的主分支中。我应该怎么做才能在克隆的工作树的主分支中找到那个新文件?

注意:抱歉,因为标题不准确。也许有人想改变它。

【问题讨论】:

  • 听起来你混淆了master(一个实际的分支)和HEAD(一个指向分支的指针,表示哪个分支会受到git commit的影响等)。您将新文件提交给new_branch,而不是master,这就是您推送到的分支。所以当你再次克隆远程仓库时,你需要再次签出new_branch才能看到new_file
  • new_branch 参数是指origin 上应该更新的分支,而不是本地存储库中要推送 from 的分支。这始终是当前签出的任何分支(恰好是 local 分支,也名为 new_branch)。
  • @chepner 是的,你是对的:我刚刚在我的克隆仓库中签出了分支 new_branch,我可以找到该文件。但是,如何在克隆后自动获取master 分支中的该文件?
  • 有多种方式,但您选择哪一种取决于您希望masternew_branch之间的关系类型。您可以将new_branch 合并为master;你可以从new_branchmaster 中挑选一个提交;你可以检查new_branch(将new_file添加到你的工作目录, then check out master`(将new_file作为一个未跟踪的文件留在你的工作目录中),然后将new_file提交给master,就好像它是一个全新的文件。
  • 您选择哪个选项可能还取决于问题的答案“为什么首先将new_file 提交给new_branch 而不是master?”

标签: git git-branch git-commit


【解决方案1】:

您的问题表明您没有完全了解分支是什么以及主分支是什么。我建议阅读更多内容并做教程。

要使用一个非常基本的工作流程来回答这个问题,您可以使用:我假设“new_branch”是一个功能分支,您的工作流程是将功能分支合并到一个主分支(一个经典、简单的 git 工作流程)。 切换到主分支:

git checkouter master

合并您的功能:

git merge new_branch

(修复合并冲突,因为你只是添加一个文件,所以应该没有) 发布更改:

git push origin

现在您已将新功能合并到主分支中,并且每个克隆都将包含您的功能。正如@chepner 所提到的,git 提供了更多的可能性,但是,对于学习和理解分支来说,这是一个简单的起点。

【讨论】:

    猜你喜欢
    • 2021-06-26
    • 2010-11-20
    • 2011-03-08
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多