Có một vài câu hỏi trong bài này, đây là quan điểm của tôi về một số câu trả lời:
Trước tiên, để "nhân bản" một trước cam kết, bạn có thể làm một cái gì đó như thế này:
git clone REPO_URL
git checkout HEAD~1 // checks out the last commit's first parent
Sử dụng ~1
để truy cập vào phụ huynh đầu tiên của cam kết cuối cùng, và tăng số để có được cha mẹ của cha mẹ và như vậy. More on tilde and caret notation.
Hai lệnh ở trên sẽ đưa bạn vào trạng thái HEAD tách rời, có thể hoặc có thể không quan trọng dựa trên ngữ cảnh. Ví dụ, nó không quan trọng nếu bạn đang nhân bản như một phần của các kịch bản triển khai của bạn và tất cả những gì bạn quan tâm là truy cập vào một cam kết trước đó (nói, như là một phần của một chiến lược rollback).
Nếu bạn cần phải bắt đầu làm việc từ thời điểm này trong lịch sử, bạn có thể chạy
git checkout -b NEW_BRANCH_NAME
Một git GUI tốt? Đối với tôi SourceTree là tốt nhất.
Chi nhánh là gì? Nói cách riêng của tôi, một chi nhánh chỉ là một cách rất dễ dàng để xoay vòng. Giả sử bạn đang làm việc trên một chi nhánh, master
và bạn muốn thử nghiệm. Dễ dàng, chỉ cần git checkout -b experiment
và bạn nhanh chóng ở nơi an toàn để phá vỡ nội dung.
Điều gì khác biệt giữa git và svn?
git là distribute version control system. svn thì không. Ngoài ra, phân nhánh (được đề cập ở trên) là dễ dàng hơn trong git.
Để gắn thẻ, tôi không biết nếu có "Một cách thực sự" (có bao giờ?) Nhưng chỉ cần khám phá lệnh git tag
. Một điều tuyệt vời về git là cách dễ dàng sao chép một bản sao của repo của bạn trên máy tính cục bộ của bạn (hoặc bất cứ nơi nào) và làm bất cứ điều gì bạn muốn và xem điều gì xảy ra. Nếu bạn làm hỏng thứ gì đó, chỉ cần xóa thư mục. Vì vậy, bạn có thể thử nghiệm với git tag
trong một số thư mục thử nghiệm và xem những gì bạn thích.
Thực ra, câu hỏi SO cuối cùng "trong đó hai câu hỏi hay hơn: git hoặc SVN" đã bị xóa. Tôi đã sao chép nó vào một câu trả lời cũ hơn: http://stackoverflow.com/questions/161541/svn-vs-git/2549128#2549128 – VonC
để tạm dừng xung quanh trong một cam kết cũ mà không cần thực hiện một chi nhánh mới: 'git checkout SHA1' và sau đó nếu bạn quyết định giữ nó xung quanh: 'git checkout -b aNewBranch' – rymo