Score %0 (0 correct0 incorrect20 unanswered)

Câu 1. Làm thế nào để kiểm tra phiên bản git hiện tại của bạn?

  • git --v
  • git --version
  • git --option
  • git --current

Tham khảo

Câu 2. Lệnh nào cho phép bạn tạo kết nối giữa một kho lưu trữ cục bộ và từ xa?

  • git remote add new
  • git remote add origin
  • git remote new origin
  • git remote origin

Tham khảo

Câu 3. Mô tả những lệnh Git sau đây làm gì với lịch sử commit:

git reset --hard HEAD~5
git merge --squash HEAD@{1}
  • Chúng đặt lại HEAD thành commit thứ năm trong kho lưu trữ, sau đó merge vào nhánh master.
  • HEAD của nhánh hiện tại được đặt lại về lại năm commit trước đó, sau đó các commit trước đó được nén thành một commit duy nhất.
  • Chúng xóa bỏ năm commit cuối cùng.
  • Chúng merge năm commit cuối cùng vào một nhánh mới.

Giải thích:

  • git reset --hard HEAD~5 đặt lại nhánh hiện tại thành commit ngay trước 5 commit cuối cùng (xem man gitrevisions để biết chi tiết về cú pháp này và các lựa chọn khác như HEAD@{2 days ago}). Vì đây là một lệnh reset cứng, nó cũng sẽ ghi đè lên mọi thay đổi trong cây làm việc. Xem man git-reset.
  • git merge --squash HEAD@{1} HEAD@{1} là nơi nhánh được trước lệnh trước đó (một lần nữa, xem man gitrevisions). Lệnh này đặt trạng thái của chỉ mục để như nó sẽ ngay sau một merge từ commit đó. Toàn bộ hoạt động này có thể là một cách để lấy 5 commit từ một nhánh mà bạn bắt đầu một tính năng mới và nén chúng thành một commit duy nhất, một cái có ý nghĩa.

Tham khảo

Câu 4. Dự án hiện tại của bạn có một số nhánh; master, beta, và push-notifications. Bạn vừa hoàn thành tính năng thông báo trong nhánh push-notification và bạn muốn commit nó vào nhánh beta. Làm thế nào bạn có thể làm điều này?

  • Checkout nhánh push-notifications và chạy git merge beta
  • Checkout nhánh master và chạy git merge beta -> push-notifications
  • Xóa nhánh push-notifications và nó sẽ được commit vào nhánh master tự động
  • Checkout nhánh beta và chạy git merge push-notifications

Tham khảo

Câu 5. Câu lệnh sau thực hiện điều gì?

git add -A

  • Tất cả các tập tin mới và đã cập nhật được đặt trong stage
  • Các tập tin được đặt trong thứ tự bảng chữ cái.
  • Tất cả các tập tin mới được đặt trong stage
  • Chỉ có các tập tin đã cập nhật được đặt trong stage

Tham khảo Tham khảo

Câu 6. Câu lệnh sau sẽ in ra Terminal gì?

git remote -v

  • Một danh sách các kho lưu trữ từ xa và URL của chúng
  • Phiên bản git hiện tại bạn đang chạy
  • Một trình soạn thảo nội tuyến để chỉnh sửa kho lưu trữ từ xa
  • 5 phiên bản git cuối cùng bạn đã cài đặt

Tham khảo Tham khảo

Câu 7. Nhìn vào các lệnh sau, mô tả những gì đang xảy ra.

git checkout feature-user-location
git cherry-pick kj2342134sdf090093f0sdgasdf99sdfo992mmmf9921231
  • Commit được đánh dấu để phát hành trên nhánh feature-user-location
  • Một commit được sao chép từ nhánh ban đầu của nó sang nhánh feature-user-location
  • Commit đang được chọn một cách chính xác là HEAD mới của lịch sử commit
  • Một commit được sao chép từ nhánh feature-user-location sang nhánh master
  • Nhánh được chuyển sang nhánh feature-user-location, và commit được chỉ định được áp dụng cho nhánh.

Giải thích:

'git checkout feature-user-location' chuyển đổi sang nhánh 'feature-user-location'. 'git cherry-pick kj2342134sdf090093f0sdgasdf99sdfo992mmmf9921231' áp dụng các thay đổi từ commit cụ thể ('kj2342134sdf090093f0sdgasdf99sdfo992mmmf9921231') vào nhánh hiện tại (feature-user-location). Điều này thực tế là sao chép commit từ nhánh ban đầu của nó sang nhánh feature-user-location. Vì vậy, chuỗi lệnh này là cherry-picking một commit cụ thể vào nhánh feature-user-location.

Câu 8. Lệnh sau làm gì với kho lưu trữ git?

git reset --soft HEAD^

  • Nó xóa tất cả các commit trước đó và đặt lại lịch sử kho về trạng thái ban đầu của nó.
  • Nó đặt lại nhánh làm việc thành commit đầu tiên.
  • Nó giữ HEAD ở commit hiện tại nhưng xóa tất cả các commit trước đó.
  • Nó đặt HEAD thành commit trước đó và để lại các thay đổi từ commit bị hủy trong stage/index.

Tham khảo Tham khảo

Câu 9. Bạn tìm thấy một lỗi trong dự án của mình, nhưng không thể xác định nó được giới thiệu vào lịch sử commit nào. Làm thế nào bạn có thể chẩn đoán vấn đề này?

  • Theo dõi ngược thủ công qua lịch sử commit của bạn.
  • Sử dụng git search -diff để so sánh tất cả các commit trong lịch sử kho lưu trữ của bạn.
  • Chạy git rebase để tìm commit có lỗi.
  • Sử dụng git bisect để so sánh commit có lỗi với một commit sớm mà hoạt động như mong đợi.

Tham khảo Tham khảo

Câu 10. Tại sao bạn sử dụng lệnh sau?

git rebase -i HEAD~10

  • Để chạy một tìm kiếm so sánh của 10 commit cuối cùng để tìm sự khác biệt
  • Để liệt kê 10 commit cuối cùng và chỉnh sửa chúng bằng lệnh squash hoặc fixup
  • Để xóa bỏ 10 commit cuối cùng và đặt lại HEAD
  • Để đặt trước các commit 10 cuối cùng cục bộ

Tham khảo Tham khảo

Câu 11. Tại sao bạn sử dụng pre-receive hook trong kho lưu trữ từ xa của bạn?

  • Bạn sẽ không sử dụng nó, bạn sẽ sử dụng nó trong kho lưu trữ cục bộ
  • Để thực thi một tập lệnh khi một từ xa nhận một đẩy được kích hoạt trước khi bất kỳ refs nào được cập nhật
  • Để kích hoạt một tập lệnh sau khi cập nhật được thực hiện cho kho lưu trữ từ xa
  • Để gỡ lỗi tất cả các tag commit và phiên bản phát hành

Tham khảo Tham khảo

Câu 12. Tùy chọn nào bạn có thể sử dụng để áp dụng cấu hình git trên toàn bộ môi trường git của bạn?

  • --all
  • --master
  • --global
  • --update

Tham khảo Tham khảo

Câu 13. Làm thế nào bạn có thể squash nhiều commit lại với nhau mà không sử dụng git merge --squash?

  • Caching
  • Bạn không thể. git merge --squash là lệnh git duy nhất cho thao tác đó.
  • Rebasing
  • Reflogging

Tham khảo Tham khảo

Câu 14. Nếu bạn sao chép một kho lưu trữ git hiện có, điều gì sẽ xảy ra?

  • Một bản sao mới sẽ ghi đè lên kho lưu trữ trung tâm
  • Một bản sao của kho lưu trữ sẽ được tạo trên máy tính cục bộ của bạn
  • Không có gì, việc sao chép không được hỗ trợ trong git
  • Một bản sao của kho lưu trữ sẽ được tạo trên nền tảng lưu trữ

Tham khảo Tham khảo

Câu 15. Làm thế nào để hiển thị một danh sách các tập tin được thêm hoặc sửa đổi trong một commit cụ thể?

  • Tìm commit trong kho lưu trữ từ xa, vì đó là nơi duy nhất thông tin loại đó được lưu trữ.
  • Sử dụng lệnh diff-tree với hash commit.
  • Chạy git commit --info với hash commit.
  • Truy cập dữ liệu stash commit với git stash.

Tham khảo Tham khảo

Câu 16. Tệp .gitignore này được lập trình để bỏ qua những tệp nào?

#.swift
build/

*.txt
*.metadata
  • Tất cả các tệp với phần mở rộng tệp .swift, .txt hoặc metadata, cũng như toàn bộ thư mục build
  • Chỉ thư mục build
  • Tất cả các tệp trong thư mục build, cũng như các tệp kết thúc bằng .txt hoặc .metadata
  • Chỉ các tệp có phần mở rộng .swift và .txt.

Tham khảo

Một dòng bắt đầu bằng # hoạt động như một chú thích. Vì vậy # .swift không làm gì cả. Xem man gitignore.

Câu 17. Sau khi bạn thực hiện các thay đổi vào kho lưu trữ cục bộ, bạn chạy lệnh sau. Điều này sẽ làm gì?

git commit -a -m "Refactor code base"

  • Không gì, bạn không thể sử dụng nhiều tùy chọn trong cùng một lệnh
  • Thêm tất cả các tệp mới vào khu vực staging
  • Commit tất cả các tệp mới với một thông báo
  • Thêm tất cả các tệp đã sửa đổi vào khu vực staging, sau đó commit chúng với một thông báo

Câu 18. Sau khi bạn kiểm tra trạng thái git của mình, bạn nhận được đầu ra sau đây, hiển thị tệp beta-notes.js trong commit nhưng cũng không được đặt trong stage. Tình huống này có thể xảy ra như thế nào?

Change to be committed:

(use "git reset HEAD <file>..." to unstage)
modified: beta-notes.js
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout --<file>..." to discard changes in working directory)

modified: beta-notes.js
  • Có hai bản sao của beta-notes.js nhưng một bị xóa
  • beta-notes.js đã được đặt trong stage, sau đó sửa đổi sau đó, tạo ra hai phiên bản khác nhau của tệp
  • Hai bản sao của beta-notes.js đã được tạo, nhưng chỉ có một được theo dõi
  • Có hai bản sao được theo dõi của beta-notes.js, nhưng một đã bị xóa khỏi commit

Tham khảo

Câu 19. Tập tin được lưu trữ ở đâu trước khi được commit vào kho lưu trữ cục bộ?

  • Các tập tin đã lưu
  • Tài liệu git
  • Khu vực staging
  • Bộ nhớ đệm git

Tham khảo

Câu 20. Bạn sẽ sử dụng những lệnh nào để buộc ghi đè các tệp cục bộ của bạn bằng nhánh master?

  git pull --all
  git reset --hard origin/master
  git pull -u origin master
  git reset --hard master
  git pull origin master
  git reset --hard origin/myCurrentBranch
  git fetch --all
  git reset --hard origin/master

Ghi chú: - Lệnh pullfetch theo sau bởi merge hoặc rebase (trong trường hợp này, merge). Chúng ta không muốn merge. Merge sẽ là một hành động đối với kho lưu trữ của chúng ta. Chúng ta chỉ muốn ghi đè các tệp cục bộ của mình.