我不小心进入了
git checkout -b develop
而不是
git checkout develop
尽管开发分支已经存在,但它表示已经创建了。
是否影响了develop
分支中的代码?我无法找到任何明确的文件。
答案 0 :(得分:4)
是否影响了开发分支中的代码?我找不到任何东西 清楚的文件。
不。您的develop
分支机构位于地下世界,您的下一个选择将确定可能发生的情况。
以下是我理解的交易:如果您之前已经签出develop
,则无法运行此命令:
git checkout -b develop
响应将是 - 我刚刚在我的本地机器上测试确认 - 将是:
fatal: A branch named 'develop' already exists.
那么在git checkout -b develop
运行时你的情况发生了什么?简单。您之前没有签出develop
。所以git正在执行该命令所做的事情:创建一个名为develop
的本地分支。
现在如果你做了什么&然后把它推到原点。好吧,如果你强迫这种情况,那将是一团糟。请继续阅读。
为了进一步澄清事情,如果你直接克隆git存储库而不做任何其他事情&然后,您在该存储库目录中运行以下命令,如果运行git branch -a
:
* master
remotes/origin/HEAD -> origin/master
remotes/origin/develop
remotes/origin/master
请注意*
主文件和后面的remote/origin/
项。这是理解你所做的事情的关键。为什么它能够发生。您会看到,在实际结帐develop
之前,它只是作为本地克隆中的远程引用(关键点)存在。但是当你执行git checkout develop
时,如果之后运行git branch -a
,结构会是这样的:
* develop
master
remotes/origin/HEAD -> origin/master
remotes/origin/develop
remotes/origin/master
请注意,现在您*
已连接到develop
,这意味着它是当前已检出的分支。
理解git的关键是有本地副本&有远程引用。任何超过master
的内容在您实际查看之前都不会被检出。
过去,让我们假设您git checkout -b develop
来自master
而没有本地develop
。好,太棒了!现在就你的代码做一些工作&然后做一个git pull
。您很可能会收到此消息:
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> develop
这基本上意味着您的本地develop
未连接到远程develop
,因此git需要帮助澄清事情。这样的事情应该让你感到有些不对劲。
但是等等!你还不是100%安全。如果您执行git push origin develop
,这可能会让您感到害怕。如果你确实在遥控器上有一个名为develop
的分支,你很可能会用这个新分支覆盖它。如果可以,请避免这样做。但在某些情况下,这可能是回应:
To git@github.com:CoolCoderDude4Life/The-Best-Repo.git
! [rejected] develop -> develop (non-fast-forward)
error: failed to push some refs to 'git@github.com:CoolCoderDude4Life/The-Best-Repo.git
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
在这一点上,您会看到另一个警告,即某些事情已经消失。但与此同时,你可以简单地在匆忙中读到这个。按照指示&amp; BOOM 工作以某种方式丢失。
可能比你想要的答案更长。但关于版本控制系统如何成为一个安全网,但安全网可以破解的一个可观的教育时刻。因此,良好的编码习惯需要成为工作流程的一部分。
答案 1 :(得分:2)
最重要的问题是,分支机构是存在于本地还是远程。
我的猜测是它本地不存在,因为你应该收到错误
致命:名为'develop'的分支已经存在。
如果确实
如果确实在本地没有必要担心,因为你所做的是从当时活跃的分支创建一个新的本地分支(我猜主人)
只要你不推(我不认为git会允许)你可以毫无问题地删除你的本地分支。
但我总是喜欢安全,所以每当我在git中做一些奇怪的事情并想要撤消它时,我会复制一份我当地的回购“以防万一”。
答案 2 :(得分:1)
是否影响了开发分支中的代码?
不,尤其是当该分支位于remotes/origin
命名空间(origin/develop
)时
您可以通过以下方式检查:
git branch -avvv
您可以使用以下方法将其重置为正确的原点:
git checkout -B develop origin/develop