我有一台开发机器和一个远程测试服务器。
开发机器将提交文件 A + B + C 并且已经通过 SFTP(在我的编辑器中)将文件 A 和 C 发送到测试服务器。A 和 C 自上次提交以来已被修改,但自上传以来可能已修改,也可能未修改。
测试服务器具有我不想暂存或提交的未暂存(文件 A + Y)和未跟踪的修改(文件 C + Z)。
我通常在测试服务器上手动执行git checkout A
(rm Y
撤消自上次提交以来的所有 SFTP 修改),然后拉取提交。然后我们在开发机器上有相同的 A + B 文件。
我们如何使用不需要在测试服务器上指定要 checkout/rm 的确切文件的命令来做到这一点,在现实生活场景中,在 pull 之前可能有更多文件要 checkout/rm ?
此工作流程的优点是保持 git 历史记录干净,同时使测试服务器与我正在编辑的文件保持最新。
--- 解决方案的开始 ---
git fetch
cd `git rev-parse --show-toplevel`
git diff --name-only origin/mybranch..origin/mybranch~1|cat
// for each x in last output: rm x; git co x
git stash
git pull --rebase
git stash pop