2017-03-03 35 views
1

版本控制对我来说是新东西。我搜索了关于我的问题,但我没有找到我想要的答案。也许我没有使用正确的术语。Git - 如何在不丢失工作的情况下更新我机器上的主分支?

我在工作的一些新功能。我上周接受了主分支并开始工作。现在,远程主分支比我更新,因为另一个人做了一些紧急修复。

那么,我如何更新本地主分支而不失去工作?我认为我应该承担我的工作,再次从原籍/主人处拉回来,并与我自己的分支合并。这是正确的做法吗?我没有这样做,但因为我不安全。这是太多的工作,失去它将是非常糟糕的。

+0

承诺一切,然后做一个'git拉--rebase' – ckruczek

回答

3

这是太多的工作,失去它将是真的很糟糕。

首先:您可以简单地在本地复制您的完整存储库。 git在文件系统中不会有任何魔法;它生活在完全正常的文件中。实际上,如果您尝试使用东西,您可以简单地复制您的目录(使用cp或任何您喜欢的文件实用程序)并在该副本上工作。

那么,我怎么能更新本地主分支而不失去工作?我认为我应该承担我的工作,再次从原籍/主人处拉回来,并与我自己的分支合并。

就是这样的,是的。

git add ... 
git commit 
git pull origin master 
git push origin master 

git pull在功能上等于git fetch origin ; git merge origin/master。所以你以后不需要再做一次合并。拉动之后,您将在master中进行更改和更改。拉也是你可能会遇到冲突,并将不得不解决这些之前,你可以继续。

3

可以有不同的方法来做到这一点。我认为,如果你不加这些变化,掌握后,将这些变化的新的分支作为

git checkout -b tempbranch 

git add .然后git commit -m "message"

然后再去大师为git checkout master开关后掌握拉你的变化

git pull origin master

一旦你拉的变化运行最后命令 git merge tempbranch

+0

这就是我想的。我可以将我的分支与未更新的主人合并吗? –

+0

对于后期问题感到抱歉的是,除非您不添加本地更改,否则您无法进行更改 –

3

最佳做法是在自己的分支中开发一个功能(即,从master开始,或者更好的是从develop分支开始)。
git-flow提供了git(和许多git GUI客户端应用程序)中集成的指导和工具,以简化其他常见任务。

在您的方案中,您可以执行一些不同的操作,具体取决于要采用的分支策略和过程。

如果直接在master分支做出更改,更简单的一种是:

  1. 提交更改(本地,不推)
  2. 衍合在提交主人(GIT拉 - -rebase)

根据您想如何“管理”或让你的提交(如果您做了不止一个),你可以变基所有的提交,或重订交互(和“南瓜”作了一次提交到少)。

+0

是的,我有自己的分支。 Rebase会自动更新我的主人? –

+0

@ user2132073然后请编辑您的问题以包含此信息,因为答案可能会更好定制或您的方案。 (我的git-flow建议更有价值) – roalz

相关问题