@manhng

Welcome to my blog!

Authorization

October 14, 2021 09:18

Authorization (edit)

Use JWT Bearer Authorization in Swagger OpenAPI

Use JWT Bearer Authorization in Swagger OpenAPI | FreeCode Spot

Useful ClaimsPrincipal extension methods I use in my projects | Jerrie Pelser's Blog

Basic Authentication in Swagger .NET 5

Basic Authentication in Swagger .NET 5 | by Chathurangi Jayawardana | Oct, 2021 | Medium

Configuring Swagger UI in ASP.NET Core Web API | by Chathurangi Jayawardana | Oct, 2021 | Medium

Migration to ASP.NET Core in .NET 6

.NET 6 ASP.NET Core Migration (github.com)

Maybe it's time to rethink our project structure with .NET 6

Maybe it's time to rethink our project structure with .NET 6 - Tim Deschryver

Vertical Slice Architecture

Vertical Slice Architecture (jimmybogard.com)

The simplicity of ASP.NET Endpoints - Tim Deschryver

https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html

Vertical Slice Architecture (jimmybogard.com)

Build a ToDo list application using .Net 5.0 Web API and Microsoft SQL Server

Build a ToDo list application using .Net 5.0 Web API and Microsoft SQL Server | by Sakhile Msibi | Sep, 2021 | Medium

gtechsltn/ToDoListApp (github.com)

ASP.NET Core 5 and DDD + MediatR + CQRS

July 26, 2021 00:22

ASP.NET Core 5 + MediatR and CQRS/ES with DDD approach (edit)

Theory: ASP.NET Core 5 and CQRS/ES with DDD

What is the CQRS pattern? - Azure Architecture Center | Microsoft Docs

Command Query Responsibility Segregation (CQRS) pattern - IBM Cloud Architecture Center

.NET 5 Source Generators - MediatR - CQRS - OMG! (edument.se)

A simple template for Onion Architecture with .NET 5 - DEV Community

Onion Architecture In ASP.NET Core With CQRS - Detailed (codewithmukesh.com)

Practice with Source Code:

EduardoPires/EquinoxProject: Full ASP.NET Core 5 application with DDD, CQRS and Event Sourcing concepts (github.com)

pereiren/dotnet-template-onion: Onion Architecture with .NET 5/.NET Core and CQRS/Event Sourcing following a DDD approach (github.com)

iammukeshm/OnionArchitecture: The onion architecture, introduced by Jeffrey Palermo, overcomes the issues of the layered architecture with great ease. With Onion Architecture, the game-changer is that the Domain Layer (Entities and Validation Rules that are common to the business case ) is at the Core of the Entire Application. This means higher flexibility and lesser coupling. In this approach, we can see that all the Layers are dependent only on the Core Layers. (github.com)

edumentab/SourceGenerator-MediatR-CQRS: This is the repository for the .NET 5 Source Generators - MediatR - CQRS - OMG! blog post (github.com)

 

Microservices

May 4, 2019 11:17

Microservices (edit)

Google Drive

https://drive.google.com/drive/u/0/folders/1uDAm6JhOebJKG7EBsyfdZUumIxZccKSp

Việc chuyển sang microservices sẽ giúp việc phát triển ứng dụng nhanh hơn và dễ quản lý hơn, yêu cầu ít nhân lực hơn để triển khai nhiều tính năng mới hơn. Các thay đổi có thể được thực hiện và triển khai nhanh hơn và dễ dàng hơn. Ứng dụng được thiết kế như một tập các microservices dễ dàng chạy trên nhiều máy chủ với cân bằng tải (load balancing), giúp dễ dàng xử lý các yêu cầu tăng đột biến và nhu cầu tăng theo thời gian, đồng thời giảm thời gian chết (downtime) do các vấn đề về phần cứng hoặc phần mềm.

Microservices là một phần quan trọng trong các tiến bộ đang thay đổi cách chúng ta làm việc ngày nay. Các kỹ thuật Agile software development, chuyển các ứng dụng lên cloud, văn hóa DevOps, tích hợp liên tục và triển khai liên tục (CI / CD), và việc sử dụng containers đều được sử dụng cùng với microservices để tạo nên cuộc cách mạng hóa trong phát triển và phân phối ứng dụng

Nội dung chính trong phần lý thuyết bao gồm:

  1. Giới thiệu về Microservices – giới thiệu rõ ràng và đơn giản về microservices, từ khái niệm đến thực tế cách các microservices được triển khai và duy trì
  2. API Gateway – API Gateway là điểm đầu vào duy nhất cho toàn bộ ứng dụng dựa trên microservices
  3. Inter-process Communication – Một khi bạn tách một ứng dụng nguyên khối thành từng phần riêng biệt – các microservices – khi đó các service cần nói chuyện với nhau. Và có nhiều lựa chọn giao tiếp giữa các process, điển hình như REST.
  4. Service Discovery – Khi các service đang chạy trong một môi trường động, việc tìm kiếm chúng khi cần không phải là vấn đề đơn giản. Cùng xem cách giải quyết vấn đề đó trong bài này nhé.
  5. Event-Driven Data Management – Thay vì chia sẻ một database toàn cục (hoặc hai) trên một ứng dụng nguyên khối, mỗi microservice sẽ tự biểu diễn và lưu trữ dữ liệu riêng của nó. Điều này mang đến sự linh hoạt tuyệt vời, nhưng cũng có thể gây ra sự phức tạp.
  6. Chiến lược triển khai (Deployment Strategy) cho Microservices – Trong thế giới DevOps, cách bạn làm mọi thứ cũng quan trọng như những gì bạn đặt ra để làm ngay từ đầu. Chris mô tả những patterns chính cho việc triển khai microservices để có thể đưa ra lựa chọn sáng suốt cho bạn
  7. Tái cấu trúc Monolith sang Microservices – Trong một thế giới hoàn hảo, chúng ta sẽ luôn có được thời gian và tiền bạc để thay đổi, cập nhật phần mềm với các công nghệ, công cụ và phương pháp mới nhất và tốt nhất. Nhưng trong bài viết này, Chris sẽ trình bày một chiến lược để làm điều này một cách hợp lý cho việc chuyển đổi từ Monolith sang Microservices. Một … mảnh … nhỏ … tại … một … thời điểm.

A Kubernetes-based microservices application on service mesh

https://github.com/vietnam-devs/coolstore-microservices

https://vietnam-devs.github.io/coolstore-microservices/

Microservice Design Patterns

 

Microservices Patterns IO

https://www.oreilly.com/library/view/monolith-to-microservices/9781492047834/

https://www.oreilly.com/programming/free/files/microservices-antipatterns-and-pitfalls.pdf (eBook)

https://www.kislayverma.com/amp/code-review-checklist-for-distributed-systems (Check List)

https://www.nginx.com/resources/library/monolith-to-microservices/

https://microservices.io/patterns/microservices.html

https://microservices.io/refactoring/

https://github.com/microservices-patterns/ftgo-monolith

You’ll learn several tried and tested patterns and techniques that you can use as you migrate your existing architecture.

  • Ideal for organizations looking to transition to microservices, rather than rebuild
  • Helps companies determine whether to migrate, when to migrate, and where to begin
  • Addresses communication, integration, and the migration of legacy systems
  • Discusses multiple migration patterns and where they apply
  • Provides database migration examples, along with synchronization strategies
  • Explores application decomposition, including several architectural refactoring patterns
  • Delves into details of database decomposition, including the impact of breaking referential and transactional integrity, new failure modes, and more

Dev Mentors

https://github.com/devmentors

https://www.youtube.com/watch?v=6YYB8vv3pZg&list=PLqqD43D6Mqz38LoZEuo_hJAp2NxXskcut&index=1

Building microservices on Azure - https://docs.microsoft.com/en-us/azure/architecture/microservices/

Microservices architecture on Azure Kubernetes Service (AKS) - https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/microservices/aks

Microservices with AKS - https://docs.microsoft.com/en-us/azure/architecture/solution-ideas/articles/microservices-with-aks

Blog Series - Building Microservices

https://callistaenterprise.se/blogg/teknik/2015/05/20/blog-series-building-microservices/

https://edwardthienhoang.wordpress.com/microservices-tu-thiet-ke-den-trien-khai-phan-mo-dau/

Pollyhttps://github.com/App-vNext/Polly

Microservices implementation — Netflix stack

https://medium.com/@tharanganilupul/microservices-implementation-netflix-stack-ba4f4a57a79f

Microservices: The SAGA Pattern for distributed transactions

https://medium.com/@ijayakantha/microservices-the-saga-pattern-for-distributed-transactions-c489d0ac0247

What is dapr?

https://dev.to/arschles/what-is-dapr-526a

Distributed .NET Core (DShop) - Episode 1 [Intro, HTTP requests flow, Infrastructure with Docker]

https://www.youtube.com/watch?v=s4fd3PRlOcw

Distributed .NET Core (DShop) - Episode 2 [CQRS - Write side, Discounts service, MongoDB repository]

https://www.youtube.com/watch?v=yqh0dN4oDTs

Distributed .NET Core (DShop) - Episode 3 [Subscribing RabbitMQ messages, API gateway]

https://www.youtube.com/watch?v=L9UUUPedidg

Distributed .NET Core (DShop) - Episode 4 [Asynchronous microservices integration via events]

https://www.youtube.com/watch?v=KiIetmswEos

Distributed .NET Core (DShop) - Episode 5 [CQRS - Read side, Internal HTTP communication]

https://www.youtube.com/watch?v=o0fMHARUwq0

Distributed .NET Core (DShop) - Episode 6 [Service discovery & Load balancing with Consul + Fabio]

https://www.youtube.com/watch?v=UWfn8Iml2Kc

Distributed .NET Core (DShop) - Episode 7 [Handling asynchronous requests, SignalR, Polly]

https://www.youtube.com/watch?v=rKmL2Onh4hg

Distributed .NET Core (DShop) - Episode 8 [Distributed transactions, 2PC, Event Choreography, Saga]

https://www.youtube.com/watch?v=KI223ULIFoA

Distributed .NET Core (DShop) - Episode 9 [Vault secrets, Seq logging, Jaeger distributed tracing]

https://www.youtube.com/watch?v=8bDHf7yiNKM

Distributed .NET Core (DShop) - Episode 10 [Metrics with AppMetrics, InfluxDB, Prometheus, Grafana]

https://www.youtube.com/watch?v=2OiE-h9sNM4

Distributed .NET Core (DShop) - Episode 11 [Travis CI pipelines, custom MyGet feeds]

https://www.youtube.com/watch?v=sS9yB7m_OsQ

Distributed .NET Core (DShop) - Episode 12 [Docker basics, Docker Hub, docker-compose]

https://www.youtube.com/watch?v=drD0vgKecAc

Distributed .NET Core (DShop) - Episode 13 [Integration tests with xUnit, Web API, Mongo, RabbitMQ]

https://www.youtube.com/watch?v=fDe_Neayo9I

Distributed .NET Core (DShop) - Episode 14 [Consumer-driven contract testing with Pact]

https://www.youtube.com/watch?v=qRCY5BTYQk0

Distributed .NET Core (DShop) - Episode 15 [Orchestration with Portainer, Kubernetes and Rancher]

https://www.youtube.com/watch?v=YxvB6-6FSZE

Building a CI/CD pipeline for a containerized Asp.Net Core 3.0 Web API

https://www.youtube.com/watch?v=nsG3xbIoeJo

ElasticSearch on Windows 10 and .NET Core

https://www.youtube.com/watch?v=Z98Nz7O6vzs

Elasticsearch for Dot Net Developers - Dot Net Sheff - October 2018

https://www.youtube.com/watch?v=N83oReGA6vc

Introduction to Microservices, Docker, and Kubernetes

https://www.youtube.com/watch?v=1xo-0gCVhTU

Building Event-Driven Microservices with Event Sourcing and CQRS - Lidan Hifi

https://www.youtube.com/watch?v=XWTrcBqXi6s

When Microservices Meet Event Sourcing

https://www.youtube.com/watch?v=cISNDnwlSgw

Greg Young — A Decade of DDD, CQRS, Event Sourcing

https://www.youtube.com/watch?v=LDW0QWie21s

https://callistaenterprise.se/blogg/teknik/2015/04/10/building-microservices-with-spring-cloud-and-netflix-oss-part-1/

https://callistaenterprise.se/blogg/teknik/2015/04/15/building-microservices-with-spring-cloud-and-netflix-oss-part-2/

https://callistaenterprise.se/blogg/teknik/2015/04/27/building-microservices-part-3-secure-APIs-with-OAuth/

ASP.NET Core Full Stack

https://fullstackmark.com/post/21/user-authentication-and-identity-with-angular-aspnet-core-and-identityserver

https://ndccopenhagen.com/workshop/identity-access-control-for-modern-applications-and-apis-using-asp-net-core-2/

Data Transfer Objects (DTOs)

https://docs.microsoft.com/en-us/aspnet/web-api/overview/data/using-web-api-with-entity-framework/part-5

ASP.NET MVC 5

https://nhatkyhoctap.blogspot.com/2012/08/aspnet-mvc-co-ban-ve-validation.html

https://nhatkyhoctap.blogspot.com/2013/03/su-dung-dependency-injection-trong.html

https://nhatkyhoctap.blogspot.com/2013/10/aspnet-mvc-authentication-va-authorize.html

ASP.NET Core Identity

https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity?view=aspnetcore-2.2&tabs=visual-studio

Microservices security with OAuth2

https://piotrminkowski.wordpress.com/2017/12/01/part-2-microservices-security-with-oauth2/

Microservices security with Oauth2 (https://piotrminkowski.wordpress.com/2017/02/22/microservices-security-with-oauth2/)

Advanced Microservices Security with OAuth2 (https://piotrminkowski.wordpress.com/2017/03/30/advanced-microservices-security-with-oauth2/)

ASP.NET Membership > Asp.net Simple Membership> ASP.NET Identity

https://coding4food.net/2017/08/30/aspnet-identity-1-introduction/

OAuth và OpenID

https://www.codehub.vn/OpenID-va-OAuth-Khac-Nhau-Nhu-The-Nao

Đăng nhập & Phân quyền

ASP.NET

Free. Cross-platform. Open source. A framework for building web apps and services with .NET and C#.

ASP.NET Identity

The ASP.NET membership system was introduced with ASP.NET 2.0 back in 2005, and since then there have been many changes in the ways web applications typically handle authentication and authorization. ASP.NET Identity is a fresh look at what the membership system should be when you are building modern applications for the web, phone, or tablet.

ASP.NET Membership was designed to solve site membership requirements that were common in 2005, which involved Forms Authentication, and a SQL Server database for user names, passwords, and profile data. Today there is a much broader array of data storage options for web applications, and most developers want to enable their sites to use social identity providers for authentication and authorization functionality. The limitations of ASP.NET Membership's design make this transition difficult:

  • The database schema was designed for SQL Server and you can't change it. You can add profile information, but the additional data is packed into a different table, which makes it difficult to access by any means except through the Profile Provider API.
  • The provider system enables you to change the backing data store, but the system is designed around assumptions appropriate for a relational database. You can write a provider to store membership information in a non-relational storage mechanism, such as Azure Storage Tables, but then you have to work around the relational design by writing much code and a lot of System.NotImplementedExceptionexceptions for methods that don't apply to NoSQL databases.
  • Since the log-in/log-out functionality is based on Forms Authentication, the membership system can't use OWIN. OWIN includes middleware components for authentication, including support for log-ins using external identity providers (like Microsoft Accounts, Facebook, Google, Twitter), and log-ins using organizational accounts from on-premises Active Directory or Azure Active Directory. OWIN also includes support for OAuth 2.0, JWT and CORS.

https://docs.microsoft.com/en-us/aspnet/identity/overview/

ASP.NET Core

ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.

ASP.NET Core Identity

ASP.NET Core Identity is the membership system for building ASP.NET Core web applications, including membership, login, and user data.

Basically, you have two scenarios:

  • Either you're using ASP.NET Core, in which case you'll have to use Microsoft.AspNetCore.Identity.
  • Or you're using an ASP.NET version before ASP.NET Core, and you'll have to use Microsoft.AspNet.Identity.Core.

https://weblogs.asp.net/jeff/no-you-don-t-need-to-use-asp-net-identity

https://docs.microsoft.com/en-us/aspnet/core/security/authentication/cookie?view=aspnetcore-2.2

https://andrewlock.net/introduction-to-authentication-with-asp-net-core/

.NET Developer và một số yêu cầu tuyển dụng

Cơ bản về lập trình OOP

Đây là điều bắt buộc các bạn phải biết trong khi đi phỏng vấn, các bạn không nắm vững cái này thì sẽ có khả năng cao là bị loại vì đây là những kiến thức hết sức căn bản. Để nắm chắc OOP tức là lập trình hướng đối tượng, các bạn cần nắm chắc khái niệm và các tính chất của nó (có 4 tính chất). Mỗi tính chất cac bạn phải hiểu và lấy ví dụ được đồng thời các bạn cũng phải nêu ra được tác dụng của nó.

Ngôn ngữ lập trình C#

Về ngôn ngữ lập trình C#, các bạn không cần thiết phải cái gì cũng biết nhưng một số điểm các bạn nên biết về Interface và Abstract class hay hiểu biết về các collection trong C#.NET. Ngoài ra các bạn cũng cần hiểu về đa luồng, extension methods, delegate, xử lý bất đồng bộ, overriding method, và tổng quan các thư viện hay dùng nhất.

ASP.NET MVC và WebAPI

Về ASP.NET MVC các bạn cần nắm rõ mô hình MVC là gì? Trong ASP.NET MVC có các thành phần gì? Cách truyền dữ liệu từ Controller về View có những cách nào? ViewBag, ViewData, TempData và  Session? Sự khác nhau giữa chúng như thế nào? Khi nào thì dùng cái nào?

Ngoài ra có cơ chế Routing, ASP.NET Identity, Antiforeign, WebAPI, kiến thức về REST và Restful API…

Entity Framework và ADO.NET

Câu hỏi hay hỏi nhất trong khi phỏng vấn .NET Developer là bạn đã làm việc với Entity Framework chưa? Có những cách làm việc nào? Vậy là các bạn phải trả lời được có 3 cách là DB First, Code First và Model First. Vậy là các bạn phải nêu được ưu nhược điểm của cả 3. Thường là DB First và Code First sẽ được hỏi nhiều nhất.

Một trong những câu hỏi hay được hỏi nhất về Entity Framework sẽ là phần Migration nếu bạn trả lời hay dùng Code First. Còn lại DB First thì các bạn cũng sẽ được hỏi những nội dung còn lại ngoài phần migration đó là phải hiểu về Linq to Entity tức là khi nào dữ liệu của bạn được load ra, dùng Iqueryable ra sao? Cách tối ưu hóa câu lệnh LinQ khi truy vấn database rồi cách phân trang bản ghi với LINQ.

Ngoài ra các bạn cần nắm được cách debug từ LINQ bản chất là gen ra câu lệnh SQL để execute trong SQL Server nên các bạn cần nắm được cách thức để debug, tracing và tối ưu hóa nó.

Đôi khi các dự án có làm ADO.NET có thể là call các store procedure trong SQL Server vì giờ không ai viết câu lệnh raw SQL trong code cả

Kỹ năng Unit Test

Đây là kỹ năng viết các đoạn code để kiểm thử ở mức đơn vị đối với các function code ra, trong .NET các bạn thường sử dụng MSUnit có sẵn của Visual Studio hoặc Nunit để viết các đoạn mã kiểm thử. Kỹ năng này không bắt buộc nhưng là điểm cộng của các bạn.

SQL Server

Về SQL Server ngoài việc viết lệnh CRUD thì các bạn còn phải tìm hiểu về Store Procedure, Triggers, Funtions, View đồng thời quan  trọng hơn là cách viết lệnh tối ưu, đánh index để tăng tốc độ cho câu lệnh.

Kỹ năng quản lý source code

Các bạn cần có kỹ năng quản lý source code khi làm việc với các SCM như Git hay SVN, TFS…để giúp làm việc nhanh và hiệu quả hơn.

Một số Design Pattern

Các bạn làm dev có thể không phải sử dụng nhiều vì các SA họ đã áp dụng đối với core của công ty nhưng các bạn nên biết để hiểu và tốt cho việc phát triển sự nghiệp của mình. Hơn nữa lên senior thì phải biết Design Pattern chứ nhỉ.

Principles

Các bạn cũng phải biết một số principle tiêu biểu là SOLID.

Kiến thức Frontend (Javascript, Jquery, Html, CSS, Angular ...)

Các bạn biết các kiến thức này mặc dù không phải là .NET nhưng nếu một công ty họ tuyển Fullstack developer thì những điều này giúp bạn tăng giá trị trong mắt nhà tuyển dụng.

Cách viết code sạch và tối ưu hóa code

Cách viết code sạch và tối ưu này mình rất coi trọng vì nếu các bạn làm junior hay senior thì việc các bạn viết Code nói lên chất lượng thực sự của các bạn. Kỹ năng này bao gồm việc đặt tên biến, tên hàm, class, cách viết code sao cho dễ đọc dễ maintenance …Giúp việc sử dụng lại code dễ dàng hơn nhất là khi các bạn làm một sản phẩm lâu dài thì nó lại càng hữu ích. Đây là một kỹ năng rất cần thiết và rất được các bậc tiền bối coi trọng.

Tóm lại

Là một .NET developer không chỉ biết code tốt, mà cần các kỹ năng liên quan nữa như thế mới thực sự có value. Hơn nữa code  tốt không bằng thái độ tốt, nhiều khi kỹ năng của bạn chưa được như người ta mong muốn nhưng thái độ của bạn khi phỏng vấn cũng làm người ta thấy mình có tiềm năng phát triển và có thể đáp ứng được công việc. Kể cả khi mình giỏi thật thì thái độ cũng phải khiêm tốn và cầu thị vì không ai giỏi tất cả. Cuối cùng là tư duy về sản phẩm, một developer giỏi không phải chỉ giỏi kỹ thuật mà phải hiểu khách hàng cần gì cũng đừng giới hạn mình theo những gì mình nói trong bài viết này mà phải mở rộng hơn nữa? Làm khách hàng hài lòng và làm sao để lợi cho khách hàng, lợi cho người thuê mình tức là lợi cho chính mình.

ban-can-chuan-bi-nhung-gi-truoc-khi-di-phong-van-vi-tri-net-developer-01

CQRS and Event Sourcing

September 16, 2018 23:14

CQRS and Event Sourcing (edit)

https://www.codeguru.com/whitepapers/using-command-query-responsibility-segregation-cqrs.html

SOLID

https://www.codeguru.com/csharp/.net/net_general/netframeworkclasses/solid-design-principles-with-implementation-in-c.html

SQL Server Transaction

https://www.codeguru.com/csharp/.net/net_data/handling-transactions-in-.net-using-transactionscope.html

Excel & Charts

https://www.codeguru.com/csharp/csharp/cs_misc/com/creating-excel-charts-in-c.html

DB Unit Test

https://www.codeguru.com/csharp/.net/net_data/create-sql-server-database-unit-tests-using-visual-studio.html

WinForms TabControl

https://www.codeguru.com/csharp/.net/net_asp/controls/adding-close-buttons-to-tab-pages-with-.net.html

Design time

Git

October 5, 2017 17:50

Git Usage (edit)

Tổng hợp 35 lệnh GIT cơ bản - Deft Blog (shareprogramming.net)

Top 35 Git Commands With Examples - DZone DevOps

Giải thích chi tiết những câu lệnh thường dùng trong Git - Thau Nguyen

Khi bạn muốn bỏ tất cả thay đổi

git checkout -f

git clean -d -f -f

git reset --hard HEAD

Khi bạn gặp tình huống phải lấy lại toàn bộ source của một branch theo một commit xác định

Lý do: Để kiểm tra những thay đổi bạn đã làm ở thời điểm hiện tại so với thời điểm commit xác định ở trên

git checkout -b <new-branch-name> <commit-id-sha>

git checkout -B <new-branch-name> <commit-id-sha>

bitbucket - how to checkout a specific commit from git - Stack Overflow

git checkout 9ce920d
git checkout -B new_branch
git reset 9ce920d

Add Git Ignore to existing Repository | FreeCode Spot

Trong quá trình làm việc, chúng ta có thể rơi vào trường hợp khi đang thực hiện một công việc dang dở nhưng phải tạm dừng và chuyển qua một nhánh mới để thực hiện tiến trình khác. Nếu chúng ta chỉ muốn lưu lại các thay đổi mà chưa commit thì git stash sẽ giúp bạn.

Bạn đang có vài thay đổi và muốn chuyển qua branch khác, bạn chỉ cần chạy git stash hoặc git stash save.

Lúc này bạn đã có thể chuyển sang branch mới.

Để xem lại cách thay đổi đã được lưu lại, bạn dùng lệnh: git stash list.

Apply thay đổi: git stash apply.

Xoá toàn bộ: git stash clear.

Một số định nghĩa thường gặp khi sử dụng Git. (viblo.asia)

Có 2 lợi ích cơ bản và quan trọng của VCS là:

  • Lưu lại toàn bộ lịch sử thay đổi của phiên bản. Giúp lập trình viên theo dõi và khôi phục dễ dàng sau này.
  • Việc chia sẻ code có thể public cho bất kỳ ai, và cũng có thể để chế độ private cho những người có thẩm quyền được truy cập và tải code về. Giúp việc chia sẻ đơn và dễ dàng với Git.
  • Git hỗ trợ làm việc offline.
  • Hoàn toàn miễn phí.

[Git Là Gì] - Các lệnh cơ bản khi làm việc với Git | Vietnix

Git Cheet Sheets

Bạn không thể nào nhớ được hết các lệnh, lúc này bạn nên sử dụng các Git Cheet Sheets để dễ dàng tìm được lệnh Git bạn cần:

1) Tìm kiếm tên người dùng

git shortlog -s --author="John"

git log --pretty="%an"

2) Hiển thị danh sách tất cả người dùng

git shortlog -sn --all

3) Hiển thị log

git log --pretty=oneline

git log --oneline

git log --oneline --author="John"

git log --author="John"

git log --author="John" --oneline

git log:

  • 1afd158ebdd8c2e3282d8f90fda33775acc8477c
  • 122f3796d1420471aa9f7f30c6db64c5a3f07114
  • fd8c0be685c75b14ebe53e522408c23baa8bbbc4

git show 1afd158ebdd8c2e3282d8f90fda33775acc8477c

git show --name-only 1afd158ebdd8c2e3282d8f90fda33775acc8477c

git log --name-only 1afd158ebdd8c2e3282d8f90fda33775acc8477c

git diff --name-only 1afd158ebdd8c2e3282d8f90fda33775acc8477c..HEAD

4) How do I list all of the files in a commit?

git diff-tree --no-commit-id --name-only -r bd61ad98
git show --pretty="" --name-only bd61ad98
git log -p
git show da475798411a3e2769219b4a7655b6821c4d1901

5) How can I list all commits that changed a specific file?

git log --follow -- filename

6) Hiển thị danh sách tệp thay đổi

git log --author="John" --oneline

  • 44669cc
  • 1afd158
  • ...

git show --name-only 44669cc

  • test.cs
  • text.txt

git-tips/tips: Most commonly used git tips and tricks. (github.com) (HAY HAY HAY HAY HAY)

Syncing a Fork of a GitHub Repository with Upstream | Blog (ardalis.com) (HAY HAY HAY HAY HAY)

Basic Syntax | Markdown Guide

Advanced Git - @manhng (git)

Git Common Line Interface - @manhng (git log, git show, gitk --follow)

Git Commands - @manhng (git)

Git - @manhng (git)

7 Git Commands That Saved My Life Atleast Once | by Lucas Tagliani Aguiar | Aug, 2021 | Better Programming

13 Git Commands Every Developer Must Know (zepel.io)

15 Git Hacks to Save your Life as a Developer | by GitShip | Medium

Life-saving git commands - DEV Community (HAY HAY HAY)

4 Useful Git Commands That Save Time | Codica (HAY HAY HAY)

List of life saving git commands – Tugrul ASLAN

Git stash

git stash save

git stash list

git stash apply

Show all developers and comments of the last N commits

git shortlog -sne

git shortlog --summary --numbered --email

git log

git log -1

git log -5

git show --summary

git show --summary -1

git show --summary -5

git log -n 5 --author=ducnn

git log --oneline -n 5 --author=ducnn

Showing all commits

git rev-list --remotes

git rev-list --all --remotes --pretty

git rev-list --all --pretty=oneline

git log --name-status --oneline

git log origin/master..HEAD

git diff --name-only <SHA, tag start> <SHA, tag end>

git diff --name-only HEAD HEAD~3

git diff origin/master..HEAD

Showing committed files that your will push to the remote

git diff --stat --patch origin dev

Chuyển toàn bộ thay đổi sang nhánh mới

git switch -c <new-branch>
git checkout -b <new-branch>
git add <files>
git commit -m "<Brief description of this commit>"

Bỏ thay đổi đang có

git checkout -f

git clean -d -f -f

git reset --hard
git reset --hard HEAD

Bỏ thay đổi

1) Don't remove staged files

git reset --soft HEAD^

2) Remove staged files

git reset HEAD^

If you want to undo commit and lose all the changes, you can use

git reset --hard HEAD^

Xóa nhánh (delete branch)

// delete branch locally
git branch -d localBranchName

// delete branch remotely
git push origin --delete remoteBranchName

Clone chỉ một branch

git clone git@gitlab.company.vn:adc/company-api.git --branch dev --single-branch company-api

Git - @manhng

Advanced Git - @manhng

Cách phân nhánh và chia việc trong nhóm với Git – Ehkoo

Nhàn hơn cùng git stash! (viblo.asia)

Kết luận

Chúng ta có thể tóm tắt bài này lại như sau:

  • Dự án được chia thành nhiều nhánh, bao gồm master, dev và có thể có staging
  • Các nhánh tính năng được chia ra từ dev, phát triển độc lập, được rebase trước khi merge lại vào dev
  • Rebase có thể thay đổi một chút history, hoặc squash lại thành một commit duy nhất
  • Merge có thể là fast-forward hoặc non-fast-forward
  • dev sẽ được merge vào master mỗi khi triển khai. Trường hợp có staging, dev sẽ được merge vào staging, và staging sẽ được merge vào master.
  • Các nhánh hotfix sẽ được chia ra từ master, sau đó merge --no-ff vào master  dev

Dĩ nhiên bài viết này chỉ mang tính tham khảo, vì mỗi team mỗi công ty sẽ có những cách làm riêng.

Khi bạn muốn bỏ tất cả thay đổi

git checkout -f

git clean -d -f -f

git reset --hard HEAD

Khi bạn gặp tình huống phải lấy lại toàn bộ source của một branch theo một commit xác định

Lý do: Để kiểm tra những thay đổi bạn đã làm ở thời điểm hiện tại so với thời điểm commit xác định ở trên

git checkout -b <new-branch-name> <commit-id-sha>

git checkout -B <new-branch-name> <commit-id-sha>

bitbucket - how to checkout a specific commit from git - Stack Overflow

git checkout 9ce920d
git checkout -B new_branch
git reset 9ce920d

Git - Học nghiêm túc một lần (Phần 1)

https://viblo.asia/p/git-hoc-nghiem-tuc-mot-lan-phan-1-OeVKBo6JZkW

Git - Học nghiêm túc một lần (Phần 2)

https://giaphiep.com/blog/git-hoc-nghiem-tuc-mot-lan-phan-2-25505

Git - Những câu lệnh hữu dụng

https://viblo.asia/p/tap-hop-nhung-cau-lenh-git-huu-dung-dWrvwWr2vw38

Git - Những câu lệnh cơ bản

https://jusfunny.wordpress.com/2016/11/09/cac-lenh-git-co-ban-ma-toi-hay-dung/

Hủy lệnh merge

git merge --abort

git reset --hard HEAD

Các câu lệnh thường dùng

git checkout master
git pull origin master
git merge test
git push origin master

Getting Started

http://rogerdudler.github.io/git-guide/

Chuyển sang nhánh develop và xóa những thay đổi ở nhánh hiện tại

Giả sử bạn đang ở nhánh my_branch và muốn chuyển sang nhánh develop đồng hời không muốn giữ thay đổi ở nhánh hiện tại

git checkout -f develop

Undo a Git merge | Reverting a Git Merge

git reset --hard HEAD~1
git reset --hard ORIG_HEAD
git revert HEAD

Remove file

Use git rm:

git rm file1.txt
git commit -m "remove file1.txt"

But if you want to remove the file only from the Git repository and not remove it from the filesystem, use:

git rm --cached file1.txt
git commit -m "remove file1.txt"

And to push changes to remote repo

git push origin branch_name

Remove directory from git and local

You could checkout 'master' with both directories;

git rm -r one-of-the-directories
git commit -m "Remove duplicated directory"
git push origin <your-git-branch> (typically 'master', but not always)

Remove directory from git but NOT local

As mentioned in the comments, what you usually want to do is remove this directory from git but not delete it entirely from the filesystem (local)

In that case use:

git rm -r --cached myFolder

Getting Started (continue)

git init

git config --list

git config --global core.editor emacs

git config --global merge.tool vimdiff

git config user.name
git config user.email

git config user.name "John Doe"
git config user.email johndoe@example.com

git config --global user.name "John Doe"
git config --global user.email johndoe@example.com

git clone "https://manhnv@git.company.vn/crm/dev.git"

Determine the URL that a local git repository was originally cloned from

git config --get remote.origin.url
git remote show origin

git add -all
git commit -am "<message>"
git push origin master

git reset --hard

git clean -f

git clean -n
Would remove untracked_file

git clean -f
Removing untracked_file

git clean -dn
Would remove untracked_dir/

git clean -df
Removing untracked_dir/

Tham khảohttp://techkids.vn/blog/cac-cau-lenh-git-khong-khong-biet/ 

git checkout develop

git merge ONGAME-134

comment "ONGAME-134…

press I for INSERT

press ESC for exit INSERT

:qw

ghi và thoát

:q!

lưu lại nội dung như cũ

press ENTER

1/ Một số lệnh git sử dụng với Git Bash

Bạn commit gặp lỗi và muốn xem chuyện gì đang xảy ra?

git log --oneline -10 

git reset --soft c66f836

git status

git log --oneline -10

Bạn muốn xem lệnh commit gần nhất?

git show

Bạn muốn xem có bao nhiêu branch và đang ở branch nào?

git branch

Bạn muốn merge code từ nhánh develop vào nhánh master?

git checkout master

git merge develop

git status

git push origin master

2/ Một số lỗi thường gặp với Git

Gặp lỗi git không commit được vì có nhiều tài khoản git trên cùng 1 máy

Cmd > control userpasswords2

Advanced > Manage Passwords > Web Credentials > Remove all credentials related with git, github...

Categories

Recent posts