sze*_*ryf 49 git deployment git-checkout
是否有一个Git命令(或一小段命令)可以安全可靠地执行以下操作?
目前我坚持:
git fetch -p
git stash
git stash drop
git checkout $branch
git pull
Run Code Online (Sandbox Code Playgroud)
但它困扰我,因为我要求密码两次(由fetch和pull).通常我会对任何解决方案感到满意,只要密码只需要一次即可.
几个笔记:
Von*_*onC 67
您可以按照类似于" 如何强制"git pull"覆盖本地文件? "的解决方案:
git fetch --all
git reset --hard origin/abranch
git checkout $branch
Run Code Online (Sandbox Code Playgroud)
这只涉及一次获取.
Mar*_*Łoś 28
几点:
git stash+ git stash drop可以替换为git reset --hard...或者,甚至更短,添加-f到checkout命令:
git checkout -f -b $branch
Run Code Online (Sandbox Code Playgroud)
这将丢弃任何本地更改,就像git reset --hard在结帐前使用一样.
至于主要问题:你可以将相应的分支从遥控器合并到你的本地分支中git merge $branch origin/$branch,而不是拉入最后一步:我认为它不会击中遥控器.如果是这种情况,它将消除对credensials的需求,因此,解决您最关心的问题.
git reset并且git clean在某些情况下可能会过度杀伤(并且浪费很多时间).
如果您只是有一条消息,如"以下未跟踪的文件将被覆盖...",并且您希望远程/ origin/upstream覆盖那些冲突的未跟踪文件,那么这git checkout -f <branch>是最好的选择.
如果你像我一样,你的另一个选择是清理并执行--hard reset然后重新编译你的项目.