我不确定这是否是Git所支持的东西,但理论上它似乎应该对我有用.
我的工作流程通常涉及我同时在多个分支中编辑文件.换句话说,我经常想在一个分支中打开一些文件,而我在另一个分支中编辑另一个文件的内容.
我的典型解决方案是进行两次检查,但遗憾的是我不能在它们之间共享分支和引用.我想要的是只有两个工作目录由同一个.git文件夹管理.
我知道本地git clone解决方案(默认情况下,硬链接共享对象,以及--shared选项,它使用原始repo设置备用对象存储),但这些解决方案只减少了磁盘空间使用量,特别是在--shared的情况下,似乎充满了危险.
有没有办法使用一个.git文件夹,并有两个工作目录由它支持?或者是Git硬编码只是随时检查一个工作目录?
我已经解决了一些合并冲突,然后提交尝试推送我的更改并收到以下错误:
c:\Program Files (x86)\Git\bin\git.exe push --recurse-submodules=check "origin" master:master
Done
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or …Run Code Online (Sandbox Code Playgroud) 我通常通过ssh(screen和vim)在远程服务器上工作,我有一个Git存储库.有时我不上网,所以我的笔记本电脑上有一个单独的存储库(从我的遥控器克隆).
但是,我无法从远程端的这个存储库中取出,因为我通常在防火墙后面,或者我没有公共IP.
我已经读过,我应该只是推到一个裸存储库.我应该如何将更改推送到远程存储库?
我有一个/foo/bar大型提交历史和多个分支的git repo .
我现在想要/foo/baz处于相同的回购中/foo/bar,这(我认为)意味着我需要创建一个新的回购/foo.但是,我想保留我所做的变化的历史/foo/bar.
我首先想到的是git format-patch,然后是apply,但是不保留提交消息.
这可能已经得到了回答,但我没有找到一个好的答案.
我来自集中式存储库,例如SVN,通常您只执行检出,更新,提交,还原,合并等等.
Git让我发疯.有很多命令,但最难理解的是为什么很多东西都像他们一样工作.
根据"什么是裸git存储库?" :
使用创建的存储库
git init --bare称为裸存储库.它们的结构与工作目录略有不同.首先,它们不包含源文件的工作或签出副本.
...
创建的裸存储库git init --bare用于... 共享....开发人员将克隆共享裸仓库,在其仓库的工作副本中进行本地更改,然后回退到共享裸仓库以使其他用户可以使用其更改.
- Jon Saints,http://www.saintsjd.com/2011/01/what-is-a-bare-git-repository/
但是,从接受的答案"github存储库和git裸存储库之间有什么区别?" :
GitHub上的Git repos是裸的,就像你要推送到[sic]的任何远程仓库一样.
- VonC,https://stackoverflow.com/a/20855207
但是,在GitHub中有源文件.我可以看到他们.如果我创建一个裸存储库,则没有源文件,只有.git工作存储库目录的内容.
这怎么可能?我不明白什么?
您能举例说明为什么我需要一个裸存储库及其以这种方式工作的动机吗?
爱德华汤姆森的回答部分是我想知道的.不过,我会重新提出我的问题:
我发布了第一个链接状态("什么是裸git存储库?"):
它们[裸存储库]不包含源文件的工作或签出副本.
VonC的回答:
GitHub上的Git repos是裸的
两个陈述暗示
Github没有工作副本.
爱德华汤姆森说:
它会在您浏览数据时根据数据呈现网页 - 将数据直接从存储库中提取出来并输出到您的Web浏览器,而不是先将数据写入文件服务器上的磁盘
不知何故,裸存储库必须包含所有数据和源代码.如果没有,那么渲染任何东西都不是不可能的,因为我可以看到所有源代码更新(提交),所有分支(具有各自的源),回购的整个日志等.
存储库的整个数据是否始终位于.git目录(或裸存储库)中,以某种格式可以随时呈现所有文件?这是裸存储库的原因,而工作副本只在给定时间有文件吗?
我和来自一个大团队的其他几个人正在关于该项目的单独页面上工作.我们称之为组页面.当我们处理组页面时,我们需要交换不完整的代码,我们不希望将代码发送到中央存储库.在此期间,我们还处理与组页面无关的功能,我们需要提交并推送到中央服务器.我正在寻找这个问题的解决方案,这是我的想法.请评论他们.
我们不能在实际的repo服务器中建立一个分支,因为它们更高.
现在每个都有问题.
我使用构建了一个存储库
git clone --mirror <url>
Run Code Online (Sandbox Code Playgroud)
我想删除一些远程分支,但我得到以下内容:
$ git push origin :b
error: --mirror can't be combined with refspecs
Run Code Online (Sandbox Code Playgroud)
... 要么
$ git push --delete b
fatal: --delete doesn't make sense without any refs
Run Code Online (Sandbox Code Playgroud)
此外,git branch -D b不要触摸遥控器.
有没有办法从镜像克隆中删除远程分支,还是我必须为此构建另一个克隆?
什么是点git add .或git add <filename>将其添加到临时区域?为什么不 git commit -m "blabla"呢?
我不明白临时区域的价值.
我一直面临着理解裸存储库的困难.我到处都读到共享的回购是一个简单的回购.为什么它必须是一个简单的回购?它不能是合作者克隆然后推/拉的正常回购吗?
我正在使用去中心化工作流程(中央+叉子)。有时,我想将叉子上的所有远程分支与中央存储库中相应分支的最新更改一起快速转发。
我已经创建了中央存储库的第二个克隆,它只是一个裸版本。使用单个git push命令,是否可以将所有分支推入叉子?我知道通配符可用于推入,但我无法使其工作。例如,我尝试了此操作(我的裸仓库中有两个远程服务器,“上游”和“原始”;起源指向我的叉子,上游是中央仓库:
git push origin refs/remotes/upstream/*:refs/heads/*
Run Code Online (Sandbox Code Playgroud)
我仍然发现git的refspec令人困惑。具体来说,我不确定使用什么名称空间。我假设所有远程分支都存储在下refs/heads/*。
我想将USB Pendrive作为Git存储库来收集信息.
假设我们将Pen驱动器作为Git存储库:我们可以将音频,视频文件合并到其中吗?
谈到git,我是新手,我在这里看了一些视频教程
看完这些教程后,我尝试使用ssh与我的朋友建立一个git repo
注意:
我设法在一个文件夹中设置我的代码,让我们说"folder1"使用
git init
Run Code Online (Sandbox Code Playgroud)
哪个有我的代码文件.
然后我在我的朋友机器上创建一个空的存储库让我们说' folder2',然后我使用了folder2一个裸存储库
git init --bare --shared
Run Code Online (Sandbox Code Playgroud)
现在我想将共享仓库设置为folder1代码的存储库之后,我尝试使用ssh在裸仓库上添加远程仓库
git remote add origin myFriend@hisIp:/LocationToFile
Run Code Online (Sandbox Code Playgroud)
在此之后,我推送了代码,这给了我一个成功的消息
现在的问题是git repo' folder2'仍然显示一个空的repo(带有空存储库的文件夹)并且我不能执行git操作,folder2即使我做" git status",我得到" fatal: This operation must be run in a work tree"
我正在关注Git Pro的书(http://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server)来设置我的第一个git远程服务器Ubuntu Linux系统.我跟着这个:
$ git remote add origin git@gitserver:/opt/git/inventory.git
$ git push origin Windows
Run Code Online (Sandbox Code Playgroud)
我收到此消息:
Counting objects: 33, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (28,28) done.
Writing objects: 100% (33/33), 7.30 KiB | 0 bytes/s, done.
Total 33 (delta 13), reused 0 (delta 0)
To git@gitserver:/opt/git/inventory.git
* [new branch] Windows -> Windows
Run Code Online (Sandbox Code Playgroud)
但是当我git status在远程服务器上键入时(在/opt/git/inventory.git/中),我收到错误消息fatal: This operation must be run in a work tree
远程存储库似乎不包含本地存储库中的任何文件,当我将远程存储库克隆到不同的本地文件夹时,没有文件,只有.git文件夹.
我在这里看了其他相关问题:
但我不清楚为什么会这样,以及我可以做些什么来弥补它.