相关疑难解决方法(0)

如何处理 git 存储库的元存储库?

给定项目目录中的 git 存储库树,例如

Projects/
+A/
|+.git/
+B/
|+.git
Run Code Online (Sandbox Code Playgroud)

我想设置一个 git 存储库Projects.git,它不跟踪项目的内容,而只跟踪它们的存在和状态。克隆这个存储库的人应该只有一个未克隆的存储库等的骨架AB并单独激活它们是否保持同步。典型的工作流程如下所示:

  • 首次设置: git clone server:Projects.git
  • Activate project A,它也会克隆它
  • 现在每个git-push/pull,独立于它是否在Projects/Projects/A应该更新两者A.git Projects.git关于 的信息A。任何相关的都B应该被忽略,因为它是不活动的并且本地是空的
  • 激活项目B,也克隆它
  • 现在 any git-push/pullinProjects也应该在Aand 中这样做B,而推/拉A不应该影响B
  • Deactivate project A,它(验证后A.git不需要a git-push)清空本地目录A,不影响Project.git

怎样才能最好地治疗?我目前的方法是一些钩子魔术,但我对git 子模块不够熟悉,看不到这是否可以通过子模块来实现,或者我是否需要使用其他一些解决方案。

git

5
推荐指数
2
解决办法
6252
查看次数

Git拉不拉最新版本

我们使用Github进行组织中的源代码控制。多个开发人员不断将其更改合并到远程源存储库。就我而言,两周后我克隆了存储库,此后又进行了多次合并。现在,我试图使用该代码的最新版本。

git pull origin master
Run Code Online (Sandbox Code Playgroud)

我肯定知道自从我上次克隆以来已经进行了多次合并,但是pull命令告诉我它已经是最新的了。我在这里想念什么吗?

git github

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

GIT 推送不将提交推送到远程

我一直在开发 git 存储库,并且一直将本地更改推送到远程服务器......直到最近。当我执行 git Push 时,它说一切都是最新的。事实上,我已经比远程版本提前了 3 个提交,但它没有得到我的更改。

我已经尝试过发布在各个地方的 git log -1, git reset --hard 解决方案,但这并不能解决任何问题。我是否需要更改该数字以反映我领先的提交数量?

假设我有 5 个提交,为了简洁起见,命名为 1 到 5。我的本地版本是 5,远程版本是 2。Gitk 在提交 5 处显示我的 MASTER,在提交 2 处显示远程/origin/master。我需要 git将我的本地版本重置为 2(或 3,未推送到远程的第一个提交)?我的改变会发生什么?git 文档说 --hard 将放弃任何更改,这是否意味着它们将完全丢失?我想保留这 3 次提交的提交历史记录,因为进行了相当多的更改。

git push commit git-remote

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

理解git中的分离HEAD

我正在学习git并且正在关注http://gitimmersion.com上的优秀教程.

在这些教程中,有一个模糊试图解释分离的HEAD,并指出:

git中的"分离的HEAD"消息只是意味着HEAD(跟踪当前工作目录应匹配的内容的git部分)直接指向提交而不是分支.只有在您不切换到其他分支时,才会记住在此状态下提交的任何更改.一旦您签出新的分支或标签,分离的提交将"丢失"(因为HEAD已移动).如果要保存以分离状态完成的提交,则需要创建一个分支来记住提交.

关于这个的一些问题:

  1. 什么是独立的HEAD,以及创造它的条件是什么?
  2. 为什么分离的HEAD指向特定的提交而不是分支?
  3. 当你有一个分离的HEAD时,你是否总是需要创建一个新的分支来提交/推送它的变化?为什么/为什么不呢?

提前致谢!

git

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

git checkout感到困惑

我是git的新手,并试图围绕分支的工作方式.根据文档git checkout

更新工作树中的文件以匹配索引或指定树中的版本.如果>没有给出路径,git checkout也会更新HEAD以将指定的分支设置为>当前分支.

所以据我所知,我工作的目录中的文件(我执行git init的文件)应该根据我所在的分支进行更改.我很困惑,因为当我在分支之间切换时不会发生这种情况.在切换分支之前我正在编辑的编辑存在于我切换到的分支中.我做错了什么或git checkout不能这样工作,我只是误解了文档?

git

4
推荐指数
2
解决办法
2699
查看次数

在git中使用多个遥控器

我正在开发一个新项目,并希望从我在GitHub上找到的种子项目开始.
我已经在本地克隆了种子项目,它在执行命令时显示了1个远程分支:

git remote -v
Run Code Online (Sandbox Code Playgroud)

但是我想在这个仓库中添加一个新的遥控器并进行所有更改,或者在这个新的仓库中扩展源代码,这是一个私人仓库.

现在添加新遥控器后,我可以在回购中看到2个遥控器.

如何在2个遥控器之间切换?
我不认为git checkout在使用2个不同遥控器的2个分支时,命令会起作用.

git github

4
推荐指数
1
解决办法
3294
查看次数

git rev-parse --短头

以下命令的作用是什么?:

git rev-parse --short HEAD
Run Code Online (Sandbox Code Playgroud)

答案应包括:

  1. 一个简短而中肯的答案,解释了这个命令的整体作用
  2. rev解析的解释
  3. --short 的解释
  4. HEAD 的解释

git

4
推荐指数
1
解决办法
9852
查看次数

之前“暂存但未提交”的更改会发生什么?

我是 git 新手,刚开始从这个网站学习:https : //dev.to/unseenwizzard/learn-git-concepts-not-commands-4gjc

我的疑问在于文档的这一部分:

看看 Alice.txt。
它实际上包含一些文本,但 Bob.txt 没有,所以让我们更改它并输入 Hi!! 我是鲍勃。我是新来的。在那里。

总而言之,我们用这句话对 Bob.txt 进行了更改:- Hi!!我是鲍勃。我是新来的。
我们上演了这个更改,但没有提交
后来,我们继续对同一个句子进行了另一个更改,删除了多余的 ! 嗨之后。

所以现在这句话看起来像这样:-嗨!我是鲍勃。我是新来的。
现在我们上演提交了这个新的变化。

我的疑问是:之前对 Bob.txt 的修改(有两个!!)是不是从暂存区丢失了?我跑了git status但它没有提到以前的变化。我可以回去用两个“!!”提交更改吗??

git github

4
推荐指数
1
解决办法
45
查看次数

JGit:推送到特定分支

我在github上有两个分支:master和development.我想将新创建的文件推送到开发分支.

    String user = "user";
    String password = "password";
    String localPath = "local";
    String remotePath = "https://github.com/some/git.git";
    Git.cloneRepository().setBranch("refs/heads/development").setURI(remotePath).setDirectory(new File(localPath)).call();
    Git localGit = Git.open(new File(localPath));         
    localGit.checkout().setName("origin/development").setUpstreamMode(SetupUpstreamMode.TRACK).call();

    new File("local/test").createNewFile();

    localGit.add().addFilepattern(".").call();
    localGit.commit().setMessage("message").call();
    localGit.push().setCredentialsProvider(new UsernamePasswordCredentialsProvider(user, password)).call();
Run Code Online (Sandbox Code Playgroud)

我得到的是一个

  TransportException: Nothing to push.
Run Code Online (Sandbox Code Playgroud)

有什么问题?

更新: 我可以通过删除checkout命令使其工作.由于克隆已经检出指定的分支,这在我之前并不清楚.

git branch push jgit

3
推荐指数
1
解决办法
2721
查看次数

git submodule foreach checkout 超级模块分支

考虑一个 git 存储库 Foo/,它有子模块 bar1/ 和 bar2/。

其中每一个都有相同的分支:1 和 2。

我进入超级模块,并且想要更新超级模块以包含 bar1 和 bar2 来源的最新提交。我已经初始化并更新了超级模块,因此 bar1 和 bar2 中有工作树,但它们处于分离状态。我可以执行以下操作:

cd foo;
git checkout 1
git submodule foreach git checkout 1
git pull
Run Code Online (Sandbox Code Playgroud)

现在,令我烦恼的是重复分支标识符。我可以做类似“git submodule foreach git checkout $CURRENT_BRANCH_ID”之类的事情吗?有更好的选择吗?

git git-submodules

3
推荐指数
1
解决办法
7676
查看次数

git子模块中的Checkout分支

如何在子模块中更改分支?当我git branch从子模块中运行时,我看到以下输出:

> git branch
  * (HEAD detached from 229a7b2)
  master
Run Code Online (Sandbox Code Playgroud)

我将如何进入新的分支?喜欢development吗?

git

3
推荐指数
1
解决办法
5505
查看次数

来自远程的git checkout

我一直在阅读关于堆栈溢出的其他问题,但没有简单的解释我需要什么.我正在和另一位合作者一起推动远程回购.我想查看几周前的过去提交.我该怎么做呢?

git

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

如何切换(或签出)到 Git 中现有的远程分支,而不面临分离的 HEAD

首先,当我克隆 Git 存储库时,我位于master 分支中。但我已经创建了一个远程开发分支。我跑git fetch origin develop。然后,我使用 git checkout develop它并切换到一个新的分支开发,如下所示:

在此输入图像描述

它创建了当地新开发的分支机构。如何切换到我的原始开发分支远程分支。如果我使用git checkout origin/develop。它是这样的:

在此输入图像描述

如何切换到远程开发分支?

git git-fetch git-checkout git-detached-head git-switch

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