Git命令执行拉动并将我的更改放在顶部而不进行存储?

时间:2015-08-06 19:38:37

标签: git git-stash

每次我必须从回购中获得最新的更改,我必须隐藏我的更改,然后再拉一下然后再解锁我的更改,当很多人在项目上工作时,这个过程非常繁琐。你必须每天多次这样做。

我想知道是否有一个git命令可以做到这一点。

5 个答案:

答案 0 :(得分:1)

正常git fetch后跟git rebase --autostash

怎么样?

来自man git-rebase

--[no-]autostash
       Automatically create a temporary stash before the operation begins, 
       and apply it after the operation ends. This means that you can run
       rebase on a dirty worktree. However, use with care: the final stash 
       application after a successful rebase might result in non-trivial
       conflicts.

答案 1 :(得分:0)

您可以编写shell别名或git命令别名来执行此操作。

[alias]
    update = !git stash save -u && git pull && git stash pop

我在那里扔了-u以隐藏未跟踪的文件,以防拉动它们。

答案 2 :(得分:0)

我不知道这样的命令(可能是别人做的...... 编辑:伟大的推荐Schwern!

但是,您是在使用功能分支吗?如果没有,我强烈建议将它们添加到项目的git工作流程中。它会减少您更新本地分支所需的次数,因为从理论上讲,每个分支的人数会减少。

我发现这个git工作流程参考在过去很有用:http://nvie.com/posts/a-successful-git-branching-model/

答案 3 :(得分:0)

您正在寻找git-up,这正是您所要求的(以及更多)。

它执行以下操作:

  • 获取所有当地分支机构
  • 在所有具有关联远程分支的本地分支中重新(而不是合并)任何传入更改
  • 本地更改在rebase
  • 之前/之后被存储/取消

我一直在使用它,它非常适合保持一个repo同步,而无需手动检查分支,存储,弹出等。

您使用

安装它
gem install git-up

然后在任何使用

的Git仓库中使用它
git up

全部......

答案 4 :(得分:-1)

正在运行git pull --rebase

  

-r
  --rebase[=false|true|preserve]

     

true时,在获取后将当前分支重新绑定在上游分支的顶部。如果存在与上游分支对应的远程跟踪分支,并且自上次提取以来上游分支已重新定位,则rebase将使用该信息来避免重新定位非本地更改。

     

设置为preserve时,将带有--preserve-merges选项的rebase传递给git rebase,以便本地创建的合并提交不会被展平。

     

false时,将当前分支合并到上游分支。

     

如果您希望pull.rebase始终使用branch.<name>.rebase而不是合并,请参阅git-config中的branch.autoSetupRebasegit pull--rebase

您提到您正在与其他开发人员一起工作,因此请注意该部分文档末尾的警告。

  

注意
  这是一种潜在的危险操作模式。它重写了历史,当你已经发布了这段历史时,它并不是一个好兆头。除非您仔细阅读git-rebase,否则请勿使用此选项。