给定项目目录中的 git 存储库树,例如
Projects/
+A/
|+.git/
+B/
|+.git
Run Code Online (Sandbox Code Playgroud)
我想设置一个 git 存储库Projects.git,它不跟踪项目的内容,而只跟踪它们的存在和状态。克隆这个存储库的人应该只有一个未克隆的存储库等的骨架A,B并单独激活它们是否保持同步。典型的工作流程如下所示:
git clone server:Projects.gitA,它也会克隆它git-push/pull,独立于它是否在Projects/或Projects/A应该更新两者A.git 和 Projects.git关于 的信息A。任何相关的都B应该被忽略,因为它是不活动的并且本地是空的B,也克隆它git-push/pullinProjects也应该在Aand 中这样做B,而推/拉A不应该影响BA,它(验证后A.git不需要a git-push)清空本地目录A,不影响Project.git怎样才能最好地治疗?我目前的方法是一些钩子魔术,但我对git 子模块不够熟悉,看不到这是否可以通过子模块来实现,或者我是否需要使用其他一些解决方案。
我们使用Github进行组织中的源代码控制。多个开发人员不断将其更改合并到远程源存储库。就我而言,两周后我克隆了存储库,此后又进行了多次合并。现在,我试图使用该代码的最新版本。
git pull origin master
Run Code Online (Sandbox Code Playgroud)
我肯定知道自从我上次克隆以来已经进行了多次合并,但是pull命令告诉我它已经是最新的了。我在这里想念什么吗?
我一直在开发 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并且正在关注http://gitimmersion.com上的优秀教程.
在这些教程中,有一个模糊试图解释分离的HEAD,并指出:
git中的"分离的HEAD"消息只是意味着HEAD(跟踪当前工作目录应匹配的内容的git部分)直接指向提交而不是分支.只有在您不切换到其他分支时,才会记住在此状态下提交的任何更改.一旦您签出新的分支或标签,分离的提交将"丢失"(因为HEAD已移动).如果要保存以分离状态完成的提交,则需要创建一个分支来记住提交.
关于这个的一些问题:
提前致谢!
我是git的新手,并试图围绕分支的工作方式.根据文档git checkout
更新工作树中的文件以匹配索引或指定树中的版本.如果>没有给出路径,git checkout也会更新HEAD以将指定的分支设置为>当前分支.
所以据我所知,我工作的目录中的文件(我执行git init的文件)应该根据我所在的分支进行更改.我很困惑,因为当我在分支之间切换时不会发生这种情况.在切换分支之前我正在编辑的编辑存在于我切换到的分支中.我做错了什么或git checkout不能这样工作,我只是误解了文档?
我正在开发一个新项目,并希望从我在GitHub上找到的种子项目开始.
我已经在本地克隆了种子项目,它在执行命令时显示了1个远程分支:
git remote -v
Run Code Online (Sandbox Code Playgroud)
但是我想在这个仓库中添加一个新的遥控器并进行所有更改,或者在这个新的仓库中扩展源代码,这是一个私人仓库.
现在添加新遥控器后,我可以在回购中看到2个遥控器.
如何在2个遥控器之间切换?
我不认为git checkout在使用2个不同遥控器的2个分支时,命令会起作用.
以下命令的作用是什么?:
git rev-parse --short HEAD
Run Code Online (Sandbox Code Playgroud)
答案应包括:
我是 git 新手,刚开始从这个网站学习:https : //dev.to/unseenwizzard/learn-git-concepts-not-commands-4gjc
我的疑问在于文档的这一部分:
看看 Alice.txt。
它实际上包含一些文本,但 Bob.txt 没有,所以让我们更改它并输入 Hi!! 我是鲍勃。我是新来的。在那里。
总而言之,我们用这句话对 Bob.txt 进行了更改:- Hi!!我是鲍勃。我是新来的。
我们上演了这个更改,但没有提交。
后来,我们继续对同一个句子进行了另一个更改,删除了多余的 ! 嗨之后。
所以现在这句话看起来像这样:-嗨!我是鲍勃。我是新来的。
现在我们上演并提交了这个新的变化。
我的疑问是:之前对 Bob.txt 的修改(有两个!!)是不是从暂存区丢失了?我跑了git status但它没有提到以前的变化。我可以回去用两个“!!”提交更改吗??
我在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 存储库 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 branch从子模块中运行时,我看到以下输出:
> git branch
* (HEAD detached from 229a7b2)
master
Run Code Online (Sandbox Code Playgroud)
我将如何进入新的分支?喜欢development吗?
我一直在阅读关于堆栈溢出的其他问题,但没有简单的解释我需要什么.我正在和另一位合作者一起推动远程回购.我想查看几周前的过去提交.我该怎么做呢?
首先,当我克隆 Git 存储库时,我位于master 分支中。但我已经创建了一个远程开发分支。我跑git fetch origin develop。然后,我使用 git checkout develop它并切换到一个新的分支开发,如下所示:
它创建了当地新开发的分支机构。如何切换到我的原始开发分支远程分支。如果我使用git checkout origin/develop。它是这样的:
如何切换到远程开发分支?
git ×13
github ×3
push ×2
branch ×1
commit ×1
git-checkout ×1
git-fetch ×1
git-remote ×1
git-switch ×1
jgit ×1