Git拉不拉一切

thi*_*ofm 30 git

我有一个服务器,其中有一些配置,我不知道我只是git pull,它获取github仓库中的内容,然后重新启动它以便部署.

问题是,有一个不是我最新的提交,实际上并不在我的服务器上.这些文件不在.gitignore中.我如何确保拉动,拉动提交?

我真的不知道如何解决它,我正在考虑重新启动一切:(

14:41][root@someserver] 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
Run Code Online (Sandbox Code Playgroud)

Amb*_*ber 88

如果你总是希望你的服务器版本反映你的repo的提交,那么最好使用git reset而不是git pull- 这样你永远不会调用合并功能,而是将所有文件设置为你重置​​的提交中的文件.例如:

git fetch origin master
git reset --hard FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)

  • 我总是忘记这个命令,所以我一直回到这个主题.只是想补充说,如果要从特定分支中获取所有内容,将"master"更改为任何其他分支名称也可以. (5认同)
  • 您也可以重置到特定分支,因此 git reset --hard origin/master 也可以工作,就像您指定的任何分支一样。(5年前看到自己问这个问题很有趣,我记得我当时正在管理一些使用 git 进行部署的远程服务器,最终处于糟糕的状态..哈哈) (2认同)

inv*_*ffi 14

您可以使用git pull origin branch_name

例如:如果我在 GitHub 上有一个生产分支,那么我将编写git pull origin production它将提供所有最新提交的内容。

仅有时执行git pull不会为您提供生产分支的最新提交,即使您正在该分支上工作并提交它。

幕后工作

http://git-scm.com/docs/git-pull#_default_behaviour

解释和例子

  • 这对我有用。如果能更好地解释原因就好了。 (2认同)