我的同事和我在同一个存储库上工作,我们已经将它分成两个分支,每个分支在技术上用于不同的项目,但是它们有相似之处,所以我们有时会想要master从... 返回到*branch.
但是,我有branch.我的问题是,我的同事怎么能专门拉那个分支?
一个git clone回购似乎并不在本地创建分支的他,虽然我可以在我结束推后住上unfuddle看到它们.
此外,当我最初创建分支时,我做了-b checkout.不确定这是否有很大的不同?
$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/discover
origin/master
$ git fetch origin discover
$ git checkout discover
Run Code Online (Sandbox Code Playgroud)
这些是我跑的命令.但它绝对不起作用.
我希望能够检查该分支,然后推送并提交来自各个协作者或工作站的分支更改.
假设我有一个目录/X/Y,这是一个git存储库.有可能以某种方式git pull从内部调用命令/X,但目标是该/X/Y目录?
编辑:我想我特别想知道:是否可以使用git命令执行此操作,但无需更改目录?
注意:我接受了VonC的答案,因为它比以前的选项更优雅.对于运行Git低于1.8.5的人,请参阅下面的bstpierre的答案.
我不确定这是否是Git所支持的东西,但理论上它似乎应该对我有用.
我的工作流程通常涉及我同时在多个分支中编辑文件.换句话说,我经常想在一个分支中打开一些文件,而我在另一个分支中编辑另一个文件的内容.
我的典型解决方案是进行两次检查,但遗憾的是我不能在它们之间共享分支和引用.我想要的是只有两个工作目录由同一个.git文件夹管理.
我知道本地git clone解决方案(默认情况下,硬链接共享对象,以及--shared选项,它使用原始repo设置备用对象存储),但这些解决方案只减少了磁盘空间使用量,特别是在--shared的情况下,似乎充满了危险.
有没有办法使用一个.git文件夹,并有两个工作目录由它支持?或者是Git硬编码只是随时检查一个工作目录?
我正在从C#.NET控制台应用程序内部启动Java应用程序.它适用于Java应用程序不关心"默认"目录是什么的情况,但对于仅搜索当前目录中的支持文件的Java应用程序失败.
是否有一个可以设置的进程参数来指定进程启动的默认目录?
在处理功能分支时,我使用此Git命令将我的"develop"分支更新为最新状态,在将我的功能分支与"develop"合并之前:
git fetch origin develop:develop
Run Code Online (Sandbox Code Playgroud)
这是有效的,即本地"开发"指向与"原点/开发"相同的提交,并且处于最新的起源状态.
不知何故,当检查"develop"分支时,此命令失败:
fatal: Refusing to fetch into current branch refs/heads/develop of non-bare repository
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
如果我知道为什么会发生这种情况,那将有助于我更好地理解Git.
我git push --mirror将备份副本制作成一个简单的回购,我取得了巨大的成功.但是在SO和其他地方搜索之后,我找不到用所有分支在本地克隆该东西的方法.我不想使用,git clone因为我不希望我的本地回购了解裸机.如果我使用git pull它只会降低HEAD分支.
猜测:
git pull /data/Dropbox/backup/that_stuff.git *
Run Code Online (Sandbox Code Playgroud)
当然,让我无处可去.
如何让所有分支机构重新获得整个回购?我意识到我可能只是将裸仓库复制到我的.git目录,但这似乎是一个坏主意.