如何克隆到非空目录?
我的目录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树中的任何文件。 这是我所做的:
- 转到网络树并运行
git init
- 转到存储库的预期位置并运行:
git clone --bare /path/to/web/repo
- 在我的远程仓库中编辑配置文件,然后删除
[remote "origin"]
部分。 - 在网络树中的
[remote "origin"]
.git / config[remote "origin"]
添加[remote "origin"]
部分,指向新的远程仓库。
如何克隆到非空目录?相关推荐
- 如何将现有的非空目录转换为Git工作目录并将文件推送到远程存储库
我有一个非空目录(例如/ etc / something),其中包含无法重命名,移动或删除的文件. 我想将这个目录检查到git中. 我希望能够使用"git push"或类似的东西将 ...
- linux c 删除非空目录
Linux下系统api int rmdir(const char *pathname);可以删除目录.但使用rmdir函数时,目录必须为空,否则调用失败,函数返回-1,执行成功时,函数返回0. 也可以 ...
- php 递归创建目录、递归删除非空目录、迭代创建目录
递归创建目录 方法一 1 function mk_dir($path){ 2 if(is_dir($path)){ //参数本身是一个目录 3 return true; 4 } 5 6 if(is_d ...
- Dos下删除(非)空目录或文件
[删除非空文件夹]: 在xp中的虚拟dos也就是开始运行cmd啦,是可以输入中文的,要删除非空文件夹请用rmdir /s /q命令 删除非空目录:RMDIR [/S] [/Q] [drive:]pat ...
- C++递归删除非空目录所有文件
今天在写C++代码时,遇到一个小问题,也是搞了一下午才解决(惭愧),就是在某个目录下,保存的相同名称的图片没有自动覆盖,意思就是多次运行相同的程序,如果某个文件(名)存在的话,那么这个文件则不会被覆盖 ...
- 删除非空目录linux_如何在Linux中删除空的非空目录
删除非空目录linux Linux file system consist of directories. A system administrator generally work with dir ...
- 如何删除linux系统下的非空目录
标题: 如何删除linux系统下的非空目录 删除目录的常用shell命令为: rm rm 是一个用于删除文件和目录的命令行实用程序.与 rmdir命令不同, rm 可以删除空目录和非空目录.( rmd ...
- windows强制删除非空目录
在Windows系统中,可以使用「rd」命令强制删除非空目录. 使用方法: 打开命令提示符窗口(Windows键 + R,输入cmd,回车) 输入「rd /s /q 目录名」(例如「rd /s /q ...
- linux删除非空目录
Linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中. 直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字 -r 就是向下递归,管理有多少级目 ...
最新文章
- 4、jQuery实现的全选、反选和不选功能
- 有了java为什么还需要groovy_Groovy创始人:Java面临终结 Scala将取而代之
- laravel5.7的redis配置,一直报错Class 'Predis\Client' not found
- exsi vmfs 没了_它是“推粪机”,隔三差五吃一盘,口臭没了排出宿便,肠道变干净...
- pku2182: Lost Cows
- 使用 Gradle 实现一套代码开发多个应用
- Go -- 并发编程的两种限速方法
- c语言如果x小于,请达人帮忙做份C语言试卷,谢谢了
- 从0开始学习 GitHub 系列之「06.团队合作利器 Branch」
- Android JSON 解析库的使用 - Gson 和 fast-json
- 固网服务器win7系统驱动,固网HP-1103驱动
- 《医院信息系统(HIS)软件基本功能规范》98版 [赏析]
- nes 红白机模拟器 第1篇
- 在小程序可以完成任务的情况下,为什么程序员非要编写大程序呢?
- 我陪你慢慢成长——苏子语录2015下半…
- 计算机组成原理实训重要吗,计算机组成原理实训_报告.doc
- java毕业设计点餐系统的设计与实现mybatis+源码+调试部署+系统+数据库+lw
- 速营社团队分享互联网发展过程那些疯狂的时代
- PHP如何生成大数组「考虑内存」
- Python数据分析:爬虫从网页爬取数据需要几步?
热门文章
- android stadio open recent 在同一窗口打开
- svn TortoiseSVN 回滚版本
- Android中XML的命名空间、自定义属性
- 计算机基础知识自考真题,自考《计算机应用基础》基础试题
- Http和Https对比
- 开发流程与版本管理规范
- bzoj 1233: [Usaco2009Open]干草堆tower【dp+单调栈】
- Filter及FilterChain的使用具体解释
- 今天准备正式开博了!专注于Silverlight!
- 程序员创业,不要把风险带给家人!——Leo网上答疑(4).