标签: git

如何使我的svn:externals策略适应git子模块?

我无法弄清楚如何将我的心态转变为git并遇到以下问题.我遇到的情况是我们有一个共享引擎和多个使用该引擎的项目.内部开发团队和第二方团队可能正在处理使用共享引擎的项目,并希望在开发期间尽可能多地使用共享引擎的HEAD,直到发布前几周,共享引擎将被标记并且分支,然后项目将使用该分支.项目团队通常一次只能处理一个项目,但可以在调试期间对共享引擎进行更改或添加功能.当他们提交这些更改时,我们的构建系统会运行以查找他们可能在提交时引入的任何问题.

我(我想)想要将这个模型与新项目/新公司一起使用.在svn中,结构是这样的:shared_engine

project_in_dev-+
               +- svn:external shared_engine:head
project_about_to_ship-+
                      +-svn:external shared_engine_rev1_branch
Run Code Online (Sandbox Code Playgroud)

这非常有效:

  • 项目开发人员可以执行一个命令来检查他们需要的所有依赖项
  • 项目开发人员可以轻松完成引擎工作并提交到共享引擎
  • 我们可以轻松地修改或更改项目使用的共享引擎与外部和修订
  • 您每日"从根项目更新"很容易获得引擎更新

好的,现在我已经转移到git,并且子模块SEEM是处理外部代码的新方法,但似乎我失去了一些功能.

  • 实际获取项目的所有依赖项是一个多步骤的过程.项目开发人员必须做一个git clone然后一个git子模块init/git子模块更新--recursive
  • 这是更新根项目和子模块的多步骤过程,因此如果另一个开发人员对子模块的更改与子模块进行了更改,则不会立即获得匹配的代码,并且可能会非常困惑
  • 子模块被锁定到特定的提交,如果你对子模块进行了更改,你将无法使它与共享引擎的头部一起工作
  • 我无法控制项目开发人员检查过的共享引擎的修订版,而没有提供更新内容的说明

所以我的问题如下:

  • 首先,关于子模块的上述假设是否正确?它似乎是基于我所读到的,但我不是百分之百确定,因为我还在搞清楚git
  • 如果我的假设是正确的,我是否正确处理问题?使用git时是否需要重新调整我的想法?换句话说,还有另一种方法可以做我想做的事情,需要以不同的方式思考这个过程吗?
  • 假设我没有吹过前两个,子模块不会做我想要的,会是什么?我读到了关于子树的合并,但那些看起来并不完全正确,因为看起来我无法将共享代码的更改重新放回到存储库中.

非常感谢您的帮助和耐心.如果不是很明显,我对git很新,我喜欢它并希望拥抱它,但我仍然有一些概念上的误解,因为我可能因多年使用中央回购而受到脑损伤.我想学习!此外,我整天都在rtfm'ing,并查看各种博客文章,stackoverflow问题等,我仍然没有得到它,我显然需要逐步说明我的情况.我没有同事可以询问这一点,西雅图地区的任何用户群可能都有一些git guru?:)

svn git git-submodules

10
推荐指数
1
解决办法
2359
查看次数

支持Git的Mac OS X PHP IDE

任何人都可以建议一个PHP IDE(最好是用Cocoa/Objective-C构建,而不是Java),它也有本机支持或Git的优秀插件吗?

我目前正在使用NetBeans,但我对速度和不完整的Git插件不满意.我以前使用过Zend Studio很长一段时间但是有稳定性问题.

php ide git macos

10
推荐指数
1
解决办法
6068
查看次数

无法将git推送到远程存储库:( SSH错误)

当我尝试推送到我的heroku.com远程git存储库时,我收到以下消息:

ssh: connect to host heroku.com port 22: Connection refused
Run Code Online (Sandbox Code Playgroud)

我可以使用相同的ssh密钥轻松使用github 上的存储库.

输入:

$ssh git@github.com    #outputs: success message
$ssh git@heroku.com    #outputs: ssh: connect to host heroku.com port 22: Connection refused
Run Code Online (Sandbox Code Playgroud)

我在Mac OS 10.6上.而且我很无聊慢慢学习!

更新:

$telnet heroku.com 22
Run Code Online (Sandbox Code Playgroud)

给出这个输出:

Trying 75.101.145.87...
telnet: connect to address 75.101.145.87: Connection refused
Trying 75.101.163.44...
telnet: connect to address 75.101.163.44: Connection refused
Trying 174.129.212.2...
telnet: connect to address 174.129.212.2: Connection refused
telnet: Unable to connect to remote host
Run Code Online (Sandbox Code Playgroud)

git ssh github heroku

10
推荐指数
1
解决办法
2万
查看次数

在GUI中探索git-diff输出?

是否有允许在GUI中探索输出git-diff命令的程序?

我正在寻找的是类似于SmartGit如何显示其对工作副本和HEAD之间差异的看法.显示与HEAD不同的每个文件,并显示焦点文件的差异.

我不确定是否可以使SmartGit显示"git diff"命令的输出.

替代文字

git git-diff

10
推荐指数
4
解决办法
9468
查看次数

10
推荐指数
1
解决办法
1万
查看次数

导入错误:使用 Python 找不到的 pip 从 Git 安装的包

我正在尝试使用 pip 从远程 Git 存储库安装包。安装似乎工作正常:

$ pip install git+https://github.com/<me>/<mypackage>.git
...
Installing collected packages: <mypackage>
    Running setup.py install for <mypackage> ... done
Successfully installed <mypackage>-1.0.0.dev1
$ pip freeze | grep <mypackage>
<mypackage>==1.0.0.dev1
ls ls /usr/local/lib/python2.7/site-packages | grep <mypackage>
<mypackage>-1.0.0.dev1-py2.7.egg-info
Run Code Online (Sandbox Code Playgroud)

但是包导入失败:

$ python
>>> import <mypackage>
Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
ImportError: No module named <mypackage>
>>>
Run Code Online (Sandbox Code Playgroud)

我已经能够成功安装并从本地版本导入它:

$ pip install -e <path-to-mypackage>
Run Code Online (Sandbox Code Playgroud)

但我希望能够通过 git 安装它。

在什么情况下,一个包(显然)可以成功安装 pip,但不能被 Python 导入?

我的模块的结构是:

<mypackage>
    setup.py
    <mypackage>
        __init__.py
        # …
Run Code Online (Sandbox Code Playgroud)

python git installation pip python-2.7

10
推荐指数
1
解决办法
2291
查看次数

为什么 Visual Studio 将我添加的 .cs 文件标记为“已忽略”?

我通过 GitHub for Windows 在本地机器上克隆了一个现有但几乎是空的项目。然后我在 VS 2017 中打开它并添加了一些类,因为它们都被标记为“已忽略”,并带有带有“减号”符号的红色图标。当我尝试提交(我想提交并通过 GitHub 应用程序推送)时,没有推送的文件。然后我尝试右键单击这些文件并将它们添加到源代码管理中。然后“减号”符号变成了“+”。我还认为问题可能在于我没有上演它们。所以我做了(在VS中)。但我仍然无法推送这些文件。尝试在 GitHub 应用程序中进行提交后,我的所有 .cs 文件再次标记为“减号”。它的原因是什么以及如何使它们不被签名为“忽略”?

c# git visual-studio

10
推荐指数
2
解决办法
1万
查看次数

使用 Google Cloud Storage 的 Git 大文件存储

我是该项目的一部分,我们使用托管在google cloud source repository上的 git 存储。现在我们使用谷歌云存储来存储原始数据和处理过的数据。

参与项目的每个人都下载数据并将其放在本地./data文件夹中,该文件夹为.gitignore-ed。

我更喜欢使用git LFS,但如果数据必须存储在外部某个地方,则它可能只是 GCS。

是否可以配置 git LFS、Google Cloud Source Repository 和 Google Cloud Storage,使用 git LFS 使用指向 GCS 数据文件的指针(而不是其他一些外部服务器),同时保持 Google 提供的完全安全性,以及帐户身份验证、SSH 等。 ?

git google-cloud-storage git-lfs google-cloud-repository

10
推荐指数
1
解决办法
2135
查看次数

传递给 GIT_SSH_COMMAND 的参数“-i”被忽略

我想为 git 使用其他 IdentityFile。我想动态使用它,而不是通过配置。我这样做:

  $ GIT_SSH_COMMAND='ssh -i /home/my_user/.ssh/id_ed25519' git pull origin master
  repository access denied.
  fatal: Could not read from remote repository.

  Please make sure you have the correct access rights
  and the repository exists.
Run Code Online (Sandbox Code Playgroud)

pub 密钥“id_ed25519.pub”在我的 bitbucket 中。

这也失败了:

  $ git pull origin master
  repository access denied.
  fatal: Could not read from remote repository.

  Please make sure you have the correct access rights
  and the repository exists.
Run Code Online (Sandbox Code Playgroud)

和:

$ git remote -v
origin  git@bitbucket.org:company123/repo456.git (fetch)
origin  git@bitbucket.org:company123/repo456.git (push)
Run Code Online (Sandbox Code Playgroud)

将 …

git ssh public-key-encryption

10
推荐指数
2
解决办法
9886
查看次数

仅使用 git 存储未暂存的更改(而不是 --keep-index)

首先,我确实知道--keep-index. 这不是我想要的,因为它仍然隐藏所有更改,但将暂存的更改留在工作树中。如果可能的话,我只想存储未暂存的文件,而不用git stash --patch.

git

10
推荐指数
1
解决办法
913
查看次数