отчет1
.docxМинистерство образования Республики Беларусь
УО «Полоцкий государственный университет»
Факультет информационных технологий
Кафедра технологий программирования
ОТЧЕТ
О прохождении курса по дисциплине
«Программирование для Интернет»
на тему «Основы Git»
Выполнил студент группы
Проверил
Полоцк
1. Система контроля версий позволяет:
Организовать совместную работу нескольких разработчиков
Фиксировать версию программы на различных этапах разработки, тем самым создавая историю.
Отслеживать изменения между разными версиями программы.
2. В случае, когда программистов несколько, система контроля версий выполняет функцию:
Слияния изменений и разрешения конфликтов в файлах исходных кодов.
Организации совместной работы нескольких программистов.
3. В централизованной системе контроля версий есть:
Только одна копия репозитория.
4. Минимальной "единицей" в git (исходя из предыдущего видео) является:
Коммит
5. Скопируйте содержимое файла /home/box/condition в /home/box/answer.
cp /home/box/condition /home/box/answer
6. Используя инструкцию из предыдущего шага скопируйте текст
NDQxNzU3NWRlMzYwYzFlODk3ZDU1NzlmYjQ1MjM4YTZjNjJjZTcyZDEwYTY5ODE1Yjg2MmUZTMwM2MxYTgyZCAgLQo
в файл /home/box/answer
echo "NDQxNzU3NWRlMzYwYzFlODk3ZDU1NzlmYjQ1MjM4YTZjNjJjZTcyZDEwYTY5ODE1Yjg2MmUZTMwM2MxYTgyZCAgLQo" > /home/box/answer
7. Скопируйте содержимое файла /home/box/for_next_task из предыдущего задания в поле ниже.
mVQOaZMZmAuCQ9ng1RurSlVT1bBjDgarW5AULZeBNtU
8. Склонируйте репозиторий по адресу https://github.com/OSLL/git_course_example_repo в папку REPO, находящуюся в домашней директории текущего пользователя. В результате, содержимое репозитория должно находиться в REPO.
mkdir /home/box/REPO
git clone https://github.com/OSLL/git_course_example_repo /home/box/REPO
9. Репозиторий https://github.com/OSLL/git_course_example_repo склонирован в папку $HOME/REPO . Настройте git так, чтобы имя git-пользователя было GitMegauser, а e-mail git_super@example.com
git config --global user.name "GitMegauser"
git config --global user.email git_super@example.com
10. Репозиторий https://github.com/OSLL/git_course_example_repo склонирован в папку $HOME/REPO. Настройте его локальную конфигурацию так, чтобы можно было выполнять команду push на сервер, не вводя логин и пароль github аккаунта.
cd ~/REPO
git remote set-url origin git@github.com:OSLL/git_course_example_repo.git
11. Воспроизведите ситуацию, показанную в конце видео, используя репозиторий https://github.com/OSLL/git_course_example_repo, который склонирован в директорию /home/box/REPO:
добавьте файл newfile,
модифицируйте README.md,
добавьте newfile в индекс
cd ~/REPO
touch newfile
vim README.md
git add newfile README.md
12. Выберите команды, с помощью которых можно найти коммит, содержащий некоторый искомый файл.
A: git status
B: git status --long
C: git log --summary
D: git log --stat
Вариант C
Вариант D
13. Изначально в репозитории содержатся следующие файлы:
./man/spring/dock/flesh/zinc.file
./man/spring/word/popcorn.file
./man/stream.file
./flag.file
git status №0:
On branch master
nothing to commit, working directory clean
git status №1:
On branch master
nothing to commit, working directory clean
Выберите верный набор git команд, которые переводят git status №0 в git status №1:
A:
echo ww >> ./man/spring/word/popcorn.file
git checkout -- ./man/spring/word/popcorn.file
B:
echo ww >> ./man/spring/word/popcorn.file
git add ./man/spring/word/popcorn.file
C:
cp ./man/spring/word/popcorn.file ./tztfu
git mv ./man/spring/word/popcorn.file ./flag.file
Вариант A
14. Выберите верный ответ на команду git status для репозитория, к которому были применены команды ниже:
Изначальный статус репозитория (git status):
Changes to be committed:
(use "git rm --cached ..." to unstage)
new file: jeans/aftermath/fowl/stream/school.file
new file: rabbits/coat.file
new file: rabbits/horses/wealth/beds.file
new file: rabbits/mouth/bells.file
Применённые команды:
echo ww >> ./rabbits/mouth/bells.file
git add ./rabbits/mouth/bells.file
git checkout -- ./rabbits/mouth/bells.file
cp ./rabbits/horses/wealth/beds.file ss
git mv ./rabbits/horses/wealth/beds.file ohubjfy
Какой ответ на команду git status будет получен после применения таких команд?
A:
Changes to be committed:
(use "git rm --cached ..." to unstage)
new file: jeans/aftermath/fowl/stream/school.file
deleted: ohubjfy
new file: rabbits/coat.file
new file: rabbits/mouth/bells.file
Untracked files:
(use "git add ..." to include in what will be committed)
ss
B:
Changes to be committed:
(use "git rm --cached ..." to unstage)
new file: jeans/aftermath/fowl/stream/school.file
modified: ohubjfy
new file: rabbits/coat.file
new file: rabbits/mouth/bells.file
Untracked files:
(use "git add ..." to include in what will be committed)
ss
C:
Changes to be committed:
(use "git rm --cached ..." to unstage)
new file: jeans/aftermath/fowl/stream/school.file
new file: ohubjfy
new file: rabbits/coat.file
new file: rabbits/mouth/bells.file
Untracked files:
(use "git add ..." to include in what will be committed)
ss
Вариант C
15. Выберите верный набор git команд, которые переводят git status №0 в git status №1:
git status №0:
Changes to be committed:
(use "git rm --cached ..." to unstage)
new file: jeans/aftermath/fowl/stream/school.file
new file: rabbits/coat.file
new file: rabbits/horses/wealth/beds.file
new file: rabbits/mouth/bells.file
git status №1:
Changes to be committed:
(use "git rm --cached ..." to unstage)
new file: jeans/aftermath/fowl/stream/school.file
new file: ohubjfy
new file: rabbits/coat.file
new file: rabbits/mouth/bells.file
Untracked files:
(use "git add ..." to include in what will be committed)
ss
Какой набор команд был использован?
A:
echo ww >> ./rabbits/mouth/bells.file
git add ./rabbits/mouth/bells.file
git checkout -- ./rabbits/mouth/bells.file
cp ./rabbits/horses/wealth/beds.file ss
git mv ./rabbits/horses/wealth/beds.file ohubjfy
B:
cp ./rabbits/mouth/bells.file mxhlws
git rm -f ./rabbits/mouth/bells.file
cp ./rabbits/horses/wealth/beds.file sfrs
git rm -f ./rabbits/horses/wealth/beds.file
C:
cp ./rabbits/mouth/bells.file yzw
echo ww >> ./rabbits/mouth/bells.file
git rm -f ./rabbits/mouth/bells.file
cp ./rabbits/horses/wealth/beds.file u
git mv ./rabbits/horses/wealth/beds.file rbcxkvfbxloqu
Вариант A
16. Начальное состояние репозитория:
./wrist/flag/dock/school/cough.file
./poison/harbor/offer.file
./popcorn/work/birth/minister.file
./popcorn/stream.file
git status №0:
On branch master
nothing to commit, working directory clean
git status №1:
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: poison/harbor/offer.file -> tsc
Untracked files:
(use "git add <file>..." to include in what will be committed)
exbezy
Выберите верный набор git команд, которые переводят git status №0 в git status №1:
A:
git mv ./poison/harbor/offer.file ./exbezy
cp ./poison/harbor/offer.file ./tsc
B:
cp ./poison/harbor/offer.file ./exbezy
git mv ./poison/harbor/offer.file ./poison/harbor/tsc
C:
cp ./poison/harbor/offer.file ./exbezy
git mv ./poison/harbor/offer.file ./tsc
Вариант C
17. У вас есть склонированный локально репозиторий https://github.com/OSLL/git_course_example_repo в /home/box/REPO. Сделайте коммит с сообщением "Git rules!"
cd ~/REPO
git commit --amend -m "Git rules!"
18. Отметьте команды, которые создают хэш:
A: git add
B: git commit
Choice B
19. Отметьте команды, которые создают снимок файлов из индекса и обновляют состояние локального репозитория:
A: git add
B: git commit
C: git status
D: git push
E: git stash
Choice B
20. В рабочей директории находится файл some_file.txt
Ниже представлены две последовательности команд, обновляющие файл и добавляющие его в индекс. Однако, одна из последовательностей отменяет все незакомиченные изменения в файле, а другая сохраняет их. Отметьте последовательность, сохраняющую изменения.
A:
echo "new line" >> some_file.txt
git add some_file.txt
B:
echo "new_line" >> some_file.txt
git checkout – some_file.txt
Choice A
21. В репозитории содержится файл, не находящийся в индексе: file.txt Файл был обновлен путем добавления в него новой строки.
Выберете корректное утверждение:
A: Обновленный файл не содержится ни в индексе, ни в коммите.
B: Обновленный файл содержится в индексе, но не в коммите.
C: Обновленный файл не содержится в индексе, но содержится в коммите.
D: Обновленный файл содержится и в индексе, и в коммите.
Choice A
22. Был создан новый файл newfile в рабочей директории и проиндексирован следующим образом: git add newfile
После этого файл был изменен, и было принято решение его удалить.
Выберите команду, которая удаляет файл из файловой системы и из индекса:
A: git rm newfile
B: git rm -f newfile
Вариант B
23. Сопоставьте последовательности команд, которые выполняют одни и те же задачи.
A:
mv old_name new_name
git add old_name new_name
B:
git rm old_name
C:
git mv old_name new_name
git mv new_name old_name
1:
rm old_name
git add old_name
2:
cp old_name new_name
rm old_name
mv new_name old_name
3:
git mv old_name new_name
C 2
A 3
B 1
24. В рабочей директории есть два закомиченных файла: textfile.txt, readme
Выберите последовательности команд, которые удаляют файл readme из файловой системы и из индекса:
A:
rm readme
git commit
B:
rm readme
git add readme
git commit
C:
git rm readme
git commit
D:
git rm --cached readme
git add readme
git commit
Вариант B
Вариант C
25. В рабочей директории есть несколько файлов: file1.txt, dir/file2.txt, readme.txt
Это состояние было закоммичено и был получен хэш 9e2d55ff.
После этого file1.txt был изменен и readme.txt был переименован в readme:
echo "new line" >> file1.txt
git mv readme.txt readme
Выберите последовательность команд (без дополнительных неиспользуемых команд) которая позволит вам переключиться на коммит, хэш которого 9e2d55ff без ошибок:
A:
git checkout -- file1.txt
git checkout 9e2d55ff
B:
git reset HEAD
git checkout -- file1.txt readme.txt
rm readme
git checkout 9e2d55ff
C:
git checkout 9e2d55ff
Вариант A
26. Вам дана виртуальная машина, где в директории /home/box/REPO размещена локальная копия репозитория https://github.com/OSLL/git_course_example_repo. На основе ветки master создайте новую ветку под названием "git_rules".
cd ~/REPO
git checkout -b git_rules
27. Вам дана виртуальная машина, где в директории /home/box/REPO размещена локальная копия репозитория https://github.com/OSLL/git_course_example_repo. Кто-то создал в репозитории очень много веток и одна из них содержит в названии 5555. Определите полное название этой ветки с помощью git branch и запишите его в файл /home/box/answer.
git branch --list '*5555*' > /home/box/answer
28. Выберите команды, которыми можно отобразить список веток удаленного репозитория.
A: git branch --all
B: git branch --list
C: git branch -r
D: git branch
A
C
29. Выберите правильный набор команд (или отдельные команды), которые создают ветку и переключают рабочее дерево на нее. В данном задании несколько правильных вариантов ответа.
A: git branch new_branch
B:
git branch new_branch
git checkout -b new_branch
C: git checkout -b new_branch
D:
git branch new_branch
git checkout new_branch
C
D
30. Вы создали ветку с помощью следующей команды:
git branch new_branch
Выберите правильный:
A: Ветка существует только в локальном репозитории.
B: Ветка существует только в удаленном репозитории.
C: Ветка существует и в удаленном и в локальном репозитории.
A
31. У вас есть локальный репозиторий, в котором git status вывел следующий текст:
On branch master
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: file2.txt
no changes added to commit (use "git add" and/or "git commit -a")
Предположим, что вы хотите создать новую ветку из мастера с помощью команды: git checkout -b new_branch
Как будет выглядеть вывод команды git status?
A:
On branch new_branch
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
deleted: file2.txt
B:
On branch new_branch
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
deleted: file2.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
file2.txt
C:
On branch new_branch
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: file2.txt
no changes added to commit (use "git add" and/or "git commit -a")
Choice C
32. У вас есть локальный репозиторий в /home/box/REPO. Найдите в истории коммит с сообщением "Git rules!" и напишите его хэш (полностью) в файл /home/box/answer.
git log --grep="Git rules!" --pretty=format:%H > /home/box/answer
33. Аналогично предыдущему заданию, у вас есть локальный репозиторий в /home/box/REPO. Требуется найти коммит, сообщение которого содержит "Git rules!", и переключиться к этому коммиту.
git log --grep='Git rules!' --pretty=format:%h
git checkout 24c9a1b
34. Текущей веткой является branch1. Пользователь создал файл text.txt и внес в него изменения, не добавляя text.txt в индекс.
Какие команды позволят сохранить изменения text.txt в индексе, а также сменить текущую ветку на branch2?
A:
git stash
git checkout branch2
B:
git add text.txt
git checkout branch2
C:
git checkout -- text.txt
git checkout branch2
D:
git commit
git checkout branch2
Вариант B
35. В директории /home/box/REPO располагается локальный репозиторий. Необходимо при помощи команды git stash сохранить все измененные файлы в stash. Ничего удалять/создавать/коммитить не нужно.
сd ~/REPO
git stash
36. В директории /home/box/REPO располагается локальный репозиторий. Необходимо при помощи команды git stash извлечь сохраненные изменения в stash. Ничего удалять/создавать/коммитить не нужно.
cd ~/REPO
git stash pop
37. В директории /home/box/REPO располагается локальный репозиторий. Необходимо при помощи команды git stash удалить все сохраненные изменения из stash. Ничего создавать/коммитить не нужно.
cd ~/REPO
git stash clear
38. Локальный и удалённый репозитории синхронизированы, при этом существует единственная ветка master.
Сколько веток будет в локальном репозитории после выполнения следующих команд?
git add file.txt
git commit -m "commit description"
git checkout HEAD^
touch README
git add README
git commit -m "another commit description"
1
39. В директории /home/box/REPO располагается локальный репозиторий. Необходимо при помощи команды git reset откатиться к предыдущему коммиту с восстановлением индекса, но без изменений рабочего каталога. Ничего удалять/создавать/коммитить не нужно.
git reset -- mixed HEAD~
40. В директории /home/box/REPO располагается локальный репозиторий. Необходимо при помощи команды git reset откатиться к предыдущему коммиту без изменений в индексе или рабочем каталоге. Ничего удалять/создавать/коммитить не нужно.
git reset --soft HEAD~
41. В директории /home/box/REPO располагается локальный репозиторий. Необходимо при помощи команды git reset откатиться к предыдущему коммиту с восстановлением как индекса, так и рабочего каталога. Ничего удалять/создавать/коммитить не нужно.
git reset --hard HEAD~
42. Состояние локального и удалённого репозиториев различаются. Если необходимо скачать только новые файлы с удалённого репозитория, не обновляя существующие на локальном, то подходит команда:
A: git fetch
B: git push
C: git pull
Вариант A
43. Вы обновили состояние локального репозитория (совершили коммит), а в это время кто-то внёс изменения в удалённый репозиторий.
Если вы попытаетесь загрузить свои изменения на удалённый репозиторий (командой git push), то получите конфликт версий. Какими командами необходимо воспользоваться, чтобы решить проблему?
A:
git fetch origin master
<edit your files to the correct version>
git commit -a
git push origin master
B:
git pull origin master
git push origin master
C:
git pull origin master
<edit your files to the correct version>
git commit -a
git push origin master
Вариант C
44. Есть две ветки на удалённом репозитории: master и beta. При работе на ветке master были произведены некоторые изменения, но работа не была полностью закончена. Необходимо сменить текущую ветку на beta и скачать её состояние с удалённого репозитория, при этом не загружая на сервер несохранённые изменения ветки master.
Какая последовательность команд сменит ветку, при этом не потеряв изменения в текущей ветке?
A:
git checkout -- *
git pull origin
git checkout beta
B:
git stash
git pull origin
git checkout beta
C:
git add -A
git commit
git pull origin
git checkout beta
D:
git pull origin
git checkout beta
Вариант B
Вариант C
45. В удалённый репозиторий загружен файл:
git add readme.txt
git commit
git push origin master
Выберите верное утверждение, которое описывает, что произойдёт, если после этих действий кто-то в удаленном репозитории изменит файл readme.txt (создав коммит), а в локальном репозитории будет вызвана команда: git pull origin master
Изменения успешно загрузятся в локальный репозиторий из удаленного.
46. В удалённый репозиторий загружен файл:
git add readme.txt
git commit
git push origin master
Выберите верное утверждение, которое описывает, что произойдёт, если после этих действий кто-то в удаленном репозитории изменит файл readme.txt (создав коммит), а в локальном репозитории кто-то изменит файл readme.txt (не создавая коммит) и будет вызвана команда: git pull origin master
Возникнет конфликт слияния, коммит из удаленного репозитория не будет загружен.
47. В директории /home/box/REPO у вас содержится склонированный репозиторий https://github.com/OSLL/git_course_example_repo.
В репозитории находится файл file.txt, который менялся на протяжении 4 коммитов. Вам необходимо найти, какие данные были добавлены в file.txt в третьем коммите и удалить остальные (т.е. нужно оставить только строку, которая была добавлена во время третьего коммита).
git log
git diff d607e6 45f6f8
echo 'oPL3g1jH9t6iUvNJi8QnWzWzajBqUgnx' > file.txt
48. Ниже представлено содержимое файла с исходным кодом.
#include <iostream>
int main(){
int a = 100;
int b = 0;
while(true) {
if (a > b) {
b += 2;
}
else {
a -= 3;
}
}
std::cout << "a = ", a, " b = ", b;
return 0;
}
Далее этот же код после некоторых изменений:
#include <iostream>
int main(){
int a = 100;
int b = 0;
while(true) {
if (a < b) {
a++;
b += 2;
}
else {
a -= 3;
}
}
std::cout << "a = ", a, " b = ", b;
return 0;
}
Что будет показано после вызова команды git diff
A:
@@ -4,7 +4,8 @@ int main(){
int a = 100;
int b = 0;
while(true) {
+ a++;
b += 2;
}
else {
B:
@@ -7,7 +7,8 @@
- if (a > b) {
+ if (a < b) {
+ a++;
C:
@@ -4,7 +4,8 @@ int main(){
int a = 100;
int b = 0;
while(true) {
- if (a > b) {
+ if (a < b) {
+ a++;
b += 2;
}
else {
Вариант C
49. Ниже представлено содержимое файла с исходным кодом.
bool isEmpty(){
if(this->data == 0)
return true;
bool result = true;
for (int i = 0; i < 10; i++) {
if(readFromFile("input.txt", i)) {
result = indexes[i].matched;
}
indexes[i].setMatched(true);
}
return result;
}
Далее этот же код после некоторых изменений:
bool isEmpty(){
if(this->data == 0)
return true;
bool result = true;
for (int i = 0; i < 10; i++) {
if(readFromFile("input.txt")) {
result &= indexes[i].matched;
}
indexes[i].setMatched(true);
}
return result;
}
Что будет показано после вызова команды git diff
A:
@@ -5,8 +5,8 @@
- if(readFromFile("input.txt", i)) {
- result = indexes[i].matched;
+ if(readFromFile("input.txt")) {
+ result &= indexes[i].matched;
B:
@@ -3,8 +3,8 @@ bool isEmpty(){
return true;
bool result = true;
for (int i = 0; i < 10; i++) {
- if(readFromFile("input.txt", i)) {
- result = indexes[i].matched;
- }
+ if(readFromFile("input.txt")) {
+ result &= indexes[i].matched;
}
indexes[i].setMatched(true);
}
C:
@@ -3,8 +3,8 @@ bool isEmpty(){
return true;
bool result = true;
for (int i = 0; i < 10; i++) {
- if(readFromFile("input.txt", i)) {
- result = indexes[i].matched;
+ if(readFromFile("input.txt")) {
+ result &= indexes[i].matched;
}
indexes[i].setMatched(true);
}
Вариант C
50. Ниже представлено содержимое файла с исходным кодом.
1. int main(){
2. int a = 100;
3. int b = 0;
4. bool flag = getFlag();
5. while(a > b) {
6. if (flag) {
7. b += 2;
8. for (int i = 0; i < calcCPU(a,b); i++) {
9. int grep = initGrep(i);
10. b += grep%2;
11. }
12. std::cout << a;
13. }
14. else {
15. a -= 3;
16. std::cout << b;
17. }
18.
19. if (a%3 == 0) {
20. std::cout << a;
21. }
22. else {
23. a -= 3;
24. std::cout << b;
25. }
26. }
27. std::cout << "a = ", a, " b = ", b;
28. return 0;
29. }
Далее этот же код после некоторых изменений:
1.
2. int main(){
3. int a = 100;
4. int b = 0;
5. bool flag = getFlag();
6. while(a > b) {
7. if (flag) {
8. b += 2;
9. for (int i = 0; i <= calcCPU(a,b); i++) {
10. int grep = initGrep(i+1);
11. b += grep%2;
12. }
13. std::cout << a;
14. }
15. else {
16. a -= 3;
17. std::cout << b;
18. }
19.
20. if (a%3 == 0) {
21. std::cout << a;
22. }
23. else {
24. a -= 2;
25. std::cout << b;
26. }
27. }
28. std::cout << "a = ", a, " b = ", b;
29. return 0;
30. }
Что будет показано после вызова команды git diff
A:
@@ -5,8 +6,8 @@ int main(){
while(a > b) {
if (flag) {
b += 2;
- for (int i = 0; i < calcCPU(a,b); i++) {
- int grep = initGrep(i);
+ for (int i = 0; i <= calcCPU(a,b); i++) {
+ int grep = initGrep(i+1);
b += grep%2;
}
std::cout << a;
@@ -20,7 +21,7 @@ int main(){
std::cout << a;
}
else {
- a -= 3;
+ a -= 2;
std::cout << b;
}
}
B:
@@ -1,3 +1,4 @@
+
int main(){
int a = 100;
int b = 0;
@@ -5,8 +6,8 @@ int main(){
while(a > b) {
if (flag) {
b += 2;
- for (int i = 0; i < calcCPU(a,b); i++) {
- int grep = initGrep(i);
+ for (int i = 0; i <= calcCPU(a,b); i++) {
+ int grep = initGrep(i+1);
b += grep%2;
}
std::cout << a;
@@ -12,7 +13,7 @@ int main(){
std::cout << a;
}
else {
- a -= 3;
+ a -= 2;
std::cout << b;
}
}
C:
@@ -1,3 +1,4 @@
+
int main(){
int a = 100;
int b = 0;
@@ -5,8 +6,8 @@ int main(){
while(a > b) {
if (flag) {
b += 2;
- for (int i = 0; i < calcCPU(a,b); i++) {
- int grep = initGrep(i);
+ for (int i = 0; i <= calcCPU(a,b); i++) {
+ int grep = initGrep(i+1);
b += grep%2;
}
std::cout << a;
@@ -20,7 +21,7 @@ int main(){
std::cout << a;
}
else {
- a -= 3;
+ a -= 2;
std::cout << b;
}
}
Вариант C
51. Ниже представлено содержимое файла с исходным кодом.
1. int main(){
2. int a = 100;
3. int b = 0;
4. bool flag = getFlag();
5. while(a > b) {
6. if (flag) {
7. b += 2;
8. for (int i = 0; i < calcCPU(a,b); i++) {
9. int grep = initGrep(i);
10. b += grep%2;
11. }
12. std::cout << a;
13. }
14. else {
15. a -= 3;
16. std::cout << b;
17. }
18.
19. if (a%3 == 0) {
20. std::cout << a;
21. }
22. else {
23. a -= 3;
24. std::cout << b;
25. }
26. }
27. std::cout << "a = ", a, " b = ", b;
28. return 0;
29. }
Далее идет вывод команды git diff
@@ -1,6 +1,6 @@
-int main(){
+int main(int argc, char** argv){
int a = 100;
- int b = 0;
+ int b = argv[0];
bool flag = getFlag();
while(a > b) {
if (flag) {
@@ -13,6 +13,7 @@ int main(){
}
else {
a -= 3;
+ int buf = a > 20 ? 12 : -12;
std::cout << b;
}
Каким будет обновленное состояние этого файла?
A:
1. int main(int argc, char** argv){
2. int a = 100;
3. int b = argv[0];
4. bool flag = getFlag();
5. while(a > b) {
6. if (flag) {
7. b += 2;
8. for (int i = 0; i < calcCPU(a,b); i++) {
9. int grep = initGrep(i);
10. b += grep%2;
11. }
12. std::cout << a;
13. }
14. else {
15. a -= 3;
16. std::cout << b;
17. }
18.
19. if (a%3 == 0) {
20. std::cout << a;
21. }
22. else {
23. a -= 3;
24. int buf = a > 20 ? 12 : -12;
25. std::cout << b;
26. }
27. }
28. std::cout << "a = ", a, " b = ", b;
29. return 0;
30. }
B:
1. int main(int argc, char** argv){
2. int a = 100;
3. int b = argv[0];
4. bool flag = getFlag();
5. while(a > b) {
6. if (flag) {
7. b += 2;
8. for (int i = 0; i < calcCPU(a,b); i++) {
9. int grep = initGrep(i);
10. b += grep%2;
11. }
12. std::cout << a;
13. }
14. else {
15. a -= 3;
16. int buf = a > 20 ? 12 : -12;
17. std::cout << b;
18. }
19.
20. if (a%3 == 0) {
21. std::cout << a;
22. }
23. else {
24. a -= 3;
25. std::cout << b;
26. }
27. }
28. std::cout << "a = ", a, " b = ", b;
29. return 0;
30. }
C:
1. int main(){
2. int a = 100;
3. int b = 0;
4. int b = argv[0];
5. bool flag = getFlag();
6. while(a > b) {
7. if (flag) {
8. b += 2;
9. for (int i = 0; i < calcCPU(a,b); i++) {
10. int grep = initGrep(i);
11. b += grep%2;
12. }
13. std::cout << a;
14. }
15. else {
16. a -= 3;
17. int buf = a > 20 ? 12 : -12;
18. std::cout << b;
19. }
20.
21. if (a%3 == 0) {
22. std::cout << a;
23. }
24. else {
25. a -= 3;
26. std::cout << b;
27. }
28. }
29. std::cout << "a = ", a, " b = ", b;
30. return 0;
31. }
32.
Вариант B
Вывод: в ходе курса были изучены возможности распределённой системы управления версиями Git.