# เล่นกับ Repository

{% hint style="success" %}
**แนะนำให้อ่าน**\
บทความนี้เป็นส่วนหนึ่งของคอร์ส [**👶 Azure DevOps**](https://saladpuk.gitbook.io/learn/cloud/azure-devops) ที่จะมาสอนการใช้งานทุกสิ่งที่ DevOps ควรจะต้องมี เพื่อให้เราสามารถทำ Feedback loop ได้ไวขึ้น ดังนั้นถ้าเพื่อนๆสนใจอยากดูว่ามันทำอะไรได้ก็กดไปอ่านที่บทความหลักได้เลยครัช
{% endhint %}

{% hint style="warning" %}
**คำเตือน**\
ถ้าเพื่อนๆต้องการทำตามบทความนี้ จะต้องมีโปรเจคใน **Azure DevOps** เสียก่อน แต่ถ้าใครยังไม่มีก็สามารถไปทำตามได้จากบทตัวนี้ก่อน [**เล่น Azure DevOps กัน**](https://saladpuk.gitbook.io/learn/cloud/azure-devops/azure-devops) แล้วค่อยกลับมาทำตามบทความนี้ก็ได้ครัช
{% endhint %}

## 🔥 ทำงานกับ Repository

ที่โปรเจคที่เราได้มามันจะมีเมนูอยู่ด้านซ้ายมือเอาไว้เข้าไปจัดการตามแต่ละเรื่องต่างๆ ซึ่งในรอบนี้เราจะมาลองใช้ **Repository** เพื่อเอาไว้ให้ทีมทำงานร่วมกันจัดการ source code ดังนั้นเราก็จะจิ้มมันลงไปหนึ่งจึ๊ก

![](/files/-LnNVnceyesQN2yoyT88)

พอเรากดเข้ามาแล้ว เขาก็จะแตกเมนูเป็นตัวย่อยๆให้เราทำงานด้วย (เดี๋ยวไปอธิบายแต่ละเมนูแยกเป็นแต่ละบทความอีกที) แต่ที่ด้านขวามือเราจะเห็นว่าหน้าตามันเปลี่ยนไป **ซึ่งถ้าเรายังไม่เคยทำอะไรกับโปรเจคนี้เลย**เขาจะให้เราเลือกว่าเราจะทำงานกับ **Repository** ของโปรเจคนี้ยังไง ซึ่งเขามีตัวเลือกให้เราลองเล่นได้ทั้งหมด 4 อย่าง

### 1️⃣ ใช้ Repository ใหม่จาก Azure DevOps เลย

ในกรณีที่เราอยากได้ Repository ที่ไม่มีอะไรเลย เราก็สามารถเริ่มต้นทำงานกับเจ้า repository ตัวนีได้เลย โดยการ **Clone** จาก URL ที่เขาโชว์ไว้ให้นั่นเอง ซึ่งจากตัวนี้ถ้าเราอยากได้ **Credentials** ก็สามารถกดสร้างได้จากหน้านี้เลย

![](/files/-LpxLo7xdj3hhHiK5jQv)

### 2️⃣ เอางานเก่าขึ้นมาใช้แทน

ในกรณีที่เพื่อนๆมี source code อยู่ใน Repository เก่าของตัวเองอยู่แล้ว ก็สามารถเอางานที่อยู่ในนั้น Push ขึ้นมาได้เลยโดยใช้ Repository ตัวใหม่ที่ Azure DevOps สร้างมาให้ตัวนี้

![](/files/-Lo5pUrN3Q7u1DS6rKof)

### 3️⃣ ใช้ Repository เดิม

ในกรณีที่เพื่อนๆมีงาน source code อยู่ใน **GitHub** หรือใน **Team Foundation Version Control (TFCV)** อยู่ก่อนหน้าแล้ว ก็สามารถเลือกใช้ตัวเลือกนี้เพื่อให้มันลิงค์ไปเอางานจาก repository ที่เลือกไว้ได้เลย

![](/files/-LrBNnQ9L-xt7DLPlAgs)

### 4️⃣ สร้าง.gitignore

สำหรับเพื่อนๆที่อยากให้มันสร้าง **`.gitignore`** ก็สามารถกดสร้างจากเมนูตรงนี้ได้เลย โดยที่มันก็จะมี default gitignore ให้เราเลือกเหมือน GitHub อยู่ละ

![](/files/-LofK9BGobuf4_mPSNs8)

## 🔥 ลองเล่นกันเรย

### Git Clone

สำหรับตัวอย่างตัวนี้ผมจะเล่นจากตัวพื้นฐานสุดๆก่อนเลยละกัน นั่นก็คือผมจะเลือกใช้วิธีที่ 1️⃣ เราจะได้เห็นทุกอย่างแบบคลีนๆเลยนั่นเอง ดังนั้นผมก็จะ **Clone project** ตัวนี้ลงมาที่เครื่องเลยละกัน โดยการ copy URL ที่เขาเตรียมไว้ให้นั่นเอง

```
https://sakuljaru@dev.azure.com/sakuljaru/saladpuk/_git/saladpuk
```

ดังนั้นเราก็เปิด **Command prompt** หรือ **Terminal** ไปยังตำแหน่งที่เราจะทำงานด้วย (ในตัวอย่างของผมคือ d:\temp นะ) แล้วก็สั่ง **Clone** ลงไปโลด

```bash
git clone https://sakuljaru@dev.azure.com/sakuljaru/saladpuk/_git/saladpuk
```

> **ผลลัพท์**\
> Cloning into 'saladpuk'...\
> warning: You appear to have cloned an empty repository.

สิ่งที่ผมได้คือโฟร์เดอร์ว่างๆออกมาครับ (คลีนจริงๆ)

![](/files/-LsXBO6KiNbL76SgMnsu)

### Git Pull

จากตรงนี้ผมจะขอลองสร้าง `.gitignore` ของตัวโปรเจค **Visual Studio** หน่อยละกัน โดยการกลับไปที่ตัวเว็บในตัวเลือกข้อ 4️⃣ โดยเลือก **VisualStudio** ลงไป แล้วกดปุ่ม **`Initialize`** นั่นเอง

![](/files/-LncmUeb0NA-ALwYbDL7)

หลังจากทำเสร็จหน้าตามันจะเปลี่ยนไปนิดหน่อย เพื่อแสดงรายการไฟล์ที่อยู่ใน Repository ของเรานั่นเอง ซึ่งจากจุดนี้ก็จะคล้ายๆกับ GitHub ละ (เดี๋ยวรายละเอียดมาอธิบายต่ออีกที)

![](/files/-LnNIjaaGM9Ldt8Vo9sT)

จากนั้นกลับมาที่ **Command prompt** หรือ **Terminal** ที่เราเปิดค้างไว้ เราก็จะเข้าไปใน directory ที่เราพึ่งได้มา (ในตัวอย่างจะได้ directory ชื่อ **saladpuk** มา) ดังนั้นเราก็จะเข้าไปทำงานกับ directory นั้นด้วยคำสั่ง change directory หรือ **cd** นั่นเอง

```bash
cd saladpuk
```

> **ผลลัพท์**\
> D:\temp\saladpuk>

หลังจากนั้นเราก็จะลอง Pull project ลงมาใหม่ด้วยคำสั่ง **git pull** นั่นเอง

```bash
git pull
```

ถ้าทำเสร็จเราจะเห็นว่าใน folder ของเรามีไฟล์ใหม่เพิ่มเข้ามา 2 ไฟล์ตามที่ใน repository มีแล้วนั่นเอง

![](/files/-LsX9UdBRkBLlqo4u7_C)

### Git Add & Commit

คราวนี้เราก็ลองสร้างโปรเจคด้วยภาษาอะไรก็ได้ตามที่แต่ละคนถนัด ซึ่งในตัวอย่างผมจะสร้าง เว็บไซต์ ด้วย ASP.NET Core MVC ผ่าน Command line ครับ

{% hint style="info" %}
**แนะนำให้อ่าน**\
สำหรับใครที่อยากทำตามตัวอย่าง แต่ยังไม่ได้ติดตั้ง .NET Core ก็สามารถไปอ่านวิธีการติดตั้งได้จากลิงค์นี้เบย <https://youtu.be/57b7SbYwgrE?t=151>
{% endhint %}

ดังนั้นผมก็จะเปิด Command prompt ตัวเดิมกลับมาแล้วใช้คำสั่งด้านล่างนี้ เพื่อสร้างตัวเว็บไซต์นะครับ

```bash
dotnet new mvc
```

พอมันทำงานเสร็จแล้ว เราก็ลองใช้คำสั่งด้านล่าง เพื่อตรวจสอบว่าตัวเว็บของเรามันสร้างเสร็จสมบูรณ์ไม่มีข้อผิดพลาดหรือเปล่าด้วย

```bash
 dotnet build
```

> **ผลลัพท์**\
> Microsoft (R) Build Engine version 16.3.0+0f4c62fea for .NET Core Copyright (C) Microsoft Corporation. All rights reserved.
>
> Restore completed in 34.59 ms for D:\temp\saladpuk\saladpuk.csproj. saladpuk -> D:\temp\saladpuk\bin\Debug\netcoreapp3.0\saladpuk.dll saladpuk -> D:\temp\saladpuk\bin\Debug\netcoreapp3.0\saladpuk.Views.dll
>
> **Build succeeded. 0 Warning(s) 0 Error(s)**
>
> Time Elapsed 00:00:18.61

ถ้าได้ทุกอย่างสมบูรณ์แล้วเราจะพบว่ามันสร้างไฟล์ที่จำเป็นในการสร้างเว็บไซต์ออกมาเต็มไปหมดเบย ตามรูปด้านล่าง

![](/files/-LshcsAfhnkmTRGEZ3fO)

ถัดไปเราก็จะเอาไฟล์เหล่านี้ไป commit เสียก่อนโดยใช้ 2 คำสั่งนี้

```bash
git add .
git commit -am "Created asp.net core MVC"
```

เรียบร้อยแล้ว ตอนนี้ไฟล์ของเราทั้งหมดก็พร้อมที่จะเอากลับไปที่ repository บน Azure DevOps แล้วนั่นเอง

![](/files/-LsfUqyPyvf3GZeZ2Jnd)

### Git Push

ถัดไปเราก็ใช้คำสั่งด้านล่างเพื่อส่งสิ่งที่เราทำขึ้นไปบน Azure DevOps นั่นเอง

```bash
git push
```

ถ้าเรายังไม่เคย Login เอาไว้เลยมันจะขึ้นมาถามให้เรา Login ดังนั้นก็จัดไปด้วย account ที่เราลงทะเบียนไว้ในบนความก่อนหน้านั่นเอง

![](/files/-Lzg8JzR5li4alDtc6cc)

หลังจากที่เรา push งานเสร็จแล้วลองเปิดไปดูที่ Azure DevOps เราก็จะเห็นว่าไฟล์ที่เราทำไว้ทั้งหมดขึ้นมาอยู่บน repository เรียบร้อยแล้วนั่นเองขอรับ

![](/files/-LnH_KBZVvQ8VocER9yo)

{% hint style="success" %}
**ลองเล่นดู**\
ในตัวอย่างนี้ผมตั้งโปรเจ็คเป็น **Public** เอาไว้ ดังนั้นเพื่อนๆก็สามารถเข้ามาดูตัว repository ผ่านลิงค์ตัวนี้ได้เบยครัช <https://dev.azure.com/sakuljaru/_git/saladpuk>
{% endhint %}

จากตรงนี้ก็แสดงว่าเราสามารถใช้งานตัว Repository ของเราแบบง่ายๆได้ละ ดังนั้นถัดไปเราจะไปดูเรื่องการทำ **Build pipeline** เพื่อให้โปรเจคของเรากลายเป็น Automation ให้ได้มากที่สุดนั่นเอง ดังนั้นกดปุ่ม Next ด้านล่างเพื่ออ่านบทความการทำ **Continuous Integration** กันเบย


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://www.saladpuk.com/cloud/azure-devops/repository.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
