2012-03-13 52 views
19

我有一个服务器,其中有一些配置,我不知道我只是git拉,它得到什么在github回购,然后重新启动它,以部署。Git拉不拉一切

事情是,有一个不是我最新的提交,这不是真的在我的服务器上。这些文件不在.gitignore中。我如何确保一拉,拉一个提交?

我真的不知道如何解决它,我想重新开始一切:(

14:41][[email protected]] someserver_dir (master)$ git status 
# On branch master 
# Changes not staged for commit: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# modified: Gemfile 
# modified: Gemfile.lock 
# modified: config/assets.yml 
# modified: config/database.yml 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
# randomfiles 
+0

更多信息,会更容易回答。你的问题。'git status'是什么意思你呢?你在本地是否在正确的分支?例如,如果你正在查看服务器上的'master'分支,你是否在本地签出'master'? 'git log origin/master..master'呢? – 2012-03-13 17:27:02

+0

git存储库是公开的吗?如果是这样,请提供一个URL。 – 2012-03-13 17:35:35

+0

不公开,Git状态显示我一切都很酷,只有一个分支。 – thiagofm 2012-03-13 17:42:32

回答

51

如果你总是希望你的服务器版本,以反映从您的回购提交,它可能会更好使用git reset代替git pull - 这样你永远不会调用合并功能,而是将所有的文件,以他们在提交您重置到什么例如:

git fetch origin master 
git reset --hard FETCH_HEAD 
+4

我总是忘记这个命令,所以我一直回到这个线程。只是想补充说,如果您想从特定分支中获取所有内容,那么将“主”更改为任何其他分支名称也同样适用。 – mdegges 2015-12-13 00:34:01

+0

你可能会重置到一个特定的分支,所以git reset --hard origin/master也适用,所以你指定的任何分支。 (在5年前看到自己问这个问题很有趣,我记得我正在管理一些使用git进行部署的远程服务器,并以糟糕的状态结束......哈哈) – thiagofm 2017-07-17 14:33:31