git add remote_Git 命令 获取与创建项目

点击蓝色字体关注我,获取更多精彩内容

有几种方式获取一个 Git 仓库。一种是从网络上或者其他地方拷贝一个现有的仓库,另一种就是在一个目录中创建一个新的仓库。

git init

只需要简单地运行 git init 就可以将一个目录转变成一个 Git 仓库,这样你就可以开始对它进行版本管理了。

创建一个新的仓库来开始工作。

git initInitialized empty Git repository in .git

随着 Git 版本的不同,该目录下可能还会包含其他内容。不过对于一个全新的 git init 版本库,这将是你看到的默认结构。

ls -a.  ..  .gitcd .gitls -a.    HEAD    description  info    refs..    config    hooks    objects
  • HEAD 文件指向目前被检出的分支。

  • description 文件仅供 GitWeb 程序使用,里面没有只要一段话,无需关心。

  • info 目录包含一个全局性排除(global exclude)文件, 用以放置那些不希望被记录在 .gitignore 文件中的忽略模式(ignored patterns)。

  • refs 目录存储指向数据(分支、远程仓库和标签等)的提交对象的指针。

  • config 文件包含项目特有的配置选项。

  • hooks 目录包含客户端或服务端的钩子脚本(hook scripts)。

  • objects 目录存储所有数据内容。

  • index 文件保存暂存区信息。

在远程分支中改变默认分支。

git branch -v * dev a59e05c2 chore(readme): svg images (#11200)git branch -vv* dev a59e05c2 [origin/dev] chore(readme): svg images (#11200)git branch -u origin/dev      Branch 'dev' set up to track remote branch 'dev' from 'origin'.

把裸仓库放到服务器上,使用命令来为一个服务器创建一个空的祼仓库。

假设一个域名为 git.example.com 的服务器已经架设好,并可以通过 SSH 连接, 你想把所有的 Git 仓库放在 /root/src/git 目录下。假设服务器上存在 /root/src/git/ 目录,你可以通过以下命令复制你的裸仓库来创建一个新仓库:

scp -r vue.git root@git.example.com:/root/src/gitroot@git.example.com's password: config                                        100%  169    10.0KB/s   00:00    pack-e507976d957777276d17da6750e8a2bc1c18888f 100% 1540KB   1.6MB/s   00:00    pack-e507976d957777276d17da6750e8a2bc1c18888f.pack           100%   27MB   1.1MB/s   00:26    HEAD                                                         100%   20     0.7KB/s   00:00    exclude                                                      100%  240     9.0KB/s   00:00    description                                                  100%   73     1.3KB/s   00:00    commit-msg.sample                                            100%  896     2.7KB/s   00:00    pre-rebase.sample                                            100% 4898    25.5KB/s   00:00    pre-commit.sample                                            100% 1638    36.9KB/s   00:00    applypatch-msg.sample                                        100%  478     6.3KB/s   00:00    fsmonitor-watchman.sample                                    100% 3327     7.1KB/s   00:00    pre-receive.sample                                           100%  544    13.8KB/s   00:00    prepare-commit-msg.sample                                    100% 1492    46.6KB/s   00:00    post-update.sample                                           100%  189     1.8KB/s   00:00    pre-applypatch.sample                                        100%  424     1.9KB/s   00:00    pre-push.sample                                              100% 1348    66.5KB/s   00:00    update.sample                                                100% 3610    22.8KB/s   00:00    packed-refs                                                  100%   23KB  30.0KB/s   00:00    

当在一个新目录或已有目录执行 git init 时,Git 会创建一个 .git 目录。这个目录包含了几乎所有 Git 存储和操作的东西。如若想备份或复制一个版本库,只需把这个目录拷贝至另一处即可。

ls -a /root/src/git/vue.git/.  ..  config  description  HEAD  hooks  info  objects  packed-refs  refs

由于 Git 最初是一套面向版本控制系统的工具集,而不是一个完整的、用户友好的版本控制系统, 所以它还包含了一部分用于完成底层工作的子命令。这些命令被设计成能以 UNIX 命令行的风格连接在一起,抑或藉由脚本调用,来完成工作。这部分命令一般被称作底层(plumbing,管道)命令,而那些更友好的命令则被称作上层(porcelain,精美的)命令

git clone

git clone 实际上是一个封装了其他几个命令的命令。它创建了一个新目录,切换到新的目录,然后 git init 来初始化一个空的 Git 仓库, 然后为你指定的 URL 添加一个(默认名称为 origin 的)远程仓库(git remote add),再针对远程仓库执行 git fetch,最后通过 git checkout 将远程仓库的最新提交检出到本地的工作目录。

git clone 命令多次用到,这里只列举几个有意思的地方。

克隆现有的仓库。

git clone https://github.com/vuejs/vue.git

使用了 --bare 选项来创建一个没有任何工作目录的 Git 仓库副本。

git clone --bare https://github.com/vuejs/vue.gitCloning into bare repository 'vue.git'...remote: Enumerating objects: 1, done.remote: Counting objects: 100% (1/1), done.remote: Total 56272 (delta 0), reused 0 (delta 0), pack-reused 56271Receiving objects: 100% (56272/56272), 27.36 MiB | 55.00 KiB/s, done.Resolving deltas: 100% (39435/39435), done.ls -a                                     .  ..  vue.gitls -a vue.git .    HEAD    description  info    packed-refs..    config    hooks    objects    refs

打包中使用它来解包一个打包好的 Git 仓库。

git log                                  commit a59e05c2ffe7d10dc55782baa41cb2c1cd605862 (HEAD -> dev, origin/dev, origin/HEAD, origin/dev)Author: Ikko Ashimine Date:   Thu Mar 12 06:26:53 2020 +0900    chore(readme): svg images (#11200)        add ?sanitize=true to svgcommit 98b9270ab50fe393111dd1e57f9259636e0d980cAuthor: Evan You Date:   Tue Mar 10 21:07:39 2020 -0400    chore: fix svg logosgit bundle create repo.bundle HEAD dev   Enumerating objects: 29666, done.Counting objects: 100% (29666/29666), done.Delta compression using up to 4 threadsCompressing objects: 100% (8432/8432), done.Writing objects: 100% (29666/29666), 15.56 MiB | 118.89 MiB/s, done.Total 29666 (delta 20742), reused 29665 (delta 20741)
git clone repo.bundle repoCloning into 'repo'...Receiving objects: 100% (29666/29666), 15.56 MiB | 40.23 MiB/s, done.Resolving deltas: 100% (20742/20742), done.ls -a repo.    .eslintignore  .gitignore  dist    scripts..    .eslintrc.js  BACKERS.md  examples  src.babelrc.js  .flowconfig  LICENSE    flow    test.circleci  .git    README.md  package.json  types.editorconfig  .github    benchmarks  packages  yarn.lock

最后,如何在一个被分成一个主项目与几个子项目的项目上开发,使用 --recursive 选项来让克隆一个带有子模块的仓库变得简单。

首先将一个已存在的 Git 仓库添加为正在工作的仓库的子模块。你可以通过在 git submodule add 命令后面加上想要跟踪的项目的相对或绝对 URL 来添加新的子模块,添加一个名为 “DbConnector” 的库。

git submodule init git submodule add https://github.com/chaconinc/DbConnectorCloning into 'DbConnector'...remote: Counting objects: 11, done.remote: Compressing objects: 100% (10/10), done.remote: Total 11 (delta 0), reused 11 (delta 0)Unpacking objects: 100% (11/11), done.Checking connectivity... done.

如果给 git clone 命令传递 --recurse-submodules 选项,它就会自动初始化并更新仓库中的每一个子模块, 包括可能存在的嵌套子模块。

git clone --recurse-submodules https://github.com/chaconinc/MainProjectCloning into 'MainProject'...remote: Counting objects: 14, done.remote: Compressing objects: 100% (13/13), done.remote: Total 14 (delta 1), reused 13 (delta 0)Unpacking objects: 100% (14/14), done.Checking connectivity... done.Submodule 'DbConnector' (https://github.com/chaconinc/DbConnector) registered for path 'DbConnector'Cloning into 'DbConnector'...remote: Counting objects: 11, done.remote: Compressing objects: 100% (10/10), done.remote: Total 11 (delta 0), reused 11 (delta 0)Unpacking objects: 100% (11/11), done.Checking connectivity... done.Submodule path 'DbConnector': checked out 'c3f01dc8862123d317dd46284b05b6892c7b29bc'

如果你已经克隆了项目但忘记了 --recurse-submodules,那么可以运行 git submodule update --init 将 git submodule init 和 git submodule update 合并成一步。如果还要初始化、抓取并检出任何嵌套的子模块, 请使用简明的 git submodule update --init --recursive。

58c89df5644d2b493c9d3486c8b901bf.png

b3b156e545c0a7d3ba8e1e8e953da04f.png 「往期精选」 「往期精选」「往期精选」 db784ba82857ad405cf75da486c26927.png 中国的这个举动,让全世界都松了一口气 790d9b712772c4a01ed70d93592535be.png 苹果把微信摁在地上摩擦? a6af8d3bdc204ebb70762a756c166cbb.png 84岁钟南山这50天的行程,看完泪目

点个“在看”

中国会好起来的,对吗?6e3d2507c06acf7e884bcba8c474ff17.png↓↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值