天道酬勤,学无止境

git

使用子模块克隆存储库:覆盖凭据(Clone a repo with submodules: override credentials)

问题 我必须自动克隆存储库并获取它的所有子模块。 存储库子模块的 url 在.gitmodules中指定。 如果我要使用默认值,我会这样做 git clone --recursive https://username:password@url.git 问题是凭据不包含在.gitmodules文件中,当我克隆时会提示我输入凭据。 我必须使用 HTTPS 而不是 SSH。 我尝试使用 git config 提交凭据: git clone https://username:password@url.git my_repo cd my_repo git submodule init git config submodule.my_submodule.url "https://username:password@url/my_submodule.git" git submodule update 但在上次更新步骤中提示我输入凭据。 我已经检查过子模块 url 是否正确并且在.git/config文件中具有正确的凭据。 回答1 编辑.gitmodules文件后,您需要使用 git submodule sync 下次运行git submodule update将使用新的 url。 回答2 看起来您正在尝试使用 git 凭据,但没有任何运气。 选项1 使用凭证助手添加凭证: git config

2021-09-20 17:34:37    分类:技术分享    git   git-submodules   git-clone   git-config

有没有办法从提交的消息中获取提交的 SHA?(Is there any way to get the SHA of a commit from its message?)

问题 在执行git tag ,我并不总是很擅长记住 HEAD~6(例如)是包含的还是不包含的。 鉴于我的大多数提交都以问题编号为前缀,我想知道是否有一些神奇的命令可以从其消息的一部分中搜索提交 SHA。 我知道做一个git log并从那里工作很容易,但我想要更简单:) 编辑:有人还问了相反的问题:在 Git 中,有没有办法获得任意提交的“友好”名称? 回答1 您可以使用:/blah语法来指定提交消息以给定文本开头的提交。 例如 git show ":/Issue #299" 这在可以使用提交的任何地方都有效。 例如 git cherry-pick ":/Issue #299" 如果您确实需要提交的 SHA-1,则可以使用 rev-parse。 git rev-parse ":/Issue #299" 请参阅 git rev-parse 手册页的“指定修订”部分: 冒号,后跟斜杠,后跟文本: 这会命名一个提交,其提交消息以指定的文本开头。 此名称返回可从任何引用访问的最年轻的匹配提交。 如果提交消息以! ,你必须重复一遍; 特殊序列:/! , 其次是别的东西! 暂时保留。 回答2 git log --grep=word 应该有助于找到相关的提交。 (与搜索提交内容相反,其中 git log -S (pickaxe 选项)或git grep更合适) 添加各种格式选项,如 git log

2021-09-20 17:10:05    分类:技术分享    git

git 和本地修改(git and local modifications)

问题 我正在发现如何使用 git。 我刚刚做了以下测试: 创建一个文件夹和2个文件然后 git init, git add ., git commit -m "initial commit" 创建一个分支:git branch 实验,git checkout 实验然后更改文件夹的名称并删除其中一个文件,然后 git add ., git commit -m "experimental" 回到主人:git checkout master 惊奇:我离开时没有找到主人; 文件夹消失了。 而且我必须执行 git -reset --hard 才能找到我的文件夹。 我想知道我是否做错了什么,或者我是否不明白 git 如何管理本地更改。 谢谢你的帮助。 详细场景: mkdir GitTest cd GitTest/ mkdir Folder1 echo "master" > Folder1/File1.txt echo "master" > File2.txt git init git add . git commit -m "init" git branch expe git checkout expe mv File2.txt File3.txt mv Folder1/ Folder1-exp/ echo "expe" >> Folder1-exp/File1.txt git add

2021-09-20 17:05:04    分类:技术分享    git

git 和本地修改(git and local modifications)

问题 我正在发现如何使用 git。 我刚刚做了以下测试: 创建一个文件夹和2个文件然后 git init, git add ., git commit -m "initial commit" 创建一个分支:git branch 实验,git checkout 实验然后更改文件夹的名称并删除其中一个文件,然后 git add ., git commit -m "experimental" 回到主人:git checkout master 惊奇:我离开时没有找到主人; 文件夹消失了。 而且我必须执行 git -reset --hard 才能找到我的文件夹。 我想知道我是否做错了什么,或者我是否不明白 git 如何管理本地更改。 谢谢你的帮助。 详细场景: mkdir GitTest cd GitTest/ mkdir Folder1 echo "master" > Folder1/File1.txt echo "master" > File2.txt git init git add . git commit -m "init" git branch expe git checkout expe mv File2.txt File3.txt mv Folder1/ Folder1-exp/ echo "expe" >> Folder1-exp/File1.txt git add

2021-09-20 17:03:05    分类:技术分享    git

git 和本地修改(git and local modifications)

问题 我正在发现如何使用 git。 我刚刚做了以下测试: 创建一个文件夹和2个文件然后 git init, git add ., git commit -m "initial commit" 创建一个分支:git branch 实验,git checkout 实验然后更改文件夹的名称并删除其中一个文件,然后 git add ., git commit -m "experimental" 回到主人:git checkout master 惊奇:我离开时没有找到主人; 文件夹消失了。 而且我必须执行 git -reset --hard 才能找到我的文件夹。 我想知道我是否做错了什么,或者我是否不明白 git 如何管理本地更改。 谢谢你的帮助。 详细场景: mkdir GitTest cd GitTest/ mkdir Folder1 echo "master" > Folder1/File1.txt echo "master" > File2.txt git init git add . git commit -m "init" git branch expe git checkout expe mv File2.txt File3.txt mv Folder1/ Folder1-exp/ echo "expe" >> Folder1-exp/File1.txt git add

2021-09-20 17:01:08    分类:技术分享    git

.git 文件夹不包含什么?(What does the .git folder not contain?)

问题 从 git 站点(强调我的): 当您在新目录或现有目录中运行 git init 时,Git 会创建 .git 目录,Git 存储和操作的几乎所有内容都位于该目录中。 如果您想备份或克隆您的存储库,将这个目录复制到别处几乎可以满足您的所有需求。 他们“几乎”和“几乎”潜入那里而没有详细说明。 什么不在.git 目录中? 如果我想备份或克隆我的存储库,在别处复制该单个目录不会给我什么? 回答1 Git 不记录: 文件组文件所有者文件权限(除了“这是可执行文件”) 扩展属性空文件夹 ( .gitignore任何内容,但这可能是需要的) gitmodules 或许这篇文章可以为你提供更多的见解 回答2 您还有一些其他.git文件构成了.git文件夹本身之外的存储库,特别是,您有: .gitignore # contains the files that you do not want in the repository .gitmodules # contains the information on submodules 同样,如果您有一个子模块,您将有一个纯文本文件.git指向“真实存储库目录” - 请参阅 git Repository Layout Docs 回答3 您的用户/全局配置文件通常在~/.gitconfig 系统配置文件通常在$(prefix)/etc

2021-09-20 15:38:39    分类:技术分享    git

带有二进制文件的 Git stash pop - 合并冲突(Git stash pop with binary - merge conflict)

问题 我正在尝试使用二进制文件执行“git stash pop”。 这会导致合并冲突。 我只想拉出存储中的内容并覆盖工作目录中的内容。 最简单的方法是什么? 回答1 要将所有文件恢复到它们的隐藏版本: $ git checkout stash -- .

2021-09-20 14:55:36    分类:技术分享    git   git-stash   merge-conflict-resolution

Gradle:如何通过 gradle 执行 git pull?(Gradle: How to perform git pull through gradle?)

问题 我想在编译开始之前从 git repo 中提取更改。 我发现了这个 Gradle: how to clone a git repo in a task?,但它克隆了 repo 而不是只获取更改。 如果 git 服务器不在本地网络上或者如果 repo 很大,这可能会很耗时。 我找不到如何使用 gradle 或 gradle-git 插件执行git pull 。 回答1 您可以创建Exec任务并运行任何 shell/cmd 命令。 简单任务不需要额外的插件依赖。 task gitPull(type: Exec) { description 'Pulls git.' commandLine "git", "pull" } 用法: gradlew gitPull 你应该看到这样的: gradlew gitPull Parallel execution is an incubating feature. :app:gitPull Already up-to-date. BUILD SUCCESSFUL Total time: 9.232 secs 在哪里Already up-to-date. 是git pull命令的输出。 回答2 以下 gradle 脚本应该会有所帮助: import org.ajoberstar.grgit.* buildscript { repositories

2021-09-20 13:08:16    分类:技术分享    java   git   build   gradle

致命错误:找不到“Fabric/Fabric.h”文件(fatal error: 'Fabric/Fabric.h' file not found)

问题 我正在使用 xcode 6.3.1、OSX 10.10.3,并且我已经在本地系统上成功配置了 crashlytics。 它工作正常,并通过结构应用程序发布构建。 但是当我将相同的代码库转移到 teamcity 时,它显示了以下错误 致命错误:找不到“Fabric/Fabric.h”文件致命错误:找不到“Crashlytics/Crashlytics.h”文件 经过调查,我在我的团队城市服务器中发现了以下未知问题。 Teamcity 从 git 获得源代码,当我在 teamcity 中看到源代码时,Crashlytics.framworks 和 fabric.framworks 可用,但是当您查看文件夹结构时,它无法找出所有标题、模块、资源、crashlytics 文件夹的快捷方式(图片-1). 我在其他文件夹中获取其他 git clone 并手动拉取源代码,在这里我可以看到 crashlytics 和 fabrics 子文件夹的所有快捷方式。 (图2)。 我只是复制了所有文件夹并粘贴到 teamcity 源代码中。 现在它可以工作,但是每次更改源代码时,teamcity 都会重置为非快捷文件夹结构,这将使我的构建失败。 我不确定这是 GIT 问题还是 teamcity 或 crashlytics 问题。 请让我知道如何弄清楚。 我很感激你的回答。 谢谢马诺吉 回答1 它是一个

2021-09-20 12:45:18    分类:技术分享    ios   git   teamcity   crashlytics

运行 Docker 客户端 Java API 时拒绝 Apache 连接(Apache Connection Refused when running Docker-client Java API)

问题 我正在尝试安装 Docker 客户端远程 API 库 (https://github.com/spotify/docker-client) 来进行一些图像搜索和检查图像数据(都在公共存储库中)。 我已经下载、安装并运行了 boot2docker VM。 诸如“Docker pull ubuntu”之类的命令工作正常,但我现在想通过 Java 程序执行此操作。 我使用 Eclipse IDE Egit 插件导入 github 项目并从现有的 Master 分支创建了一个 Maven/Java 项目。 源代码完全导入,没有报告错误。 然后我尝试编写一个简单的测试: final DockerClient docker = DefaultDockerClient.fromEnv().build(); //docker.pull("busybox"); List<ImageSearchResult> results = docker.searchImages("ubuntu"); for (ImageSearchResult res : results) { System.out.println(res.getName()); } 但是,在 Eclipse 中运行代码时出现以下错误: Exception in thread "main" com.spotify.docker

2021-09-20 12:37:17    分类:技术分享    java   eclipse   git   maven   docker