我终于习惯了 Git,在最初的陡峭学习曲线之后,我必须说它非常好(我只是想念单个文件外部,但那是另一回事了)。然而,我有一个我无法解决的问题:我目前同时在做十几个项目。它们都是相互关联的,我必须从一个跳到另一个,在这里和那里进行更改。
到目前为止一切都很好,我可以很容易地“处理”它们,我会定期提交更改等等。问题是,几个小时后,我不记得我将哪些项目推送到了远程存储库。当然,我可以“cd”到每个项目的目录并发出 push 命令,但这很乏味。我想知道是否有办法使用 bash 来运行类似 git 查找此目录中所有项目中所有未推送的提交
。这样的命令将从一个目录运行,该目录不是 Git 存储库,但包含所有项目的树。
逻辑很简单,但实现起来似乎相当复杂,也是因为虽然根目录包含所有项目,但实际的 Git 存储库可以在起始目录的任何级别找到。例如:
- 项目目录
- 客户 X
- project1(Git 仓库)
- 客户U
- project2(Git 仓库)
- 项目3
- somelibrary(Git 仓库)
- 主题(Git 存储库)
在此示例中,只有粗体目录是 Git 存储库,因此应在其中运行检查。我知道这个结构看起来有点乱,但实际上很容易处理。
欢迎任何帮助,谢谢。
最佳答案
您可以使用 git cherry
找到未推送的提交,因此您应该能够编写一个 bash 脚本,例如
#!/bin/bash
for file in `find ./ -type d -maxdepth 3` ; do
cd $file
git cherry -v
cd -
done
里面会找到3层子目录,不过可能不太好看。
编辑
正如 Evan 建议的那样,您可以使用子 shell 来避免 cd
-ing 返回目录,就像这样
#!/bin/bash
for file in `find ./ -type d -maxdepth 3` ; do
(cd $file && git cherry -v)
done
您可能想在此处的某处放置一个pwd
命令以查看您所在的文件/目录...
关于Git - 如何查找目录中所有项目的所有 "unpushed"提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12499195/