<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ tengfei - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ freeCodeCamp 是一个免费学习编程的开发者社区，涵盖 Python、HTML、CSS、React、Vue、BootStrap、JSON 教程等，还有活跃的技术论坛和丰富的社区活动，在你学习编程和找工作时为你提供建议和帮助。 ]]>
        </description>
        <link>https://www.freecodecamp.org/chinese/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ tengfei - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/chinese/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sat, 23 May 2026 08:28:40 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/chinese/news/author/tengfei/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Java 数组的打印方式 ]]>
                </title>
                <description>
                    <![CDATA[ 引言 数组是一种用来保存相同数据类型的数据结构。 数组的元素在内存中是连续存储的。 Java 中数组即对象。类的所有方法都被放进数组中调用。我们可以声明一个指定长度的数组。 声明一个基本数据类型数组： int[] intArray = {2,5,46,12,34}; 现在尝试使用System.out.println() 方法打印数组： System.out.println(intArray); // output: [I@74a14482 为什么 Java 没有打印出来数组数据呢？背后发生了什么事情？ 方法System.out.println() 通过调用String.valueOf() 把入参对象转换为一个字符串。 如果我们查看 String.valueOf() 方法的实现，会看到如下的代码： public static String valueOf(Object obj) {     return (obj == null) ? "null" : obj.toString(); } 如果入参是null 会返回空， 其它情况会调用obj.toString()。 ]]>
                </description>
                <link>https://www.freecodecamp.org/chinese/news/java-array-methods-how-to-print-an-array-in-java/</link>
                <guid isPermaLink="false">5fb132d35f583f05650910da</guid>
                
                    <category>
                        <![CDATA[ Java ]]>
                    </category>
                
                    <category>
                        <![CDATA[ 数组 ]]>
                    </category>
                
                    <category>
                        <![CDATA[ 后端开发 ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ tengfei ]]>
                </dc:creator>
                <pubDate>Wed, 16 Jun 2021 09:06:00 +0000</pubDate>
                <media:content url="https://chinese.freecodecamp.org/news/content/images/2021/04/photo-1565609823909-a46a1d79c401-1.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <h2 id="-">引言</h2><p>数组是一种用来保存相同数据类型的数据结构。 数组的元素在内存中是连续存储的。</p><p>Java 中数组即对象。类的所有方法都被放进数组中调用。我们可以声明一个指定长度的数组。</p><p>声明一个基本数据类型数组：</p><pre><code class="language-java">int[] intArray = {2,5,46,12,34};
</code></pre><p>现在尝试使用 &nbsp;<code>System.out.println()</code> &nbsp;方法打印数组：</p><pre><code class="language-java">System.out.println(intArray);
// output: [I@74a14482
</code></pre><p>为什么 Java 没有打印出来数组数据呢？背后发生了什么事情？</p><p>方法 &nbsp;<code>System.out.println()</code> &nbsp;通过调用 &nbsp;<code>String.valueOf()</code> &nbsp;把入参对象转换为一个字符串。 如果我们查看 &nbsp;<code>String.valueOf()</code> &nbsp;方法的实现，会看到如下的代码：</p><pre><code class="language-java">public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}
</code></pre><p>如果入参是 &nbsp;<code>null</code> &nbsp;会返回空， 其它情况会调用 &nbsp;<code>obj.toString()</code>。 最后 &nbsp;<code>System.out.println()</code> &nbsp;调用 &nbsp;<code>toString()</code> &nbsp;方法打印出了字符串。</p><p>如果对象的类没有重写 &nbsp;<code>Object.toString()</code> &nbsp;方法并实现，那就会调用超类 &nbsp;<code>Object</code> &nbsp;的 &nbsp;<code>Object.toString()</code> &nbsp;方法。</p><p><code>Object.toString()</code> &nbsp;返回的是 &nbsp;<code>getClass().getName()+****‘@’****+Integer.toHexString(hashCode())</code>。 简化格式为：“class name @ object’s hash code”。</p><p>上文中输出的内容是 &nbsp;<code>[I@74a14482</code>， &nbsp;<code>[</code> &nbsp;表示数组， &nbsp;<code>I</code> &nbsp;表示 int 数据类型（数组的数据类型）。 &nbsp;<code>74a14482</code> &nbsp;是数组的无符号十六进制 hash 值。</p><p>当创建自定义类时，重写 &nbsp;<code>Object.toString()</code> &nbsp;方法是最佳的实践。</p><p>Java 中我们不能简单的使用 &nbsp;<code>System.out.println()</code> &nbsp;方法打印数组。 相反，下面的几种方法可以打印：</p><ol><li>循环：for 循环和 for-each 循环</li><li><code>Arrays.toString()</code> &nbsp;方法</li><li><code>Arrays.deepToString()</code> &nbsp;方法</li><li><code>Arrays.asList()</code> &nbsp;方法</li><li>Java Iterator interface</li><li>Java Stream API</li></ol><p>让我们来学习如何使用它们吧。</p><h2 id="1-for-for-each-">1. 循环：for 循环和 for-each 循环</h2><p>for 循环示例：</p><pre><code class="language-java">int[] intArray = {2,5,46,12,34};

for(int i=0; i&lt;intArray.length; i++){
    System.out.print(intArray[i]);
    // output: 25461234
}
</code></pre><p>Java 的包装类都重写了 &nbsp;<code>Object.toString()</code> &nbsp;，返回数组元素的字符串形式。</p><p>for-each 循环示例：</p><pre><code class="language-java">int[] intArray = {2,5,46,12,34};
for(int i: intArray){
    System.out.print(i);
    // output: 25461234
}
</code></pre><h2 id="2-arrays-tostring-">2. Arrays.toString() 方法</h2><p><code>Arrays.toString()</code> &nbsp;是 &nbsp;<code>java.util</code> &nbsp;包下数组类的一个静态方法。它返回指定数组内容的字符串形式。这种方法可以用来打印一维数组。</p><p>数组元素被转换为字符串，调用了 &nbsp;<code>String.valueOf()</code> &nbsp;方法，例如：</p><pre><code class="language-java">int[] intArray = {2,5,46,12,34};
System.out.println(Arrays.toString(intArray));
// output: [2, 5, 46, 12, 34]
</code></pre><p>对于引用类型的数组，确保重写该引用类的 &nbsp;<code>Object.toString()</code> &nbsp;方法。</p><p>例如：</p><pre><code class="language-java">public class Test {
    public static void main(String[] args) {
        Student[] students = {new Student("John"), new Student("Doe")};
    System.out.println(Arrays.toString(students));
    // output: [Student{name='John'}, Student{name='Doe'}]
}}
class Student {
    private String name;
public Student(String name){
    this.name = name;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
@Override
public String toString() {
    return "Student{" + "name='" + name + ''' + '}';
}
</code></pre><p>此方法不适用于多维数组。在多维数组中， &nbsp;<code>Object.toString()</code> &nbsp;会打印数组元素的内存地址而不是内容。</p><p>例如：</p><pre><code class="language-java">// creating multidimensional array
int[][] multiDimensionalArr = { {2,3}, {5,9} };
System.out.println(Arrays.toString(multiDimensionalArr));
// output: [[I@74a14482, [I@1540e19d]
</code></pre><p>借助 &nbsp;<code>Arrays.deepToString()</code> &nbsp;方法可以打印多维数组。</p><h2 id="3-arrays-deeptostring-">3. Arrays.deepToString() 方法</h2><p><code>Arrays.deepToString()</code> &nbsp;返回数组“深层内容”的字符串形式。</p><p>对于基本类型数组，通过重载调用 &nbsp;<code>Arrays.toString()</code> &nbsp;方法将其转换为字符串。</p><p>基本类型多维数组示例：</p><pre><code class="language-java">// creating multidimensional array
int[][] multiDimensionalArr = { {2,3}, {5,9} };
System.out.println(Arrays.deepToString(multiDimensionalArr));
// output: [[2, 3], [5, 9]]
</code></pre><p>对于引用类型数组，通过递归调用 &nbsp;<code>Arrays.deepToString()</code> &nbsp;方法将其转换为字符串。</p><pre><code class="language-java">Teacher[][] teachers = 
{{ new Teacher("John"), new Teacher("David") }, {new Teacher("Mary")} };
System.out.println(Arrays.deepToString(teachers));
// output: 
[[Teacher{name='John'}, Teacher{name='David'}],[Teacher{name='Mary'}]]
</code></pre><p>我们在 Teacher 类中重写了 &nbsp;<code>Object.toString()</code> &nbsp;方法。</p><p>如果你对递归调用感兴趣，请查看 &nbsp;<code>Arrays.deepToString()</code> &nbsp;方法的<a href="http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/be44bff34df4/src/share/classes/java/util/Arrays.java#l4611">源码</a>。</p><p><strong>NOTE:</strong> &nbsp;引用类型的一维数组也可以用 &nbsp;<code>Arrays.deepToString()</code> &nbsp;方法打印。 例如:</p><pre><code class="language-java">Integer[] oneDimensionalArr = {1,4,7};
System.out.println(Arrays.deepToString(oneDimensionalArr));
// output: [1, 4, 7]
</code></pre><h2 id="4-arrays-aslist-">4. Arrays.asList() 方法</h2><p>此方法返回固定大小（数组长度）的列表。</p><pre><code class="language-java">Integer[] intArray = {2,5,46,12,34};
System.out.println(Arrays.asList(intArray));
// output: [2, 5, 46, 12, 34]
</code></pre><p>因为 List 是对象列表集合，所以数据类型由 int 变为 Integer。当我们把数组转换为列表时，数组应该是引用类型。</p><p>Java 调用 &nbsp;<code>Arrays.**asList**(intArray).toString()</code> &nbsp;。其内部实现是列表元素调用了 &nbsp;<code>toString()</code> &nbsp;方法。</p><p>自定义 Teacher 类示例：</p><pre><code class="language-java">Teacher[] teacher = { new Teacher("John"), new Teacher("Mary") };
System.out.println(Arrays.asList(teacher));
// output: [Teacher{name='John'}, Teacher{name='Mary'}]
</code></pre><p><strong>NOTE:</strong> &nbsp;不能使用此方法打印多维数据。 例如：</p><pre><code class="language-java">Teacher[][] teachers = 
{{ new Teacher("John"), new Teacher("David") }, { new Teacher("Mary") }};
System.out.println(Arrays.asList(teachers));
// output: [[Lcom.thano.article.printarray.Teacher;@1540e19d, [Lcom.thano.article.printarray.Teacher;@677327b6] 
</code></pre><h2 id="5-java-iterator-interface">5. Java Iterator interface</h2><p>Iterator 接口和 for-each 循环类似，可以使用 Iterator 接口遍历数组元素并打印。</p><p>Collection 调用 &nbsp;<code>iterator()</code> &nbsp;方法创建 Iterator 对象。Iterator 对象可以遍历该集合的元素。</p><p>Iterator 接口打印数组示例：</p><pre><code class="language-java">Integer[] intArray = {2,5,46,12,34};
// creating a List of Integer
List&lt;Integer&gt; list = Arrays.asList(intArray);
// creating an iterator of Integer List
Iterator&lt;Integer&gt; it = list.iterator();
// if List has elements to be iterated
while(it.hasNext()) {
    System.out.print(it.next());
    // output: 25461234
}
</code></pre><h2 id="6-java-stream-api">6. Java Stream API</h2><p>Stream API 用于处理对象集合。 流是一个对象序列。流不能改变原始数据结构，它仅根据请求的操作提供结果。</p><p>借助终端操作 &nbsp;<code>forEach()</code> &nbsp;可以遍历流的每个元素。</p><p>例如：</p><pre><code class="language-java">Integer[] intArray = {2,5,46,12,34};
Arrays.stream(intArray).forEach(System.out::print);
// output: 25461234
</code></pre><p>现在我们掌握了 Java 数组的打印方式。</p><p>感谢阅读！</p><p>我的另一篇文章在 &nbsp;<a href="https://medium.com/@mvthanoshan9/object-oriented-programming-principles-in-java-820919dced1a">Medium</a>。</p><p><strong><strong>Happy Coding!</strong></strong></p><p>原文：<a href="https://www.freecodecamp.org/news/java-array-methods-how-to-print-an-array-in-java/">Java Array Methods – How to Print an Array in Java</a>，作者：Thanoshan MV</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ 如何 Git Clone 指定分支 ]]>
                </title>
                <description>
                    <![CDATA[ Git 是分布式的, 不同于 SVN 和 CVS 等旧的集中式版本控制系统。每个开发者都能在本地和远程查看记录和控制代码，他们也可以视情况从不同位置访问或操纵不同部分的代码。 自从 Linus Torvalds （Linux 操作系统内核的著名作者） 在 2005 年为 Linux 内核开发了 Git，它就开始成为世界上使用最广泛的现代版本控制系统。 在本篇文章中，我会介绍 Git 克隆和 Git 分支工作流，并且展示如何根据需求克隆一个指定的分支。让我们开始吧！ 必备知识  * 基本的终端知识  * 能使用终端指令  * 安装 Git（我也会教如何安装）  * GitHub 账号  * 好的心情（笑起来，朋友） 快速入门 Git 和 GitHub 摘自维基百科 [https://en.wikipedia.org/wiki/Git]， > Git  ]]>
                </description>
                <link>https://www.freecodecamp.org/chinese/news/git-clone-branch-how-to-clone-a-specific-branch/</link>
                <guid isPermaLink="false">60c21f656a50ee0507a98ab2</guid>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ tengfei ]]>
                </dc:creator>
                <pubDate>Thu, 10 Jun 2021 10:00:00 +0000</pubDate>
                <media:content url="https://chinese.freecodecamp.org/news/content/images/2021/06/article-banner--1-.gif" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Git 是分布式的, 不同于 SVN 和 CVS 等旧的集中式版本控制系统。每个开发者都能在本地和远程查看记录和控制代码，他们也可以视情况从不同位置访问或操纵不同部分的代码。</p>
<p>自从 Linus Torvalds （Linux 操作系统内核的著名作者） 在 2005 年为 Linux 内核开发了 Git，它就开始成为世界上使用最广泛的现代版本控制系统。</p>
<p>在本篇文章中，我会介绍 Git 克隆和 Git 分支工作流，并且展示如何根据需求克隆一个指定的分支。让我们开始吧！</p>
<h2 id="">必备知识</h2>
<ul>
<li>基本的终端知识</li>
<li>能使用终端指令</li>
<li>安装 Git（我也会教如何安装）</li>
<li>GitHub 账号</li>
<li>好的心情（笑起来，朋友）</li>
</ul>
<h2 id="gitgithub">快速入门 Git 和 GitHub</h2>
<p>摘自<a href="https://en.wikipedia.org/wiki/Git">维基百科</a>，</p>
<blockquote>
<p><strong>Git</strong>  是软件开发中用来跟踪项目（代码）变更的一个分布式版本控制系统。 主要专注于开发人员之间加强协调，协作，速度和效率。</p>
</blockquote>
<blockquote>
<p><strong>GitHub</strong>  是基于 Web 的托管服务，使用 Git 进行版本控制。它提供了 Git 的所有分布式版本控制和源代码管理的功能，还添加了更多计算机编码的功能。</p>
</blockquote>
<h2 id="windowsgit">如何在 Windows 上安装 Git</h2>
<p>下载和安装最新的版本 <a href="https://git-for-windows.github.io/">Windows 上 Git 的安装程序</a></p>
<h2 id="linuxgit">如何在 Linux 上安装 Git</h2>
<p>不同的 Linux 发行版本，有不同的命令：</p>
<h3 id="debianorubuntu">Debian or Ubuntu</h3>
<pre><code>sudo apt-get update
sudo apt-get install git
</code></pre>
<h3 id="fedora">Fedora</h3>
<pre><code>sudo dnf install git
</code></pre>
<h3 id="centos">CentOS</h3>
<pre><code>sudo yum install git
</code></pre>
<h3 id="archlinux">Arch Linux</h3>
<pre><code>sudo pacman -Sy git
</code></pre>
<h3 id="gentoo">Gentoo</h3>
<pre><code>sudo emerge --ask --verbose dev-vcs/git
</code></pre>
<h2 id="macgit">如何在 Mac 上安装 Git</h2>
<p>下载和安装最新的版本  <a href="https://sourceforge.net/projects/git-osx-installer/files/">Mac 上 Git 的安装程序</a></p>
<p>或者可以执行如下指令：</p>
<pre><code>brew install git
</code></pre>
<p>现在我们已经安装了 Git，让我们继续本教程。</p>
<h2 id="git">简介 Git 克隆</h2>
<p>Git 允许你在“仓库”中版本化管理项目。该仓库是基于 Web 的托管服务进行版本控制，和 GitHub一样。</p>
<p>你可以克隆仓库到你本地的机器，并且得到所有的文件和分支（我稍后会讲解更多关于分支的内容）。</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/Screenshot-2020-06-23-at-5.47.48-AM.png" alt="Screenshot-2020-06-23-at-5.47.48-AM" width="600" height="400" loading="lazy"></p>
<p>例如，可以通过 SSH 克隆 freeCodeCamp 的仓库，如下：</p>
<pre><code>git clone git@github.com:freeCodeCamp/freeCodeCamp.git
</code></pre>
<h2 id="git">简介 Git 分支</h2>
<p>在做项目时，你可能会有不同的功能。并且有多个贡献者会做该项目及其功能。</p>
<p>分支允许你在  <code>master</code>  分支中使用相同的文件创建一个 “playground（游乐场）” 。你可以使用这个分支构建独立的功能、测试新功能、做重大改动、修复代码、写文档，或者在不中断的情况下尝试自己的想法，或者优化生产代码。</p>
<p>分支是 Git 中的一个核心概念，在 GitHub 中也用于管理一个项目不同版本的工作流。  <code>master</code>  分支始终是仓库中的默认分支，通常被认为是 “生产和可部署代码”。 新分支如  <code>passwordless-auth</code>  或  <code>refactor-signup-ux</code>  可以从  <code>master</code>  分支中创建。</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/Screenshot-2020-06-22-at-2.47.53-AM.png" alt="Screenshot-2020-06-22-at-2.47.53-AM" width="600" height="400" loading="lazy"></p>
<p>freeCodeCamp 仓库中的所有分支</p>
<h2 id="git">如何克隆 Git 分支</h2>
<p>当你使用  <code>git clone</code>  指令克隆仓库时，请记住这会克隆分支和远程  <code>HEAD</code>  。默认情况下通常是  <code>master</code>  分支，并包括仓库中的所有其他分支。</p>
<p>所以当你克隆一个仓库时，你克隆了  <code>master</code>  分支和所有其他分支。这意味着你可以随意切换到另一个分支。</p>
<p>假设你在项目上的任务是开发一项功能，将无密码身份验证添加到用户仪表板。这个功能位于  <code>passwordless-auth</code>  分支上。</p>
<p>你不需要  <code>master</code>  分支，因为你的 “功能分支” 之后会被合并到  <code>master</code>  中。那么你如何克隆  <code>passwordless-auth</code>  分支，而无需获取所有其他分支的 “一堆你不需要的文件” ？</p>
<p>我创建了示例仓库来解释这一点。此仓库包含一个使用 NextJS 构建的简单博客，有四个虚拟分支机构：</p>
<ul>
<li>master</li>
<li>dev</li>
<li>staging</li>
<li>passwordless-auth</li>
</ul>
<p>在 Nextjs 中，文件夹   <code>pages/api</code>  内的任何文件都被映射到  <code>/api/*</code> 路径，并被视为替代  <code>page</code>  的 API 端点。在我的仓库中，我在<a href="https://github.com/BolajiAyodeji/nextjs-blog/tree/master/pages/api">这个目录</a>中创建了不同的虚拟 APIs，以使每个分支都不同。</p>
<p><code>master</code>  分支保存  <strong>pages/api/hello.js</strong>  文件，而  <code>passwordless-auth</code>  分支保存  <strong>pages/api/auth.js</strong> 文件。每个文件仅返回一个伪文本响应。在<a href="https://nextjs-blog.bolajiayodeji.vercel.app/api/hello">这里</a>查看  <code>master</code> 分支的 API 响应（给你一个特别的消息）。</p>
<p>让我们克隆仓库：</p>
<pre><code>git clone git@github.com:BolajiAyodeji/nextjs-blog.git
</code></pre>
<p>我们可以访问此仓库中的所有分支，你可以在每个版本之间轻松切换，以查看每个版本及其文件。</p>
<pre><code>git branch -a
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/Screenshot-2020-06-22-at-4.51.56-AM.png" alt="Screenshot-2020-06-22-at-4.51.56-AM" width="600" height="400" loading="lazy"></p>
<p>想下  <strong>remotes/origin/..</strong>  分支来自哪里？</p>
<p>当你克隆仓库时，你是从互联网或内部服务器上的  <strong>remote</strong>  仓库提取数据。Origin 是你的 Git 创建的别名，用于替换远程 URL（如果你愿意，你可以更改或指定其他别名）。</p>
<p><strong>remotes/origin/..</strong> 分支指向从互联网克隆的源仓库，因此你仍然可以从源执行 pull/push 。</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/Screenshot-2020-06-23-at-5.24.43-AM.png" alt="Screenshot-2020-06-23-at-5.24.43-AM" width="600" height="400" loading="lazy"></p>
<p>所以当你克隆  <code>master</code>  分支到你的机器上时，  <code>remotes/origin/master</code>  是  <code>master</code>  在网络上的源分支， <code>master</code>  是你本机的分支。因此，你将从  <code>remotes/origin/master</code>  中 pull/push。</p>
<p>总的来说  <strong>Remote</strong>  是指向互联网上仓库的 URL，而  <strong>Origin</strong>  是这个远程 URL 的别名。</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/Screenshot-2020-06-23-at-5.28.06-AM.png" alt="Screenshot-2020-06-23-at-5.28.06-AM" width="600" height="400" loading="lazy"></p>
<h2 id="">如何克隆一个指定的分支</h2>
<p>现在从我们的演示仓库中克隆一个指定的分支。有两种方法克隆一个特定的分支。你可以：</p>
<ul>
<li>克隆仓库，获取所有分支，立即切换到指定的分支。</li>
<li>克隆仓库并仅获取一个分支。</li>
</ul>
<h3 id="">方案一</h3>
<pre><code>git clone --branch &lt;branchname&gt; &lt;remote-repo-url&gt;
</code></pre>
<p>或</p>
<pre><code>git clone -b &lt;branchname&gt; &lt;remote-repo-url&gt;
</code></pre>
<p>这里  <strong>-b</strong>  只是  <strong>--branch</strong>  的别名。</p>
<p>这样，你就可以获取仓库中的所有分支，切换到你指定的分支，指定的分支成为本地分支用于 <code>git push</code> 和 <code>git pull</code>。但你仍然从每个分支中获取了所有文件。 这可能不是你想要的吧？</p>
<p>让我们测试看看：</p>
<pre><code> git clone -b passwordless-auth git@github.com:BolajiAyodeji/nextjs-blog.git
</code></pre>
<p>这会自动将 <code>passwordless-auth</code> 配置为本地分支，但仍会跟踪其他分支。</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/Screenshot-2020-06-23-at-5.30.01-AM.png" alt="Screenshot-2020-06-23-at-5.30.01-AM" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/Screenshot-2020-06-30-at-3.27.31-AM.png" alt="Screenshot-2020-06-30-at-3.27.31-AM" width="600" height="400" loading="lazy"></p>
<h3 id="">方案二</h3>
<pre><code>git clone --branch &lt;branchname&gt; --single-branch &lt;remote-repo-url&gt;
</code></pre>
<p>或</p>
<pre><code>git clone -b &lt;branchname&gt; --single-branch &lt;remote-repo-url&gt;
</code></pre>
<p>这里  <strong>-b</strong>  只是  <strong>--branch</strong>  的别名。</p>
<p>这与方案一的操作相同，除了 <code>--single-branch</code> 选项，它是在 Git 版本 1.7.10 及更高版本中引入的。这个选项允许你仅从指定的分支中获取文件而不获取其他分支。</p>
<p>让我们测试看看：</p>
<pre><code>git clone -b passwordless-auth --single-branch git@github.com:BolajiAyodeji/nextjs-blog.git
</code></pre>
<p>这会自动将 <code>passwordless-auth</code> 配置为本地分支，且只能跟踪此分支。</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/Screenshot-2020-06-23-at-5.31.12-AM.png" alt="Screenshot-2020-06-23-at-5.31.12-AM" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/Screenshot-2020-06-30-at-3.29.07-AM.png" alt="Screenshot-2020-06-30-at-3.29.07-AM" width="600" height="400" loading="lazy"></p>
<p>如果你执行 <code>cd pages/api</code>，你会在 <code>passwordless-auth</code> 分支中找到之前设置的 <code>auth.js</code> 文件。</p>
<h2 id="">总结</h2>
<p>你可能无法使用互联网或没有足够的存储空间，但你需要在指定的分支中工作，或者你可能出于各种原因希望克隆具有有限文件的指定分支。幸运的是， Git 为你提供了执行此操作的灵活性。锻炼你学到的新知识并尝试一下吧，还有更多的 "Git" 知识去学习。</p>
<p>一次学习一个知识点，对吧✌？</p>
<!--kg-card-end: markdown--><p>原文：<a href="https://www.freecodecamp.org/news/git-clone-branch-how-to-clone-a-specific-branch/">Git Clone Branch – How to Clone a Specific Branch</a>，作者：<a href="https://www.freecodecamp.org/news/author/bolajiayodeji/">Bolaji Ayodeji</a></p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
