Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Во время выполнения Лабораторной работы №1 мною были выполнены следующие шаги:
- 1) Сначала я установила программу-инсталлятор МSYS2 и все необходимые пакеты, указанные в инструкции по установке.
- 2) Затем я приступила к созданию локального репозитория:
- • При помощи функции pwd я узнала, в какой папке нахожусь:
- User@WIN-9Q4O35285G6 MSYS ~
- pwd
- /home/User
- • Функция ls нужна для просмотра содержимого данной папки, а с помощью функции ls -la можно увидеть все содержимое папки:
- User@WIN-9Q4O35285G6 MSYS ~
- ls
- User@WIN-9Q4O35285G6 MSYS ~
- ls -la
- итого 26
- drwxr-xr-x 1 User Отсутствует 0 фев 17 22:46 .
- drwxr-xr-x 1 User Отсутствует 0 фев 17 20:48 ..
- -rw-r--r-- 1 User Отсутствует 318 фев 18 02:40 .bash_history
- -rw-r--r-- 1 User Отсутствует 21 апр 19 2018 .bash_logout
- -rw-r--r-- 1 User Отсутствует 1255 апр 19 2018 .bash_profile
- -rw-r--r-- 1 User Отсутствует 5827 апр 19 2018 .bashrc
- drwxr-xr-x 1 User Отсутствует 0 фев 17 22:46 .gnupg
- -rw-r--r-- 1 User Отсутствует 3272 апр 19 2018 .inputrc
- -rw-r--r-- 1 User Отсутствует 1574 апр 19 2018 .profile
- • Для выполнения лабораторной работы я создала папку «work» (команда mkdir)
- User@WIN-9Q4O35285G6 MSYS ~
- mkdir work
- • Воспользовалась функцией cd, чтобы перейти в папку work, затем при помощи pwd, убедилась, что нахожусь в нужной мне папке:
- User@WIN-9Q4O35285G6 MSYS ~
- cd work
- User@WIN-9Q4O35285G6 MSYS ~/work
- pwd
- /home/User/work
- • Для создания локального репозитория воспользовалась командой git init.
- User@WIN-9Q4O35285G6 MSYS ~/work
- git init
- Инициализирован пустой репозиторий Git в /home/User/work/.git/
- • Убедилась, что папка теперь непустая:
- User@WIN-9Q4O35285G6 MSYS ~/work
- ls -a
- . .. .git
- • Проверила, задано ли имя пользователя и e-mail: ( функция git config –list)
- User@WIN-9Q4O35285G6 MSYS ~/work
- git config --list
- core.repositoryformatversion=0
- core.filemode=false
- core.bare=false
- core.logallrefupdates=true
- core.symlinks=false
- core.ignorecase=true
- • При помощи команд git config user.name и git config user.email указала свое имя и электронную почту, затем убедилась, что изменения сохранены:
- User@WIN-9Q4O35285G6 MSYS ~/work
- git config user.name uao18u969
- User@WIN-9Q4O35285G6 MSYS ~/work
- git config user.email arishka.milashka@mail.ru
- User@WIN-9Q4O35285G6 MSYS ~/work
- git config --list
- core.repositoryformatversion=0
- core.filemode=false
- core.bare=false
- core.logallrefupdates=true
- core.symlinks=false
- core.ignorecase=true
- user.name=uao18u969
- user.email=arishka.milashka@mail.ru
- • Затем скопировала в папку work исходный код программы из архива, убедилась, что все сделано верно:
- User@WIN-9Q4O35285G6 MSYS ~/work
- pwd
- /home/User/work
- User@WIN-9Q4O35285G6 MSYS ~/work
- ls
- iarray.py main.py
- • После запуска программы, в папке work появилась папка __pycache__, которая содержит байт-код Python.
- User@WIN-9Q4O35285G6 MSYS ~/work
- ls
- __pycache__ iarray.py main.py
- • Чтобы git данный файл не отслеживал, воспользовалась специальным файлом, который называется .gitignore. C помощью текстового редактора Notepad++ (который я специально скачала из интернета) создала файл, содержащий строку __pycache__.
- • При помощи git status ,комнады, выводяющей статус репозитория, узнаю , в каком состоянии находится мой проект:
- User@WIN-9Q4O35285G6 MSYS ~/work
- git status
- На ветке master
- Еще нет коммитов
- Неотслеживаемые файлы:
- (используйте «git add <файл>…», чтобы добавить в то, что будет включено в коммит)
- .gitignore
- iarray.py
- main.py
- ничего не добавлено в коммит, но есть неотслеживаемые файлы (используйте «git add»,
- чтобы отслеживать их)
- • Чтобы сообщить Git о том, что пора начать отслеживать изменения, внесенные в файл, я сначала добавила его с помощью git add, затем снова git status, чтобы понять, что изменилось:
- User@WIN-9Q4O35285G6 MSYS ~/work
- git add .gitignore
- User@WIN-9Q4O35285G6 MSYS ~/work
- git status
- На ветке master
- Еще нет коммитов
- Изменения, которые будут включены в коммит:
- (используйте «git rm --cached <файл>…», чтобы убрать из индекса)
- новый файл: .gitignore
- Неотслеживаемые файлы:
- (используйте «git add <файл>…», чтобы добавить в то, что будет включено в коммит)
- iarray.py
- main.py
- • Чтобы сохранить изменения на данном этапе выполнила команду создания коммита (git commit) и передала ей в качестве аргумента сообщение, описывающие изменения, сделанные в этом коммите:
- User@WIN-9Q4O35285G6 MSYS ~/work
- git commit -m ".gitignore was added."
- [master (корневой коммит) 72daa8c] .gitignore was added.
- 1 file changed, 1 insertion(+)
- create mode 100644 .gitignore
- • Добавила остальные файлы под версионный контроль:
- User@WIN-9Q4O35285G6 MSYS ~/work
- git add iarray.py main.py
- User@WIN-9Q4O35285G6 MSYS ~/work
- git status
- На ветке master
- Изменения, которые будут включены в коммит:
- (используйте «git reset HEAD <файл>…», чтобы убрать из индекса)
- новый файл: iarray.py
- новый файл: main.py
- User@WIN-9Q4O35285G6 MSYS ~/work
- git commit -m "Initial version of program was added."
- [master 6e371bb] Initial version of program was added.
- 2 files changed, 37 insertions(+)
- create mode 100644 iarray.py
- create mode 100644 main.py
- 3) Данная программа подсчитывает количество максимальных значений в массиве чисел.
- • В функции Test1() происходит заполнение массива Arr.
- • В функции main() переменной Arr передается заполненный в функции Test1() массив, а переменная N хранит его длину .Далее после вызова фукции GetMaxCount(Arr, N), которая была импортирована из файла iarray.py, выводится ответ задачи.
- • Фукция GetMaxCount(Arr, N) находит количество максимальных значений в заданном массиве чисел.
- • if __name__ == '__main__' в питоне используется для того чтобы предотвратить мгновенное выполнение участков программного кода сразу при импортировании модулей что происходило бы без этой конструкции.
- 4) Данная программа работает верно, если массив содержит элементы: 5, 3, 2, 5, 1
- Ответ: Maximal value is found 2 times.
- Но программа работает неверно, если массив содержит элементы: 3, 3, 5, 5, 5
- Ответ, который выводит программа : Maximal value is found 4 times.
- Правильный ответ: Maximal value is found 3 times.
- 5) После добавления функции Test2(), исходный файл main.py был изменен, при помощи функции git status, узнаю, какие файлы в каком состоянии находятся:
- git status
- На ветке master
- Изменения, которые не в индексе для коммита:
- (используйте «git add <файл>…», чтобы добавить файл в индекс)
- (используйте «git checkout -- <файл>…», чтобы отменить изменения
- в рабочем каталоге)
- изменено: main.py
- нет изменений добавленных для коммита
- (используйте «git add» и/или «git commit -a»)
- 6) Команда git diff показывает разницу между файлами в состоянии changed и umodified.
- git diff
- diff --git a/main.py b/main.py
- index 788e6b3..09fa355 100644
- --- a/main.py
- +++ b/main.py
- @@ -12,11 +12,25 @@ def Test1():
- return Arr, 5
- ```
- +def Test2():^M
- + Arr = list()^M
- + ^M
- + Arr.append(3)^M
- + Arr.append(3)^M
- + Arr.append(5)^M
- + Arr.append(5)^M
- + Arr.append(5)^M
- + ^M
- + return Arr, 5^M
- +^M
- def main():
- Arr, N = Test1()
- -
- + print('1 список: ', Arr)^M
- print("Maximal value is found " + str(GetMaxCount(Arr, N)) + " times.")
- + Arr, N = Test2()^M
- + print('\n2 список: ', Arr)^M
- + print("Maximal value is found " + str(GetMaxCount(Arr, N)) + " times.")^M
- if __name__ == '__main__':
- - main()
- \ No newline at end of file
- + main()^M
- ```
- 7) Зафиксируем изменения (при помощи git commit):
- ```
- User@WIN-9Q4O35285G6 MSYS ~/work
- git add main.py
- User@WIN-9Q4O35285G6 MSYS ~/work
- git status
- На ветке master
- Изменения, которые будут включены в коммит:
- (используйте «git reset HEAD <файл>…», чтобы убрать из индекса)
- изменено: main.py
- User@WIN-9Q4O35285G6 MSYS ~/work
- git commit -m"Revision 1: adding a test that works incorrectly"
- [master 216ca08] Revision 1: adding a test that works incorrectly
- 1 file changed, 16 insertions(+), 2 deletions(-)
- ```
- 8) В файле iarray.py в функции GetMaxCount(Arr, N) я нашла ошибку и исправила ее, добавив строку
- Count = 1, чтобы счетчик начал заново подсчет количества максимумов при нахождении нового максимально значения массива.
- Перед фиксацией изменений я проанализировала изменения с помощью команд git status и git diff:
- User@WIN-9Q4O35285G6 MSYS ~/work
- # git status
- На ветке master
- Изменения, которые не в индексе для коммита:
- (используйте «git add <файл>…», чтобы добавить файл в индекс)
- (используйте «git checkout -- <файл>…», чтобы отменить изменения
- в рабочем каталоге)
- изменено: iarray.py
- нет изменений добавленных для коммита
- (используйте «git add» и/или «git commit -a»)
- User@WIN-9Q4O35285G6 MSYS ~/work
- git diff
- diff --git a/iarray.py b/iarray.py
- index bfe46b8..08acd73 100644
- --- a/iarray.py
- +++ b/iarray.py
- @@ -6,6 +6,7 @@ def GetMaxCount(Arr, N):
- while (I < N):
- if (Arr[I] > Max):
- Max = Arr[I]
- + Count = 1^M
- else:
- if (Max == Arr[I]):
- Count += 1;
- User@WIN-9Q4O35285G6 MSYS ~/work
- git add iarray.py
- User@WIN-9Q4O35285G6 MSYS ~/work
- git commit -m"Revision 2: error correction: resetting the max number counter when a new maximum is found."
- [master 2a2b14d] Revision 2: error correction: resetting the max number counter when a new maximum is found.
- 1 file changed, 1 insertion(+)
- 9) C помощью команды git log можно проанализируйте историю изменений:
- User@WIN-9Q4O35285G6 MSYS ~/work
- git log
- commit 2a2b14dfe9ee480f2131548151c229860ff575e4 (HEAD -> master)
- Author: uao18u969 <arishka.milashka@mail.ru>
- Date: Fri Feb 22 00:39:16 2019 +0300
- Revision 2: error correction: resetting the max number counter when a new maximum is found.
- commit 216ca083388bf3099696341f0c826a76049cd4d8
- Author: uao18u969 <arishka.milashka@mail.ru>
- Date: Thu Feb 21 21:29:48 2019 +0300
- Revision 1: adding a test that works incorrectly
- commit f32ba97d60dd9ebd0f0df2136c56ce757222f69d
- Author: uao18u969 <arishka.milashka@mail.ru>
- Date: Thu Feb 21 18:36:53 2019 +0300
- Initial version of program was added.
- commit 97814017d3fb4b75ad5d23af2cf221c7884d9501
- Author: uao18u969 <arishka.milashka@mail.ru>
- Date: Thu Feb 21 18:36:18 2019 +0300
- .gitignore was added.
- 10) При добавлении параметра “—name-status” выводится список изменённых файлов вместе с информацией о добавлении/изменении/удалении.
- User@WIN-9Q4O35285G6 MSYS ~/work
- git log --name-status
- commit 2a2b14dfe9ee480f2131548151c229860ff575e4 (HEAD -> master)
- Author: uao18u969 <arishka.milashka@mail.ru>
- Date: Fri Feb 22 00:39:16 2019 +0300
- Revision 2: error correction: resetting the max number counter when a new maximum is found.
- M iarray.py
- commit 216ca083388bf3099696341f0c826a76049cd4d8
- Author: uao18u969 <arishka.milashka@mail.ru>
- Date: Thu Feb 21 21:29:48 2019 +0300
- Revision 1: adding a test that works incorrectly
- M main.py
- commit f32ba97d60dd9ebd0f0df2136c56ce757222f69d
- Author: uao18u969 <arishka.milashka@mail.ru>
- Date: Thu Feb 21 18:36:53 2019 +0300
- Initial version of program was added.
- A iarray.py
- A main.py
- commit 97814017d3fb4b75ad5d23af2cf221c7884d9501
- Author: uao18u969 <arishka.milashka@mail.ru>
- Date: Thu Feb 21 18:36:18 2019 +0300
- .gitignore was added.
- A .gitignore
- 11) Кроме опций для форматирования вывода, git log имеет ряд полезных ограничительных параметров, то есть параметров, которые дают возможность отобразить часть коммитов.
- -(n) Показать последние n коммитов
- --since, --after Ограничить коммиты теми, которые сделаны после указанной даты.
- --until, --before Ограничить коммиты теми, которые сделаны до указанной даты.
- 12) “git diff” полезен также в том случае, когда вы хотите посмотреть, чем одна ветка (или конкретный коммит) отличается от другой. Например, вам интересно просмотреть все изменения из ветки “contact-form”, которой еще нет в ветке “master”. Чтоб сделать это, используйте команду “git diff” в следующем ключе:
- $ git diff master..contact-form
- Но вы не ограничены только возможностью сравнения веток. Также можно сравнивать между собой два отдельных коммита:
- $ git diff 0023cdd..fcd6199# 4. Анализ истории
- # 4. Анализ истории
- `git log` позволяет просмотреть полную историю внесённых изменений, включая хэши, имена, даты и комментарии.
- ```
- $ git log
- commit d41e186ae0bc02ac0c81a1982fa1a131c47a5c25 (HEAD -> master)
- Author: Artyom <ArtyomBogachenco@gmail.com>
- Date: Mon Feb 18 10:47:33 2019 +0300
- Failure fix.
- commit cc06b140502064b1330255422a419e2863198408
- Author: Artyom <ArtyomBogachenco@gmail.com>
- Date: Mon Feb 18 10:34:32 2019 +0300
- New test added. Failure found
- commit 5f3bf8040c4790c5e27a7874fb0aadb8aa748dcf
- Author: Artyom <ArtyomBogachenco@gmail.com>
- Date: Mon Feb 18 10:03:07 2019 +0300
- Initial version of program was added.
- commit 3c3f73148e1e4e13bce95a5f6efcd69af89b52a0
- Author: Artyom <ArtyomBogachenco@gmail.com>
- Date: Mon Feb 18 10:02:16 2019 +0300
- .gitignore was added.
- ```
- При добавлении параметра `--name-status` будут выведены имена и статусы изменённых файлов. Добавив второй параметр `--pretty=oneline` можно красиво упорядочить выдачу, буквально по две строчки на commit.
- ```
- $ git log --name-status --pretty=oneline
- d41e186ae0bc02ac0c81a1982fa1a131c47a5c25 (HEAD -> master) Failure fix.
- M iarray.py
- cc06b140502064b1330255422a419e2863198408 New test added. Failure found
- M main.py
- 5f3bf8040c4790c5e27a7874fb0aadb8aa748dcf Initial version of program was added.
- A iarray.py
- A main.py
- 3c3f73148e1e4e13bce95a5f6efcd69af89b52a0 .gitignore was added.
- A .gitignore
- ```
- Что-бы проанализировать историю изменений между двумя коммитами нужно воспользоваться командой `git diff SHA1 SHA2`
- ```
- $ git diff d41e186ae0bc02ac0c81a1982fa1a131c47a5c25 cc06b140502064b1330255422a419e2863198408
- diff --git a/iarray.py b/iarray.py
- index 08acd73..bfe46b8 100644
- --- a/iarray.py
- +++ b/iarray.py
- @@ -6,7 +6,6 @@ def GetMaxCount(Arr, N):
- while (I < N):
- if (Arr[I] > Max):
- Max = Arr[I]
- - Count = 1
- else:
- if (Max == Arr[I]):
- Count += 1;
- ```
- Файлы сравниваются аналогично, с использованием `git diff SHA1 SHA2`
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement