持有提交并拉出存储库,然后推送提交

时间:2015-05-14 03:05:13

标签: git

我是一个初学者,为天真的问题道歉:

我通过以下方式将我的本地仓库变成一团糟:

改变事物并提交但不推动。现在,服务器上的存储库已被其他一些用户更改。我理想的做法是忽略我的所有提交,从服务器中提取最后一个版本,然后提交我的更改,然后推送。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:2)

假设只涉及主分支,请执行以下操作:

$ git pull --rebase origin master

您将所有更改提取到主分支,您的提交已重新设置,就像您第一次撤消新更改一样,然后开始进行更改并提交。

你也可以

$ git pull

但你最终可能会以合并提交结束。我喜欢先修改(或pull --rebase)以使历史更容易阅读。

查看这些git教程:https://www.atlassian.com/git/

答案 1 :(得分:0)

我假设此处只涉及master分支。

首先将当前工作保存到新分支

git checkout -b saved_branch

你可以结账到你开始的提交。

git checkout ab1234efbe 

然后你可以创建一个新的分支基础

git checkout -b new_branch_name

现在进行其他人所做的更改

git pull origin master

然后你可以合并

git merge saved_branch

现在你可以推送到服务器了。

答案 2 :(得分:0)

听起来你做得很好。

有很多方法可以解决这个问题。我将尝试提出一个超级简单的解决方案: - )

使用SourceTree或git log在历史记录中找到先前的提交,我想在第一次本地(非推送)提交之前提交。

然后记下要保留的服务器的最后一次提交的提交ID(guid),"扔掉"您的本地提交,同时使用git reset --soft保留您的更改:

git reset 6c747669c865e03c13027761569f02d930937ee4 --soft 

现在您的分支已恢复到原始状态,并且您的更改已取消暂存。暂存和隐藏您的更改:

git add .
git stash

现在你的主分支应该是干净的,处于原始状态。你现在应该可以从原点进行获取/拉取。

当您的本地仓库与master保持同步时,只需再次应用您的存储(并考虑您现在可能需要解决冲突):

git stash apply

一些建议:使用像SourceTree之类的GUI来查看您的本地回购,但我的个人建议是:不要试图使用SourceTree来执行任何操作(如提交或推送)。使用命令行执行任何操作。仅使用GUI查看/可视化您的回购历史。

我还强烈建议使用git-up(RubyPython版本,具体取决于您的平台。我使用PyGitUp版本。)

使用Git时首先要意识到的是,除非你把乱七八糟的东西推到服务器上,否则你不能搞砸任何东西!: - )

您需要熟悉使用本地分支进行工作,而不是在master分支上工作。这将使将来更容易重组/合并。