我的目录A具有与目录B匹配的文件。目录A可能还有其他需要的文件。 目录B是git仓库。

我想将目录B克隆到目录A,但是git-clone不允许我这样做,因为该目录是非空的。

我希望它只是克隆.git,既然所有文件都匹配,我可以从那里去吗?

我无法克隆到空目录,因为目录A中的文件不在目录B中,因此我想保留它们。

复制.git是不可行的,因为我想使用refs进行推/拉操作,并且我不想手动设置它们。

有什么办法吗?

更新:我认为这可行,任何人都可以看到任何问题吗? ->

cd a
git clone --no-hardlinks --no-checkout ../b a.tmp
mv a.tmp/.git .
rm -rf a.tmp
git unstage # apparently git thinks all the files are deleted if you don't do this

#1楼

这是我遇到相同问题时所要做的(至少我认为这是相同问题)。 我进入目录A并运行git init

由于我不希望目录A中的文件后面跟随git,因此我编辑了.gitignore并将现有文件添加到其中。 在此之后,我运行git remote add origin '<url>' && git pull origin master等,然后将B克隆到A中,而不会打h。


#2楼

这为我工作:

git init
git remote add origin PATH/TO/REPO
git fetch
git reset origin/master  # Required when the versioned files existed in path before "git init" of this repo.
git checkout -t origin/master

注意: -t将为您设置上游分支,如果您想要的话,通常是这样。


#3楼

也许我误解了您的问题,但是如果您将文件从A复制/移动到git repo B并使用git add添加所需的文件,会不会更简单?

更新:从git文档:

仅当目录为空时才允许克隆到现有目录。

消息来源: http : //git-scm.com/docs/git-clone


#4楼

在以下Shell命令中, existing-dir是目录,其内容与repo-to-clone git存储库中的跟踪文件匹配。

# Clone just the repository's .git folder (excluding files as they are already in
# `existing-dir`) into an empty temporary directory
git clone --no-checkout repo-to-clone existing-dir/existing-dir.tmp # might want --no-hardlinks for cloning local repo# Move the .git folder to the directory with the files.
# This makes `existing-dir` a git repo.
mv existing-dir/existing-dir.tmp/.git existing-dir/# Delete the temporary directory
rmdir existing-dir/existing-dir.tmp
cd existing-dir# git thinks all files are deleted, this reverts the state of the repo to HEAD.
# WARNING: any local changes to the files will be lost.
git reset --hard HEAD

#5楼

另一个简单的食谱似乎对我很有效:

git clone --bare $URL .git
git config core.bare false

我检出包含现有文件的目录的主要用例是使用Git控制Unix点文件。 在新帐户上,主目录中已经有一些文件,甚至可能是我想从Git获取的文件。


#6楼

对对我有用的答案之一稍作修改:

git init
git remote add origin PATH/TO/REPO
git pull origin master

立即开始在master分支上工作。


#7楼

我喜欢Dale的答案 ,并且还添加了

git clone --depth 2 --no-checkout repo-to-clone existing-dir/existing-dir.tmp
git branch dev_new214
git checkout dev_new214
git add .
git commit
git checkout dev
git merge dev_new214

浅层的深度避免了很多额外的早期开发人员投入。 新分支为我们提供了良好的可视化历史记录,该服务器中放置了一些新代码。在我看来,这是完美的用法分支。 感谢所有发布在此的人的深刻见解。


#8楼

这为我工作:

cd existing_folder
git init
git remote add origin path_to_your_repo.git
git add .
git commit
git push -u origin master

#9楼

这对我来说是工作,但是您应该将远程存储库文件合并到本地文件:

git init
git remote add origin url-to-git
git branch --set-upstream-to=origin/master master
git fetch
git status

#10楼

警告-这可能会覆盖文件。

git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master -f

根据@cmcginty的答案进行了修改-如果没有-f,则对我不起作用


#11楼

我刚才使用过此功能,它要求破坏性最低的命令:

cd existing-dir
git clone --bare repo-to-clone .git
git config --unset core.bare
git reset

瞧!


#12楼

这是我在做什么:

git clone repo /tmp/folder
cp -rf /tmp/folder/.git /dest/folder/
cd /dest/folder
git checkout -f master

#13楼

我计划将新的Apache Web目录(使用WHM创建的帐户)用作登台Web服务器时遇到类似的问题。 我首先需要使用代码库克隆我的新项目,然后通过从存储库中提取代码来定期部署更改。

问题在于该帐户已经包含Web服务器文件,例如:

.bash_history
.bash_logout
.bash_profile
.bashrc
.contactemail
.cpanel/
...

...我不想删除或提交到我的存储库。 我需要他们呆在那儿而没有上路和跟踪。

我做了什么:

我转到我的Web文件夹(existing_folder):

cd /home/existing_folder

接着:

git init
git remote add origin PATH/TO/REPO
git pull origin master
git status

它按预期显示了许多未暂存文件的列表-最初在我的cPanel Web帐户中已经存在的那些文件。

然后,感谢本文 ,我将这些文件的列表添加到了:

**.git/info/exclude**

该文件几乎与.gitignore文件一样,使您可以忽略暂存文件。 在此之后,我没有什么要提交到.git /目录中的了-它就像一个个人的.gitignore ,其他人都看不到。

现在检查git status返回:

On branch master
nothing to commit, working tree clean

现在,只需从git存储库中提取内容,就可以将更改部署到此Web服务器。 希望这有助于某些Web开发人员轻松创建登台服务器。


#14楼

我一直在寻找类似的东西,这是我想到的:

我的情况是,我有一个活动的Web树,而我试图为其创建一个远程存储库,而又不移动当前Web树中的任何文件。 这是我所做的:

  1. 转到网络树并运行git init
  2. 转到存储库的预期位置并运行: git clone --bare /path/to/web/repo
  3. 在我的远程仓库中编辑配置文件,然后删除[remote "origin"]部分。
  4. 在网络树中的[remote "origin"] .git / config [remote "origin"]添加[remote "origin"]部分,指向新的远程仓库。

如何克隆到非空目录?相关推荐

  1. 如何将现有的非空目录转换为Git工作目录并将文件推送到远程存储库

    我有一个非空目录(例如/ etc / something),其中包含无法重命名,移动或删除的文件. 我想将这个目录检查到git中. 我希望能够使用"git push"或类似的东西将 ...

  2. linux c 删除非空目录

    Linux下系统api int rmdir(const char *pathname);可以删除目录.但使用rmdir函数时,目录必须为空,否则调用失败,函数返回-1,执行成功时,函数返回0. 也可以 ...

  3. php 递归创建目录、递归删除非空目录、迭代创建目录

    递归创建目录 方法一 1 function mk_dir($path){ 2 if(is_dir($path)){ //参数本身是一个目录 3 return true; 4 } 5 6 if(is_d ...

  4. Dos下删除(非)空目录或文件

    [删除非空文件夹]: 在xp中的虚拟dos也就是开始运行cmd啦,是可以输入中文的,要删除非空文件夹请用rmdir /s /q命令 删除非空目录:RMDIR [/S] [/Q] [drive:]pat ...

  5. C++递归删除非空目录所有文件

    今天在写C++代码时,遇到一个小问题,也是搞了一下午才解决(惭愧),就是在某个目录下,保存的相同名称的图片没有自动覆盖,意思就是多次运行相同的程序,如果某个文件(名)存在的话,那么这个文件则不会被覆盖 ...

  6. 删除非空目录linux_如何在Linux中删除空的非空目录

    删除非空目录linux Linux file system consist of directories. A system administrator generally work with dir ...

  7. 如何删除linux系统下的非空目录

    标题: 如何删除linux系统下的非空目录 删除目录的常用shell命令为: rm rm 是一个用于删除文件和目录的命令行实用程序.与 rmdir命令不同, rm 可以删除空目录和非空目录.( rmd ...

  8. windows强制删除非空目录

    在Windows系统中,可以使用「rd」命令强制删除非空目录. 使用方法: 打开命令提示符窗口(Windows键 + R,输入cmd,回车) 输入「rd /s /q 目录名」(例如「rd /s /q ...

  9. linux删除非空目录

    Linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中. 直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字 -r 就是向下递归,管理有多少级目 ...

最新文章

  1. 4、jQuery实现的全选、反选和不选功能
  2. 有了java为什么还需要groovy_Groovy创始人:Java面临终结 Scala将取而代之
  3. laravel5.7的redis配置,一直报错Class 'Predis\Client' not found
  4. exsi vmfs 没了_它是“推粪机”,隔三差五吃一盘,口臭没了排出宿便,肠道变干净...
  5. pku2182: Lost Cows
  6. 使用 Gradle 实现一套代码开发多个应用
  7. Go -- 并发编程的两种限速方法
  8. c语言如果x小于,请达人帮忙做份C语言试卷,谢谢了
  9. 从0开始学习 GitHub 系列之「06.团队合作利器 Branch」
  10. Android JSON 解析库的使用 - Gson 和 fast-json
  11. 固网服务器win7系统驱动,固网HP-1103驱动
  12. 《医院信息系统(HIS)软件基本功能规范》98版 [赏析]
  13. nes 红白机模拟器 第1篇
  14. 在小程序可以完成任务的情况下,为什么程序员非要编写大程序呢?
  15. 我陪你慢慢成长——苏子语录2015下半…
  16. 计算机组成原理实训重要吗,计算机组成原理实训_报告.doc
  17. java毕业设计点餐系统的设计与实现mybatis+源码+调试部署+系统+数据库+lw
  18. 速营社团队分享互联网发展过程那些疯狂的时代
  19. PHP如何生成大数组「考虑内存」
  20. Python数据分析:爬虫从网页爬取数据需要几步?

热门文章

  1. android stadio open recent 在同一窗口打开
  2. svn TortoiseSVN 回滚版本
  3. Android中XML的命名空间、自定义属性
  4. 计算机基础知识自考真题,自考《计算机应用基础》基础试题
  5. Http和Https对比
  6. 开发流程与版本管理规范
  7. bzoj 1233: [Usaco2009Open]干草堆tower【dp+单调栈】
  8. Filter及FilterChain的使用具体解释
  9. 今天准备正式开博了!专注于Silverlight!
  10. 程序员创业,不要把风险带给家人!——Leo网上答疑(4).