我终于适应了Git,在经历了最初的陡峭学习曲线之后,我必须说这是相当不错的(我只是想念单个文件的外部组件,但这又是另一回事了)。但是,我有一个我无法解决的问题:我目前正在同时从事多个项目。它们都是相互联系的,我必须从一个跳到另一个,在这里和那里进行更改。
到目前为止一切都很好,我可以很轻松地“玩弄”它们,我可以定期进行更改,依此类推。问题是,几个小时后,我不记得我将哪些项目推送到了远程存储库。当然,我可以“cd”到每个项目的目录并发出push命令,但这很乏味。我想知道是否有一种使用bash来运行类似git find all unpushed commits in all projects in this directory
的方法。该命令将从Git存储库的而不是的目录中运行,但其中包含所有项目的树。
逻辑很简单,但是实现起来似乎很复杂,这是因为,尽管根目录包含所有项目,但是实际的Git存储库可以在起始目录的任何级别上找到。例如:
在此示例中,只有粗体目录才是Git存储库,因此检查应在其中进行。我知道该结构看起来有些困惑,但是实际上很容易处理。
欢迎任何帮助,谢谢。
最佳答案
您可以使用git cherry
找到未 push 的提交,因此您应该能够编写bash脚本,例如
#!/bin/bash
for file in `find ./ -type d -maxdepth 3` ; do
cd $file
git cherry -v
cd -
done
它将找到3层子目录,但是看起来可能不太好。编辑
正如Evan建议的那样,您可以使用子 shell 来避免
cd
-像这样回目录#!/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/