Git cho người mới bắt đầu: Hướng dẫn thực tế dứt khoát


854

Ok, sau khi xem bài đăng này của PJ Hyett , tôi đã quyết định bỏ qua đến cuối và đi với Git .

Vì vậy, những gì tôi cần là một hướng dẫn thực tế cho người mới bắt đầu với Git. "Người mới bắt đầu" được định nghĩa là người biết cách xử lý trình biên dịch của họ, hiểu ở một mức độ nào đó Makefile là gì và đã chạm vào kiểm soát nguồn mà không hiểu rõ về nó.

"Thực tế" được định nghĩa là người này không muốn hiểu chi tiết về những gì Git đang làm trong nền và thậm chí không quan tâm (hoặc biết) rằng nó được phân phối. Câu trả lời của bạn có thể gợi ý về các khả năng, nhưng hãy cố gắng nhắm đến người mới bắt đầu muốn lưu trữ 'chính' trên 'máy chủ' được sao lưu và bảo mật và coi kho lưu trữ cục bộ của họ chỉ là tài nguyên của 'khách hàng'.

Vì thế:

Cài đặt / Cài đặt

Làm việc với mã

Gắn thẻ, phân nhánh, phát hành, đường cơ sở

Khác

  • Mô tả và liên kết đến một GUI, plugin IDE tốt, v.v ... làm cho Git trở thành tài nguyên dòng không phải lệnh, nhưng vui lòng liệt kê các hạn chế cũng như tốt của nó.
    • msysgit - Nền tảng chéo, bao gồm Git
    • gitk - Trình xem lịch sử đa nền tảng, bao gồm Git
    • gitnub - Mac OS X
    • gitx - Trình xem lịch sử Mac OS X
    • smartgit - Nền tảng chéo, thương mại, beta
    • tig - giao diện điều khiển GUI cho Linux
    • qgit - GUI cho Windows, Linux
    • Tiện ích mở rộng Git - gói dành cho Windows, bao gồm GUI thân thiện
  • Bất kỳ nhiệm vụ phổ biến khác mà một người mới bắt đầu nên biết?
  • Làm cách nào để làm việc hiệu quả với kho lưu trữ lật đổ được đặt làm nguồn kiểm soát nguồn của tôi?

Tài liệu tham khảo cho người mới bắt đầu Git khác

Đi sâu vào Git

Thỉnh thoảng tôi sẽ đi qua các mục và 'dọn dẹp' chúng để chúng có giao diện / cảm nhận nhất quán và dễ dàng quét danh sách - thoải mái làm theo một tiêu đề "đơn giản - giải thích ngắn gọn - danh sách hướng dẫn - gotchas và thông tin thêm "mẫu. Tôi cũng sẽ liên kết đến các mục từ danh sách dấu đầu dòng ở trên để dễ dàng tìm thấy chúng sau này.

Câu trả lời:


118

Làm thế nào để bạn tạo một dự án / kho lưu trữ mới?

Một kho lưu trữ git chỉ đơn giản là một thư mục chứa một .gitthư mục đặc biệt .

Điều này khác với các hệ thống kiểm soát phiên bản "tập trung" (như lật đổ), trong đó một "kho" được lưu trữ trên một máy chủ từ xa, mà bạn checkoutvào một thư mục "bản sao làm việc". Với git, bản sao làm việc của bạn kho lưu trữ.

Chỉ cần chạy git inittrong thư mục chứa các tệp bạn muốn theo dõi.

Ví dụ,

cd ~/code/project001/
git init

Điều này tạo ra một .gitthư mục (ẩn) trong thư mục hiện tại.

Để tạo một dự án mới, hãy chạy git initvới một đối số bổ sung (tên của thư mục sẽ được tạo):

git init project002

(This is equivalent to: mkdir project002 && cd project002 && git init)

Để kiểm tra xem đường dẫn hiện tại có nằm trong kho git hay không, chỉ cần chạy git status- nếu đó không phải là kho lưu trữ, nó sẽ báo cáo "fatal: Not a git repository"

Bạn cũng có thể liệt kê .gitthư mục và kiểm tra xem nó có chứa các tệp / thư mục tương tự như sau không:

$ ls .git
HEAD         config       hooks/       objects/
branches/    description  info/        refs/

Nếu vì bất kỳ lý do gì bạn muốn "khử" một kho lưu trữ (bạn muốn ngừng sử dụng git để theo dõi dự án đó). Đơn giản chỉ cần loại bỏ .gitthư mục ở mức cơ sở của kho lưu trữ.

cd ~/code/project001/
rm -rf .git/

Thận trọng: Điều này sẽ phá hủy tất cả lịch sử sửa đổi, tất cả các thẻ của bạn, mọi thứ git đã làm. Nó sẽ không chạm vào các tệp "hiện tại" (các tệp bạn hiện có thể thấy), nhưng các thay đổi trước đó, các tệp đã bị xóa sẽ không thể phục hồi!


3
Git làm cho các đối tượng của nó chỉ đọc, vì vậy bạn sẽ muốn rm -rf .gitxóa sạch cơ sở dữ liệu của git.
Josh Lee

Thông thường, một tệp .gitignore sẽ cần được tạo trong quá trình sử dụng thông thường để chỉ định các tệp / cây bỏ qua trong phiên bản, do đó, để hoàn thành phần cuối cùng về "khử", bên cạnh việc xóa .git, bạn cũng cần phải xóa. tập tin gitignore. :)
Monoman

Làm thế nào về kho lưu trữ trần? Chúng bằng cách nào đó "tập trung" và tôi nghĩ chúng là một điều tốt cho nhiều dự án cần một số loại tập trung (ví dụ: các dự án được phát triển bởi nhiều người)
peoro

WRT đang chạy git statusđể đảm bảo bạn nằm trong kho lưu trữ: điều này có một gotcha: nếu bạn có biến môi trường $ GIT_DIR được đặt trong trình bao hiện tại của bạn, git sẽ bỏ qua vị trí hiện tại của bạn và sử dụng kho lưu trữ tại $ GIT_DIR. Tôi nên biết, tôi đã mất một giờ để điều đó ngày hôm qua.
sanmiguel

110

GUI cho git


GUI Git

Kèm theo git - Chạy git guitừ dòng lệnh và Windows msysgit cài đặt sẽ thêm nó vào menu Bắt đầu.

GUI Git có thể thực hiện phần lớn những gì bạn cần làm với git. Bao gồm thay đổi giai đoạn, cấu hình git và kho lưu trữ, thay đổi đẩy, tạo / kiểm tra / xóa chi nhánh, hợp nhất và nhiều thứ khác.

Một trong những tính năng yêu thích của tôi là phím tắt "giai đoạn" và "giai đoạn hunk" trong menu chuột phải, cho phép bạn cam kết các phần cụ thể của tệp. Bạn có thể đạt được điều tương tự thông quagit add -i , nhưng tôi thấy nó dễ sử dụng hơn.

Nó không phải là ứng dụng đẹp nhất, nhưng nó hoạt động trên hầu hết các nền tảng (dựa trên Tcl / Tk)

Ảnh chụp màn hình | một screencast


GitK

Cũng bao gồm với git. Nó là một trình xem lịch sử git và cho phép bạn hình dung lịch sử của kho lưu trữ (bao gồm các nhánh, khi chúng được tạo và hợp nhất). Bạn có thể xem và tìm kiếm cam kết.

Kết hợp độc đáo với git-gui.


Gitnub

Ứng dụng Mac OS X. Chủ yếu là tương đương git log, nhưng có một số tích hợp với github (như "Chế độ xem mạng").

Trông đẹp và phù hợp với Mac OS X. Bạn có thể tìm kiếm các kho lưu trữ. Điểm mấu chốt lớn nhất của Gitnub là nó cho thấy lịch sử theo kiểu tuyến tính (một nhánh tại một thời điểm) - nó không hình dung được sự phân nhánh và hợp nhất, có thể quan trọng với git, mặc dù đây là một cải tiến có kế hoạch.

Tải về liên kết, thay đổi nhật ký và ảnh chụp màn hình | kho git


GitX

Dự định là một "bản sao gitk cho OS X".

Nó có thể hình dung lịch sử phân nhánh phi tuyến tính, thực hiện các cam kết, xem và xác nhận tìm kiếm và nó có một số tính năng hay khác như có thể "Xem nhanh" bất kỳ tệp nào trong bất kỳ sửa đổi nào (nhấn phím cách trong chế độ xem danh sách tệp), xuất bất kỳ tệp nào (thông qua kéo và thả).

Nó được tích hợp tốt hơn nhiều vào OS X so với git-gui/ gitk, và nhanh và ổn định ngay cả với các kho lưu trữ đặc biệt lớn.

Các pieter kho git ban đầu đã không được cập nhật gần đây (hơn một năm tại thời điểm viết). Một chi nhánh được duy trì tích cực hơn có sẵn tại Brotherbard / gitx - nó thêm "sidebar, fetch, pull, push, add remote, merge, cherry-pick, rebase, clone, clone to"

Tải xuống | Ảnh chụp màn hình | kho git | ngã ba anh em | ngã ba laullon


SmartGit

Từ trang chủ:

SmartGit là một giao diện người dùng cho hệ thống kiểm soát phiên bản phân tán Git và chạy trên Windows, Mac OS X và Linux. SmartGit dành cho các nhà phát triển thích giao diện người dùng đồ họa hơn máy khách dòng lệnh, thậm chí còn hiệu quả hơn với Git - DVCS mạnh nhất hiện nay.

Bạn có thể tải nó từ trang web của họ .

Tải xuống


RùaGit

Phiên bản TortoiseSVN Git cho người dùng Windows.

Nó đang chuyển rùaSVN sang TortoiseGit Bản phát hành mới nhất 1.2.1.0 Bản phát hành này có thể hoàn thành nhiệm vụ thông thường, như cam kết, hiển thị nhật ký, hai phiên bản khác nhau, tạo nhánh và thẻ, Tạo bản vá, v.v. Xem ReleaseNotes để biết chi tiết. Chào mừng bạn đến đóng góp dự án này.

Tải xuống


Quốc gia

QGit là trình xem GUI git được xây dựng trên Qt / C ++.

Với qgit, bạn sẽ có thể duyệt lịch sử sửa đổi, xem nội dung vá và thay đổi tệp, theo đồ họa theo các nhánh phát triển khác nhau.

Tải xuống


gitg

gitg là trình xem kho lưu trữ git nhắm mục tiêu gtk + / Gnome. Một trong những mục tiêu chính của nó là cung cấp trải nghiệm người dùng thống nhất hơn cho các mặt trận git trên nhiều máy tính để bàn. Nó không phải là viết một ứng dụng đa nền tảng, mà bằng sự cộng tác chặt chẽ với các máy khách tương tự cho các hệ điều hành khác (như GitX cho OS X).

Đặc trưng

  • Duyệt lịch sử sửa đổi.
  • Xử lý các kho lưu trữ lớn (tải kho lưu trữ linux, hơn 17000 phiên bản, dưới 1 giây).
  • Cam kết thay đổi.
  • Giai đoạn / unstage cá nhân hunk.
  • Thay đổi nhanh.
  • Hiển thị màu khác nhau của những thay đổi trong phiên bản.
  • Duyệt cây cho một sửa đổi nhất định.
  • Xuất các bộ phận của cây của một phiên bản nhất định.
  • Cung cấp bất kỳ refspec nào mà một lệnh như 'git log' có thể hiểu để xây dựng lịch sử.
  • Hiển thị và chuyển đổi giữa các chi nhánh trong chế độ xem lịch sử.

Tải xuống: bản phát hành hoặc nguồn


Gitbox

Gitbox là giao diện đồ họa Mac OS X cho hệ thống kiểm soát phiên bản Git. Trong một cửa sổ duy nhất bạn thấy các nhánh, lịch sử và trạng thái thư mục làm việc.

Hoạt động hàng ngày rất dễ dàng: thay đổi giai đoạn và giai đoạn với một hộp kiểm. Cam kết, kéo, hợp nhất và đẩy chỉ với một cú nhấp chuột. Bấm đúp vào một thay đổi để hiển thị khác với FileMerge.app.

Tải xuống


Lòng thương

Trang web Gity không có nhiều thông tin, nhưng từ các ảnh chụp màn hình trên đó có vẻ như là một tính năng phong phú của OS X git gui.

Tải xuống hoặc nguồn


Meld

Meld là một công cụ khác biệt và hợp nhất trực quan. Bạn có thể so sánh hai hoặc ba tệp và chỉnh sửa chúng tại chỗ (khác biệt cập nhật động). Bạn có thể so sánh hai hoặc ba thư mục và khởi chạy so sánh tệp. Bạn có thể duyệt và xem một bản sao làm việc từ các hệ thống kiểm soát phiên bản phổ biến như CVS, Subversion, Bazaar-ng và Mercurial [ và Git ].

Tải xuống


Katana

GUI Git cho OSX của Steve Dekorte.

Nhìn thoáng qua, hãy xem những nhánh từ xa nào có thay đổi để kéo và repos cục bộ có thay đổi để đẩy. Các git op của add, commit, đẩy, pull, tag và reset được hỗ trợ cũng như các khác biệt trực quan và duyệt trực quan của độ khó của dự án làm nổi bật các thay đổi và bổ sung cục bộ.

Miễn phí cho 1 kho lưu trữ, $ 25 để biết thêm.

Tải xuống


Mầm (trước đây là GitMac)

Tập trung vào làm cho Git dễ sử dụng. Có giao diện người dùng Cacao (giống như mac), duyệt kho lưu trữ nhanh, nhân bản, đẩy / kéo, phân nhánh / hợp nhất, khác biệt trực quan, các nhánh từ xa, dễ dàng truy cập vào Terminal và hơn thế nữa.

Bằng cách làm cho các hành động Git được sử dụng phổ biến nhất trở nên trực quan và dễ thực hiện, Sprout (trước đây là GitMac) làm cho Git thân thiện với người dùng. Tương thích với hầu hết các quy trình công việc Git, Sprout rất phù hợp cho các nhà thiết kế và nhà phát triển, hợp tác nhóm và cả người dùng mới và người dùng mới.

Tải xuống | Trang mạng


Tòa tháp

GUI Git giàu tính năng cho Mac OSX. Dùng thử miễn phí 30 ngày, $ 59USD cho giấy phép một người dùng.

Tải xuống | Trang mạng


TRỨNG

EGit là nhà cung cấp Nhóm Eclipse cho hệ thống kiểm soát phiên bản Git. Git là một SCM phân tán, có nghĩa là mọi nhà phát triển đều có một bản sao đầy đủ của tất cả lịch sử của mỗi lần sửa đổi mã, thực hiện các truy vấn đối với lịch sử rất nhanh và linh hoạt.

Dự án EGit đang triển khai công cụ Eclipse trên cơ sở triển khai Git Java của JGit.

Tải xuống | Trang mạng


Tiện ích mở rộng Git

Nguồn mở cho Windows - cài đặt mọi thứ bạn cần để làm việc với Git trong một gói duy nhất, dễ sử dụng.

Tiện ích mở rộng Git là bộ công cụ giúp làm việc với Git trên Windows trực quan hơn. Phần mở rộng shell sẽ tích hợp trong Windows Explorer và trình bày một menu ngữ cảnh trên các tệp và thư mục. Ngoài ra còn có một plugin Visual Studio để sử dụng git từ Visual Studio.

Tải xuống

Cảm ơn rất nhiều vì dbr đã xây dựng các công cụ git gui.


NguồnTree

SourceTree là một máy khách Mac miễn phí cho Git, Mercurial và SVN. Được xây dựng bởi Atlassian, những người đứng sau BitBucket, nó dường như hoạt động tốt như nhau với bất kỳ hệ thống VC nào, cho phép bạn thành thạo một công cụ duy nhất để sử dụng cho tất cả các dự án của mình, tuy nhiên chúng được điều khiển theo phiên bản. Tính năng đóng gói và MIỄN PHÍ.

Expert-Ready & Feature-đóng gói cho cả người dùng mới và người dùng nâng cao:

Xem lại các thay đổi đi và đến. Cherry-pick giữa các chi nhánh. Xử lý bản vá, rebase, stash / kệ và nhiều hơn nữa.

Tải xuống | Trang mạng



2
Bạn có một số câu trả lời hay (đặc biệt là gitcasts và câu trả lời đẩy / kéo), nhưng tôi có thể khuyên bạn nên chia nó thành một câu trả lời riêng không? Câu hỏi yêu cầu bạn "đừng cố kẹt một loạt thông tin vào một câu trả lời"!
dbr

3
Có lẽ bạn nên thêm TortoiseGit code.google.com/p/tortoisegit vào danh sách của bạn, ví gitters Windows ...
Kret

1
Gity ( macendeavor.com/gity ) là một tùy chọn, nhưng vẫn đang được phát triển (OS X)
Dave DeLong

2
Tower ("Ứng dụng khách Git mạnh nhất cho Mac") là một ứng dụng khách mới tuyệt đẹp dành cho Git.
rubiii

59

Chà, mặc dù thực tế là bạn đã yêu cầu chúng tôi không "đơn giản" liên kết với các tài nguyên khác, nhưng thật ngu ngốc khi đã tồn tại một tài nguyên được cộng đồng phát triển (và đang phát triển) thực sự khá tốt: Sách cộng đồng Git . Nghiêm túc mà nói, hơn 20 câu hỏi này trong một câu hỏi sẽ là bất cứ điều gì nhưng ngắn gọn và nhất quán. Sách cộng đồng Git có sẵn dưới dạng cả HTML và PDF và trả lời nhiều câu hỏi của bạn với các câu trả lời rõ ràng, được định dạng tốt và được đánh giá ngang hàng và ở định dạng cho phép bạn chuyển thẳng sang vấn đề của mình.

Than ôi, nếu bài viết của tôi thực sự làm bạn khó chịu thì tôi sẽ xóa nó. Chỉ cần nói như vậy.


2
Nếu bạn không sử dụng git vì đó là DVCS, tại sao lại phải sử dụng git? Câu hỏi này là ngớ ngẩn và chuyển hướng các nguồn lực có thể được dành cho những thứ khác để đáp ứng một mục tiêu đáng ngờ.
Randal Schwartz

56

Cách cấu hình nó để bỏ qua các tập tin:

Khả năng để git bỏ qua các tệp mà bạn không muốn nó theo dõi là rất hữu ích.

Để bỏ qua một tập tin hoặc tập hợp các tập tin bạn cung cấp một mẫu. Cú pháp mẫu cho git khá đơn giản, nhưng mạnh mẽ. Nó được áp dụng cho cả ba tệp khác nhau mà tôi sẽ đề cập dưới đây.

  • Một dòng trống bỏ qua không có tập tin, nó thường được sử dụng như một dấu phân cách.
  • Dòng nhìn chằm chằm với # phục vụ như là ý kiến.
  • Cái ! tiền tố là tùy chọn và sẽ phủ định mô hình. Bất kỳ mẫu phủ định nào phù hợp sẽ ghi đè lên các mẫu ưu tiên thấp hơn.
  • Hỗ trợ các biểu thức nâng cao và thẻ hoang dã
    • Ví dụ: Mẫu: *. [Oa] sẽ bỏ qua tất cả các tệp trong kho lưu trữ kết thúc bằng .o hoặc .a (tệp đối tượng và tệp lưu trữ)
  • Nếu một mẫu có một thư mục kết thúc bằng một dấu gạch chéo sẽ chỉ khớp với thư mục này và các đường dẫn bên dưới nó. Điều này không bao gồm các tập tin thông thường và các liên kết tượng trưng từ trận đấu.
  • Một dấu gạch chéo hàng đầu sẽ khớp với tất cả các tệp trong tên đường dẫn đó.
    • Ví dụ: Mẫu /*.c sẽ khớp với tệp foo.c nhưng không khớp với thanh / awesome.c

Ví dụ tuyệt vời từ trang người đàn ông gitignore (5) :

$ git status
[...]
# Untracked files:
[...]
#       Documentation/foo.html
#       Documentation/gitignore.html
#       file.o
#       lib.a
#       src/internal.o
[...]
$ cat .git/info/exclude
  # ignore objects and archives, anywhere in the tree.
  *.[oa]
$ cat Documentation/.gitignore
# ignore generated html files,
*.html
# except foo.html which is maintained by hand
!foo.html
$ git status
[...]
# Untracked files:
[...]
#       Documentation/foo.html
[...]

Nói chung, có ba cách khác nhau để bỏ qua các tệp không bị theo dõi.

1) Bỏ qua cho tất cả người dùng của kho lưu trữ:

Thêm một tệp có tên .gitignore vào thư mục gốc của bản sao làm việc của bạn.

Chỉnh sửa .gitignore để phù hợp với tùy chọn của bạn mà tập tin nào nên / không nên bỏ qua.

git add .gitignore 

và cam kết khi bạn hoàn thành.

2) Bỏ qua chỉ cho bản sao của kho lưu trữ của bạn:

Thêm / Chỉnh sửa tệp $ GIT_DIR / thông tin / loại trừ trong bản sao làm việc của bạn, với các mẫu ưa thích của bạn.

Ví dụ: Bản sao làm việc của tôi là ~ / src / project1 vì vậy tôi sẽ chỉnh sửa ~ / src / project1 / .git / thông tin / loại trừ

Bạn đã hoàn tất!

3) Bỏ qua trong mọi tình huống, trên hệ thống của bạn:

Các mẫu bỏ qua toàn cầu cho hệ thống của bạn có thể đi vào một tệp có tên những gì bạn muốn.

Cá nhân tôi được gọi là ~ / .gitglobalignore

Sau đó tôi có thể cho git biết tệp này bằng cách chỉnh sửa tệp ~ / .gitconfig của mình với dòng sau:

core.excludesfile = ~/.gitglobalignore

Bạn đã hoàn tất!

Tôi thấy trang man gitignore là tài nguyên tốt nhất để biết thêm thông tin.


Ai đó, xin vui lòng, thêm một chi tiết nhỏ nhưng quan trọng cho bài viết này? Điều này chỉ hoạt động cho các tập tin đã không được theo dõi bởi git. Để 'unrack' tập tin nhưng để nó trong hệ thống tập tin, bạn cần 'git rm - tên tập tin'. Cảm ơn!
Nikita Rybak

Tôi chỉ muốn lưu ý rằng việc thêm dòng core.excludesfile không phù hợp với tôi. Tôi đã phải [git config --global core.excludesfile ~ / .gitglobalignore] để làm cho nó hoạt động.
Khu vực mã hóa

Hiện tại có một dự án trên Github có tên là gitignore có các tệp gitignore cho nhiều ngôn ngữ và môi trường phát triển: github.com/github/gitignore
Ryan Lundy

47

Làm thế nào để bạn 'gắn thẻ' một bộ sửa đổi cụ thể

Làm thế nào để bạn 'đánh dấu' 'thẻ' hoặc 'phát hành' một bộ sửa đổi cụ thể cho một bộ tệp cụ thể để bạn luôn có thể lấy cái đó sau?

Sử dụng git taglệnh.

Để chỉ "gắn thẻ" bản sửa đổi hiện tại, bạn sẽ chỉ cần chạy ..

git tag -a thetagname
git tag -a 0.1
git tag -a 2.6.1-rc1 -m 'Released on 01/02/03'

Để liệt kê các thẻ hiện tại, chỉ cần chạy git tagkhông có đối số hoặc -l(chữ thường L):

$ git tag -a thetagname # and enter a message, or use -m 'My tag annotation'
$ git tag -l
thetagname

Để xóa thẻ, bạn sử dụng -dcờ:

$ git tag -d thetagname 
Deleted tag 'thetagname'
$ git tag
[no output]

Để gắn thẻ một cam kết cụ thể (trước đó), bạn chỉ cần thực hiện ..

git tag [tag name] [revision SHA1 hash]

Ví dụ:

git tag 1.1.1 81b15a68c6c3e71f72e766931df4e6499990385b

Lưu ý: theo mặc định, git tạo thẻ "nhẹ" (về cơ bản là tham chiếu đến một phiên bản cụ thể). Cách "đúng" là sử dụng -acờ. Điều này sẽ khởi chạy trình soạn thảo của bạn yêu cầu thông báo thẻ (giống hệt với yêu cầu thông báo cam kết, bạn cũng có thể sử dụng -mcờ để cung cấp thông báo thẻ trên dòng lệnh). Sử dụng thẻ có chú thích sẽ tạo một đối tượng có ID, ngày, thẻ (tác giả) và tùy chọn chữ ký GPG (sử dụng -sthẻ). Để biết thêm thông tin về điều này, xem bài viết này

git tag mytagwithmsg -a -m 'This is a tag, with message'

Và để liệt kê các thẻ có chú thích, hãy sử dụng -n1cờ để hiển thị 1 dòng của mỗi thông báo thẻ ( -n245để hiển thị 245 dòng đầu tiên của mỗi chú thích, v.v.):

$ git tag -l -n1
mytagwithmsg    This is a tag, with message

Để biết thêm thông tin, hãy xem Trang hướng dẫn sử dụng thẻ git (1)


Thẻ git không tạo thẻ theo mặc định, chỉ tham chiếu nhẹ. Bạn phải sử dụng -a hoặc -s để tạo một đối tượng thẻ (những thứ như mô tả sẽ sử dụng): rockstarprogrammer.org/post/2008/oct/16/ trộm
Dustin

À, thật thú vị. Cảm ơn, tôi đã cập nhật câu trả lời để phản ánh điều này
dbr

Và làm thế nào để bạn gắn thẻ một phiên bản đã cam kết trước đó? (xin lỗi vì nó quá dài nên tôi đã lướt qua, tôi có bỏ lỡ điều gì không?)
hasen

hasen j: Đã thêm thông tin để trả lời, về cơ bảngit tag tagname revision_SHA1
dbr

1
Để đẩy thẻ vào repo từ xa, hãy thêm --tags khi sử dụng git đẩy (thông tin từ khu vực trợ giúp của github).
Héctor Ramos

46

Ví dụ quy trình làm việc với GIT.

Git cực kỳ linh hoạt và thích nghi tốt với bất kỳ quy trình công việc nào, nhưng việc không thực thi một quy trình công việc cụ thể có thể có tác động tiêu cực khiến bạn khó hiểu những gì bạn có thể làm với git ngoài quy trình "sao lưu" tuyến tính và ví dụ như cách phân nhánh hữu ích .

Bài đăng trên blog này giải thích độc đáo một quy trình làm việc rất đơn giản nhưng hiệu quả, thực sự dễ dàng để thiết lập bằng git.

trích dẫn từ bài đăng trên blog: Chúng tôi coi nguồn gốc / chủ là nhánh chính trong đó mã nguồn của HEAD luôn phản ánh trạng thái sẵn sàng sản xuất:

Quy trình công việc đã trở nên đủ phổ biến để thực hiện một dự án thực hiện quy trình công việc này: git-Flow

Minh họa tuyệt vời về quy trình làm việc đơn giản, nơi bạn thực hiện tất cả các thay đổi của mình trong quá trình phát triển và chỉ được đẩy lên thành thạo khi mã ở trạng thái sản xuất:

quy trình làm việc đơn giản

Bây giờ hãy giả sử bạn muốn làm việc trên một tính năng mới hoặc tái cấu trúc một mô-đun. Bạn có thể tạo một nhánh mới, cái mà chúng ta có thể gọi là nhánh "tính năng", thứ gì đó sẽ mất một thời gian và có thể phá vỡ một số mã. Khi tính năng của bạn "đủ ổn định" và muốn đưa nó "gần hơn" vào sản xuất, bạn hợp nhất nhánh tính năng của mình để phát triển. Khi tất cả các lỗi được sắp xếp sau khi hợp nhất và mã của bạn vượt qua tất cả các bài kiểm tra vững chắc, bạn đẩy các thay đổi của mình thành chủ.

Trong suốt quá trình này, bạn tìm thấy một lỗi bảo mật khủng khiếp, phải được sửa ngay lập tức. Bạn có thể có một nhánh được gọi là hotfix, giúp thay đổi được đưa trở lại sản xuất nhanh hơn so với nhánh "phát triển" thông thường.

Ở đây bạn có một minh họa về quy trình làm việc của tính năng / hotfix / phát triển / sản xuất này như thế nào (được giải thích rõ trong bài đăng trên blog và tôi nhắc lại, bài đăng trên blog giải thích toàn bộ quá trình chi tiết hơn và tốt hơn nhiều so với tôi .

Ví dụ quy trình công việc Git


Tôi là một người mới chơi git, và sơ đồ này làm cho nó khó hiểu hơn đối với tôi.
Finnw

Cái nào, cái đầu tiên, hay cái cuối cùng? Tôi thực sự không muốn làm cho bài viết quá dài, nhưng tôi sẽ thêm một lời giải thích nhỏ về cả hai sơ đồ sau.
tro gỗ

Đọc toàn bộ bài viết. Tôi cũng bị nhầm lẫn bởi sơ đồ này, nhưng bài viết trên blog được viết rất tốt nvie.com/posts/a-successful-git-branching-model
Felipe Sabino

bây giờ có tốt hơn không tôi chỉ muốn tìm hiểu tổng quan sơ bộ, không đăng lại toàn bộ bài đăng trên blog ở đây :)
ashwoods

39

Đây là bản sao bài đăng của PJ Hyett, vì nó không còn nữa:

Git không khó

Ngày 23 tháng 11 năm 2008

Khi chúng tôi nói với mọi người lý do tại sao họ nên sử dụng Git trên Subversion, dòng tiếp theo là, Git thực hiện Subversion tốt hơn Subversion, nhưng nó còn làm được nhiều hơn thế.

Nhiều hơn nữa, nhiều người khác, bao gồm nhiều thứ khiến Git thực sự tỏa sáng, nhưng nó có thể gây choáng ngợp cho những người đến từ các SCM khác như Subversion.

Điều đó nói rằng, không có gì ngăn bạn sử dụng Git giống như bạn sử dụng Subversion trong khi bạn đang thực hiện chuyển đổi.

Giả sử bạn đã cài đặt phần mềm cần thiết và có một kho lưu trữ từ xa ở đâu đó, đây là cách bạn sẽ lấy mã và đẩy các thay đổi của bạn trở lại với Subversion:

$ svn checkout svn://foo.googlecode.com/svn/trunk foo
# make your changes
$ svn commit -m "my first commit"

Và bạn sẽ làm điều đó như thế nào trong Git:

$ git clone git@github.com:pjhyett/foo.git
# make your changes
$ git commit -a -m "my first commit"
$ git push

Thêm một lệnh để làm cho nó xảy ra trong Git. Lệnh bổ sung đó có ý nghĩa lớn, nhưng với mục đích của bài đăng này, đó là tất cả những gì chúng ta đang nói đến, một lệnh bổ sung.

Hãy xem, nó thực sự không khó.

Cập nhật: Tôi cũng xin lỗi vì không đề cập đến việc tương đương với việc cập nhật bản sao cục bộ của bạn trong Subversion so với Git svn updategit pull, tương ứng. Chỉ có một lệnh trong cả hai trường hợp.


Trong ví dụ đầu tiên tôi thấy bạn đang kiểm tra một đường dẫn tương đối ./foonhưng không có đường dẫn nào được chỉ định cho bản sao mặc dù, bạn đang kiểm tra ở đâu?
JD Isaacks

33

Cách cài đặt Git

Trên Windows:

Cài đặt msysgit

Có một số lượt tải xuống:

  • Git: Sử dụng cái này trừ khi bạn đặc biệt cần một trong các tùy chọn khác bên dưới.
  • PortableGit: Sử dụng cái này nếu bạn muốn chạy Git trên PC mà không cần cài đặt trên PC đó (ví dụ: chạy Git từ ổ USB)
  • msysGit: Sử dụng cái này nếu bạn muốn phát triển Git. Nếu bạn chỉ muốn sử dụng Git cho mã nguồn của mình , nhưng không muốn chỉnh sửa Git mã nguồn , bạn không cần điều này.

Điều này cũng cài đặt shell bash Cygwin, vì vậy bạn có thể sử dụng gitshell đẹp hơn (cmd.exe) và cũng bao gồm git-gui (có thể truy cập quagit gui lệnh hoặcStart > All Programs > Git menu)

Mac OS X

Sử dụng trình cài đặt git-osx hoặc bạn cũng có thể cài đặt từ nguồn

Thông qua một người quản lý gói

Cài đặt gitbằng trình quản lý gói gốc của bạn. Ví dụ: trên Debian (hoặc Ubuntu):

apt-get install git-core

Hoặc trên Mac OS X, qua MacPorts :

sudo port install git-core+bash_completion+doc

Sôi hoặc fink:

fink install git

Giáo dục hoặc Homebrew :

brew install git

Trên các bản phân phối dựa trên Red Hat, chẳng hạn như Fedora:

yum install git

Trong Cygwin, gói Git có thể được tìm thấy trong phần "phát"

Từ nguồn (Mac OS X / Linux / BSD / v.v.)

Trong Mac OS X, nếu bạn đã cài đặt Công cụ dành cho nhà phát triển, bạn có thể biên dịch Git từ nguồn rất dễ dàng. Tải xuống phiên bản Git mới nhất dưới dạng .tar.bzhoặc .tar.gztừ http://git-scm.com/ và giải nén nó (nhấp đúp chuột vào Finder)

Trên Linux / BSD / v.v. nó sẽ giống nhau Ví dụ: trong Debian (và Ubuntu), bạn cần cài đặt build-essentialgói quaapt .

Sau đó, trong Terminal, cdđến nơi bạn giải nén các tệp (Chạy cd ~/Downloads/git*/sẽ hoạt động), rồi chạy ..

./configure && make && sudo make install

Điều này sẽ cài đặt Git vào vị trí mặc định ( /usr/local- vì vậy gitsẽ ở trong/usr/local/bin/git )

Nó sẽ nhắc bạn nhập mật khẩu của bạn (for sudo), điều này là để nó có thể ghi vào /usr/local/thư mục, chỉ có thể được truy cập bởi người dùng "root" vì vậy sudo là bắt buộc!

Nếu bạn phải cài đặt nó ở một nơi riêng biệt (vì vậy các tệp của Git không bị trộn lẫn với các công cụ khác), hãy sử dụng --prefixvới lệnh configure:

./configure --prefix=/usr/local/gitpath
make
sudo make install

Điều này sẽ cài đặt gitnhị phân vào /usr/local/bin/gitpath/bin/git- vì vậy bạn không cần phải nhập nó mỗi lần, bạn nên thêm vào $PATHbằng cách thêm dòng sau vào ~/.profile:

export PATH="${PATH}:/usr/local/bin/gitpath/bin/"

Nếu bạn không có quyền truy cập sudo, bạn có thể sử dụng --prefix=/Users/myusername/binvà cài đặt vào thư mục chính của mình. Nhớ thêm ~/bin/vào$PATH

Kịch bản x-git-update-to-phiên bản mới nhất tự động hóa rất nhiều điều này:

Kịch bản này cập nhật bản sao cục bộ của git repo (localy at ~/work/track/git), sau đó định cấu hình, cài đặt (tại /usr/local/git- git describe) và cập nhật/usr/local/git liên kết tượng trưng.

Bằng cách này, tôi có thể có /usr/local/git/bintrong tôiPATH và tôi luôn luôn sử dụng phiên bản mới nhất.

Phiên bản mới nhất của tập lệnh này cũng cài đặt các trang man. Bạn cần phải chỉnh của bạn MANPATHđể bao gồm các /usr/local/git/share/manthư mục.


5
Trên Fedora : yum install git. Đối với GUI chạy yum install git-gui.
Cristian Ciupitu

2
Trên máy Mac,sudo port install git-core+bash_completion+doc
Singletname

Tôi đã tải xuống fink cho mac, nhưng chạy cài đặt fink git cho tôi lỗi: "Không thành công: không tìm thấy gói nào cho đặc tả 'git'!"
quano

@quano Nó sẽ ở đó, pdb.finkproject.org/pdb/package.php/git - kiểm tra Fink được cập nhật đúng cách - Tôi nghĩ rằng việc chạy fink self-updatesẽ giúp
dbr

32

Đặt lại Git

Giả sử bạn thực hiện thao tác kéo, hợp nhất mã đó vào mã của mình và quyết định bạn không thích nó. Sử dụng git-log hoặc tig và tìm hàm băm của bất cứ nơi nào bạn muốn quay lại (có thể là cam kết cuối cùng của bạn trước khi kéo / hợp nhất) sao chép hàm băm và thực hiện:

# Revert to a previous commit by hash:
git-reset --hard <hash>

Thay vì băm, bạn có thể sử dụng HEAD ^ làm lối tắt cho lần xác nhận trước.

# Revert to previous commit:
git-reset --hard HEAD^

4
Đây là tương tự như hoàn nguyên trong hầu hết các hệ thống kiểm soát phiên bản tập trung khác.
Jeremy Wall

"$ git-reset --hard Head ^" nên được viết tắt cho cha mẹ của người đứng đầu (tức là trạng thái trước đó trước lần cam kết cuối cùng).
Ben Trang

6
chỉ là một người già đơn giản git resetnên vô tình tạo ragit add
slf

31

Làm thế nào để bạn thiết lập một kho lưu trữ nhóm chia sẻ?

Làm thế nào để thiết lập một kho lưu trữ bình thường được mô tả ở đây - nhưng làm thế nào để bạn thiết lập một kho lưu trữ nhóm mà mọi người có thể kéo và đẩy từ và đến?

Sử dụng hệ thống tệp NFS được chia sẻ

Giả sử nhóm của bạn đã có thành viên nhóm dùng chung có thể được sử dụng.

mkdir /your/share/folder/project.git
cd /your/share/folder/project.git
newgrp yourteamgroup # if necessary
git init --bare --shared

Để bắt đầu sử dụng kho lưu trữ này, điều dễ nhất là bắt đầu từ kho lưu trữ cục bộ mà bạn đã và đang sử dụng:

cd your/local/workspace/project
git remote add origin /your/share/folder/project.git
git push origin master

Những người khác bây giờ có thể sao chép này và bắt đầu làm việc:

cd your/local/workspace
git clone /your/share/folder/project.git

Sử dụng SSH

Thiết lập tài khoản người dùng trên máy chủ mục tiêu. Cho dù bạn sử dụng tài khoản không có mật khẩu, tài khoản có mật khẩu hay sử dụng authorized_keysthực sự phụ thuộc vào mức độ bảo mật được yêu cầu của bạn. Hãy xem Cấu hình Git qua SSH để biết thêm thông tin.

Nếu tất cả các nhà phát triển sử dụng cùng một tài khoản để truy cập kho lưu trữ được chia sẻ này, bạn không cần sử dụng --sharedtùy chọn như trên.

Sau khi nhập kho lưu trữ theo cách tương tự như trên, bạn thực hiện thao tác đẩy ban đầu như thế này:

cd your/local/workspace/project
git remote add origin user@server:/path/to/project.git
git push origin master

Thấy sự tương đồng với những điều trên? Điều duy nhất có thể xảy ra ngoài ra là SSH yêu cầu mật khẩu nếu tài khoản có mật khẩu. Nếu bạn nhận được lời nhắc này trên tài khoản không có mật khẩu, máy chủ SSH có thể đã bị vô hiệu hóaPermitEmptyPasswords .

Nhân bản bây giờ trông như thế này:

cd your/local/workspace
git clone user@server:/path/to/project.git

ngoài NFS - làm thế nào để bạn thiết lập máy chủ git để hoạt động trên ssh? - Giống như một ví dụ quy mô nhỏ của github.com?
Dafydd Rees

Có cần thiết phải có một bit dính nhóm trên các thư mục có liên quan không, hay git có quan tâm đến tất cả điều đó không? Nếu sau này, làm thế nào để git biết nhóm nào sẽ sử dụng trên các quyền cho các tệp Unix?
Norman Ramsey

Tôi đã thêm một phần trên SSH theo yêu cầu. Bit dính là cần thiết nếu không phải tất cả các nhà phát triển có nhóm chia sẻ là nhóm chính của họ. Nếu bất kỳ người dùng nào có một nhóm chính khác, họ sẽ mặc định tạo các tệp có quyền sở hữu nhóm này. Điều này xảy ra dưới git và do đó không phải lúc nào cũng nằm trong tầm kiểm soát của git.
Asgeir S. Nilsen

nhóm git repo-config core. SharedRep repository có ích gì?
systempuntoout

28

git statuslà bạn của bạn, sử dụng nó thường xuyên. Tốt để trả lời các câu hỏi như:

  • Lệnh đó đã làm gì?
  • Tôi đang ở chi nhánh nào?
  • Những thay đổi nào tôi sắp cam kết, và tôi đã quên điều gì chưa?
  • Có phải tôi đang ở giữa một cái gì đó lần trước khi tôi làm việc trong dự án này (ngày, tuần, hoặc có lẽ vài tháng trước)?

Không giống như, nói svn status, git statuschạy ngay lập tức ngay cả trên các dự án lớn. Tôi thường thấy yên tâm khi học git để sử dụng nó thường xuyên, để đảm bảo mô hình tinh thần của tôi về những gì đang diễn ra là chính xác. Bây giờ tôi chủ yếu chỉ sử dụng nó để nhắc nhở bản thân về những gì tôi đã thay đổi kể từ lần cam kết cuối cùng.

Rõ ràng, nó hữu ích hơn nhiều nếu .gitignore của bạn được cấu hình hoàn toàn.


27

Cam kết thay đổi

Khi bạn đã chỉnh sửa một tệp, bạn cần phải cam kết thay đổi của mình với git. Khi bạn thực hiện lệnh này, nó sẽ yêu cầu một thông điệp cam kết - đó chỉ là một đoạn văn bản đơn giản cho mọi người biết những gì bạn đã thay đổi.

$ git commit source/main.c

Sẽ cam kết tệp main.c trong thư mục ./source/

$ git commit -a # the -a flag pulls in all modified files

sẽ cam kết tất cả các tệp đã thay đổi (nhưng không phải các tệp mới, những tệp này cần được thêm vào chỉ mục bằng git-add). Nếu bạn chỉ muốn cam kết một số tệp nhất định thì trước tiên bạn cần phải xử lý chúng bằng git-add và sau đó xác nhận mà không có cờ -a.

Cam kết chỉ thay đổi kho lưu trữ cục bộ của bạn mặc dù không phải là kho lưu trữ từ xa. Nếu bạn muốn gửi các cam kết đến kho lưu trữ từ xa thì bạn sẽ cần phải thực hiện một cú đẩy.

$ git push <remote> <branch> # push new commits to the <branch> on the <remote> repository

Đối với ai đó đến từ CVS hoặc SVN, đây là một thay đổi vì cam kết với kho lưu trữ trung tâm hiện yêu cầu hai bước.


27

Làm thế nào để bạn chi nhánh?

Nhánh mặc định trong kho git được gọi master.

Để tạo một nhánh mới sử dụng

git branch <branch-name>

Để xem danh sách tất cả các nhánh trong loại kho lưu trữ hiện tại

git branch

Nếu bạn muốn chuyển sang chi nhánh khác, bạn có thể sử dụng

git checkout <branch-name>

Để tạo một nhánh mới và chuyển sang nó trong một bước

git checkout -b <branch-name>

Để xóa một nhánh, sử dụng

git branch -d <branch-name>

Để tạo một nhánh với các thay đổi từ nhánh hiện tại, hãy làm

git stash
git stash branch <branch-name>

11
bạn nên đề cập đến phím tắt git checkout -b <tên chi nhánh> để tạo một nhánh và chuyển sang nó trong một bước. Đây có lẽ là trường hợp sử dụng phổ biến nhất cho người dùng git mới bắt đầu và thậm chí là nâng cao.
Tường Jeremy

21

Lấy mã mới nhất

$ git pull <remote> <branch> # fetches the code and merges it into 
                             # your working directory
$ git fetch <remote> <branch> # fetches the code but does not merge
                              # it into your working directory

$ git pull --tag <remote> <branch> # same as above but fetch tags as well
$ git fetch --tag <remote> <branch> # you get the idea

Điều đó khá nhiều bao gồm mọi trường hợp để có được bản sao mã mới nhất từ ​​kho lưu trữ từ xa.


20

Các Pro Git cuốn sách miễn phí chắc chắn là yêu thích của tôi, đặc biệt là cho người mới bắt đầu.


18

Git Magic là tất cả những gì bạn cần. Đảm bảo hoản tiền!


14
Thở dài, tôi muốn lấy lại tiền của mình. Phần mềm Buggy (msysGit) với hướng dẫn chưa hoàn chỉnh (GitMagic) == giờ làm việc, hầu như không miễn phí
Samoody

16

Làm thế nào để bạn hợp nhất các chi nhánh?

Nếu bạn muốn kết hợp một chi nhánh (ví dụ masterđể release), đảm bảo chi nhánh hiện tại của bạn là chi nhánh mục tiêu mà bạn muốn hợp nhất vào (sử dụng git branchhoặc git statusđể xem chi nhánh hiện tại của bạn).

Sau đó sử dụng

git merge master

(Ở đâu master là tên của chi nhánh bạn muốn hợp nhất với chi nhánh hiện tại).

Nếu có bất kỳ xung đột, bạn có thể sử dụng

git diff

để xem các xung đột đang chờ xử lý, bạn phải giải quyết.


2
Có git mergetool thực hiện khác biệt ba chiều với công cụ yêu thích của bạn (gvimdiff, kdiff3 hoặc một số thứ khác)
Dave Vogt



12

Cách theo dõi các chi nhánh từ xa

Giả sử có một kho lưu trữ từ xa mà bạn đã sao chép kho lưu trữ cục bộ của mình từ đó và cũng giả sử rằng có một nhánh có tên 'some_branch' trên kho lưu trữ từ xa đó, đây là cách theo dõi cục bộ:

# list remote branches
git branch -r

# start tracking one remote branch
git branch --track some_branch origin/some_branch

# change to the branch locally
git checkout some_branch

# make changes and commit them locally
....

# push your changes to the remote repository:
git push

Có vẻ như trong git 1.7, các nhánh từ xa sẽ tự động được theo dõi khi bạn tạo một nhánh cục bộ từ chúng. Tôi không biết phiên bản này bắt đầu hành vi nào.
Doppelganger

Trên thực tế, bạn có thể liệt kê tất cả các chi nhánh từ xa bằng cách sử dụnggit remote show REMOTENAME
Felipe Sabino


10

Làm thế nào để bạn so sánh hai phiên bản của một tập tin, hoặc tập tin hiện tại của bạn và một phiên bản trước đó?

Lệnh so sánh là git diff .

Để so sánh 2 phiên bản của một tập tin:

$ git diff <commit1> <commit2> <file_name>

Điều đó khác với commit1 so với commit2; nếu bạn thay đổi thứ tự thì các tệp sẽ bị lệch theo cách khác, đây có thể không phải là điều bạn mong đợi ...

Để so sánh tệp dàn dựng hiện tại với kho lưu trữ:

$ git diff --staged <file_name>

Để so sánh tệp chưa được xử lý hiện tại với kho lưu trữ:

$ git diff <file_name>

9

Tại sao lại làm thế nào khác? Có những cái thực sự tốt trên mạng, như hướng dẫn git hoàn hảo để bắt đầu. Nó có các liên kết tốt bao gồm cả cuốn sách git mà một người có thể đóng góp (được lưu trữ trên git hub) và hoàn hảo cho nhiệm vụ tập thể này.

Trên stackoverflow, tôi thực sự muốn thấy các thủ thuật yêu thích của bạn!

Của tôi, mà tôi chỉ phát hiện ra gần đây, được git stashgiải thích ở đây , cho phép bạn lưu công việc hiện tại của mình và đi đến một chi nhánh khác

EDIT: như bài viết trước, nếu bạn thực sự thích định dạng stackoverlow với các bài đăng dưới dạng wiki tôi sẽ xóa câu trả lời này


Không, đừng xóa. Câu trả lời của bạn là hoàn toàn hợp lệ - và hướng người khác đến các tài nguyên tốt không phải là điều xấu. Tôi cũng muốn các hoạt động phổ biến nhất được liệt kê ở đây, nhưng đó là một chút công việc và tôi không mong đợi những người khác làm điều đó. Tôi sẽ làm điều đó theo thời gian khi tôi học và đây sẽ là tài liệu tham khảo cho tôi.
Adam Davis

9

Giao diện người dùng giao diện điều khiển - Tig

Cài đặt:

apt-get install tig

Sử dụng

Trong khi bên trong một repo git, nhập 'tig', để xem nhật ký tương tác, nhấn 'enter' trên bất kỳ nhật ký nào để xem thêm thông tin về nó. h để được giúp đỡ, trong đó liệt kê các chức năng cơ bản.

Câu đố

"Tig" là "Git" ngược.


Không phải là "UI UI", vì "console" và "đồ họa" có một chút .. mâu thuẫn?
dbr

nó có nhiều đồ họa hơn git-log ... tuy nhiên, nó có khả năng tương tác cao hơn rất nhiều ...
Dean Thay vào

8

Làm thế nào tôi có thể tạo một nhánh trên một kho lưu trữ từ xa?

Giả sử rằng bạn đã nhân bản kho lưu trữ từ xa của mình từ một số kho lưu trữ từ xa duy nhất.

# create a new branch locally
git branch name_of_branch
git checkout name_of_branch
# edit/add/remove files    
# ... 
# Commit your changes locally
git add fileName
git commit -m Message
# push changes and new branch to remote repository:
git push origin name_of_branch:name_of_branch

11
tại sao name_of_branch: name_of_branch?
Seun Osewa

Vâng, tại sao? Theo như tôi biết bạn chỉ cần git push origin name_of_branchvà chi nhánh sẽ được tạo trong điều khiển từ xa của bạn
Felipe Sabino

đầu tiên name_of_branchlà tên cục bộ, thứ hai là tên nhánh từ xa (mong muốn), vì vậy nó có thể là local_name_of_branch:remote_name_of_branchnếu bạn muốn các tên khác nhau. Nếu bạn muốn chúng giống nhau, bạn vẫn phải chỉ định nó như thế này b / c git không đưa ra giả định rằng bạn muốn tên giống nhau trừ khi bạn nói như vậy (cũng có những phương pháp khác để làm như vậy, tuy nhiên)
johnny

8

Tôi đã bắt đầu với hướng dẫn chính thức của Git . Tôi nghĩ rằng nó đủ thiết thực cho người mới bắt đầu (tôi đã và vẫn là người mới bắt đầu, theo định nghĩa của bạn! Tôi hầu như không nắm bắt được các makefiles, tôi chỉ chơi một chút với Apache Subversion, v.v.).


8

Làm cách nào để xóa một nhánh trên một kho lưu trữ từ xa?

Thực hiện đẩy trong điều khiển từ xa của bạn bằng cách sử dụng :trước tên của chi nhánh

git push origin :mybranchname

origintên của điều khiển từ xa của bạn và mybranchnametên của chi nhánh sắp bị xóa

http://help.github.com/remotes/


7

Thay đổi kéo và kéo

Trong một cách đơn giản, chỉ cần làm git pushgit pull. Các thay đổi được hợp nhất và nếu có xung đột, git sẽ cho bạn biết và bạn có thể giải quyết bằng tay.

Khi bạn lần đầu tiên đẩy đến một kho lưu trữ từ xa, bạn cần phải làm một git push origin master(master là nhánh chính). Từ đó về sau bạn chỉ cần làm git push.

Đẩy thẻ với git push --tags.


7

Kiểm tra mã

Trước tiên, hãy chuyển đến một thư mục trống, sử dụng "git init" để biến nó thành một kho lưu trữ, sau đó sao chép repo từ xa vào riêng của bạn.

git clone user@host.com:/dir/to/repo

Bất cứ nơi nào bạn ban đầu nhân bản là nơi "git pull" sẽ kéo theo mặc định.


7
Tôi nghĩ rằng clone thực hiện bước init để bạn loại bỏ nhu cầu chạy init trước. git init thực sự chủ yếu là để tạo kho lưu trữ đầu tiên hoặc cho các cấu hình đặc biệt với nhiều điều khiển từ xa mà bạn muốn thiết lập khác với bản sao tiêu chuẩn.
Jeremy Wall

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.