相关疑难解决方法(0)

列表Git提交尚未推送到原点

可能重复:
查看未推送的Git提交

如何列出尚未推送到原点的所有提交?

或者,如何确定具有特定哈希的提交是否已被推送到原点?

git

285
推荐指数
2
解决办法
22万
查看次数

Shell脚本 - 尝试验证if/else语句中git存储库中是否存在git标记

我正在为zend应用程序创建一个部署脚本.几乎只完成了脚本我想验证repo中是否存在标记以强制团队中的标记.目前我有以下代码:

# Fist update the repo to make sure all the tags are in
cd /git/repo/path
git pull

# Check if the tag exists in the rev-list. 
# If it exists output should be zero, 
# else an error will be shown which will go to the else statement.
if [ -z "'cd /git/repo/path && git rev-list $1..'" ]; then

    echo "gogo"

else

    echo "No or no correct GIT tag found"    
    exit

fi
Run Code Online (Sandbox Code Playgroud)

期待您的反馈!

更新

当我在命令行中执行以下命令时:

cd /git/repo/path && git …
Run Code Online (Sandbox Code Playgroud)

git bash shell

41
推荐指数
5
解决办法
3万
查看次数

编写拒绝无效子模块提交的git update hook的最佳方法是什么?

我正在尝试update为git 编写一个钩子,如果子模块被更新为子模块的上游存储库中不存在的提交ID,则会跳转.换句话说,我想强制用户在将更改推送到子模块指针之前将更改推送到子模块存储库.

一个警告:

  • 我只想测试其子上游存储库与父存储库位于同一服务器上的子模块.否则我们开始做一些疯狂的事情,比如在git hook中调用'git clone'或'git fetch',这不会很有趣.

我一直在玩一个想法,但感觉必须有一个更好的方法来做到这一点.这是我计划在更新钩子中做的事情:

  1. 检查传递给钩子的refname,看看我们是否正在更新refs/heads/.如果没有,请尽早退出.
  2. 使用git rev-list得到被推版本列表.
  3. 对于每个修订:
    1. 调用git show <revision_id>并使用一个正则表达式,查看子模块是否已更新(通过搜索`+子项目提交[0-9a-f] +).
    2. 如果此提交确实更改了子模块,请获取该.gitmodules特定commit(git show <revision_id>:.gitmodules)所看到的文件内容.
    3. 使用3.1和3.2的结果获取子模块URL及其更新的提交ID列表.
    4. 检查3.3中创建的列表,对应于将子模块URL映射到文件系统上的本地裸git存储库的外部文件.
    5. cd到3.4中找到的路径并执行git rev-parse --quiet --verify <updated_submodule_commit_id>以查看该存储库中是否存在该提交.如果没有,则以非零状态退出.

(注意:我相信3.2的结果可能会在修订版本中缓存,只要输出git rev-parse --quiet --verify <revision_id>:.gitmodules不会从一个修订版更改为下一个修订版.我将此部分留下来以简化解决方案.)

所以是的,这看起来相当复杂,我不禁想知道是否有一些内部git命令可能会让我的生活变得更轻松.或者也许有不同的方式来思考这个问题?

git hook git-submodules githooks

11
推荐指数
1
解决办法
1698
查看次数

标签 统计

git ×3

bash ×1

git-submodules ×1

githooks ×1

hook ×1

shell ×1