Nếu tất cả các nhà phát triển có quyền truy cập vào repo, bạn không cần phải làm gì đặc biệt. Họ sẽ lấy các thay đổi từ repo, tự thay đổi, cam kết cục bộ và sau đó đẩy lùi vào repo công khai khi họ có việc gì đó.
Mặt khác, nếu bạn có một (hoặc một vài) nhà phát triển chịu trách nhiệm cam kết với repo và những người khác đang cung cấp các bản vá cho những điều này. Yêu cầu mỗi người nhân bản repo vào tài khoản của chính họ và yêu cầu họ gửi yêu cầu kéo khi họ có thay đổi họ muốn vào repo chính.
Bạn cũng có thể tạo các bản sao cụ thể để làm việc trên các tính năng cụ thể nếu bạn muốn. Sử dụng cùng một quy trình công việc với các yêu cầu kéo để có được các thay đổi trong repo chính khi tính năng được hoàn thành.
Nếu bởi "Tất cả các nhà phát triển sẽ có một tài khoản chung" thì bạn có nghĩa là tất cả các nhà phát triển sẽ chia sẻ một tài khoản GitHub và xuất hiện dưới dạng cùng một người chuyển phát trong repo, đó là một ý tưởng tồi. Tạo các tài khoản riêng biệt và thiết lập chúng làm cộng tác viên nếu bạn muốn tất cả chúng có quyền truy cập cam kết.
Đối với các câu hỏi cụ thể của bạn:
Không, sử dụng các nhánh cho các tính năng, sửa lỗi, vv sẽ mất nhiều hơn một cam kết. Nhiều nhà phát triển có thể làm việc trên cùng một chi nhánh.
Có, git xử lý xung đột thực sự tốt, vì vậy không có vấn đề gì khi mọi người làm việc trên cùng một tệp. Không có vấn đề gì ngoại trừ, giải quyết xung đột có thể không phải lúc nào cũng tầm thường nếu có những thay đổi cơ bản đối với một tệp đã được chỉnh sửa bởi nhiều thành viên. Điều này tuy nhiên không có gì không thể vượt qua bằng cách nói chuyện với nhau. Kiểm soát phiên bản không thay thế giao tiếp.
Chúc may mắn!