每次我必须从回购中获得最新的更改,我必须隐藏我的更改,然后再拉一下然后再解锁我的更改,当很多人在项目上工作时,这个过程非常繁琐。你必须每天多次这样做。
我想知道是否有一个git命令可以做到这一点。
答案 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,这正是您所要求的(以及更多)。
它执行以下操作:
我一直在使用它,它非常适合保持一个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.autoSetupRebase
,git pull
和--rebase
。
您提到您正在与其他开发人员一起工作,因此请注意该部分文档末尾的警告。
注意强>
这是一种潜在的危险操作模式。它重写了历史,当你已经发布了这段历史时,它并不是一个好兆头。除非您仔细阅读git-rebase,否则请勿使用此选项。