Advertisement
Guest User

323123

a guest
Feb 25th, 2019
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.74 KB | None | 0 0
  1.  
  2.  
  3. Во время выполнения Лабораторной работы №1 мною были выполнены следующие шаги:
  4.  
  5. 1) Сначала я установила программу-инсталлятор МSYS2 и все необходимые пакеты, указанные в инструкции по установке.
  6. 2) Затем я приступила к созданию локального репозитория:
  7. • При помощи функции pwd я узнала, в какой папке нахожусь:
  8.  
  9. User@WIN-9Q4O35285G6 MSYS ~
  10.  
  11. pwd
  12.  
  13. /home/User
  14.  
  15. • Функция ls нужна для просмотра содержимого данной папки, а с помощью функции ls -la можно увидеть все содержимое папки:
  16.  
  17. User@WIN-9Q4O35285G6 MSYS ~
  18.  
  19. ls
  20.  
  21. User@WIN-9Q4O35285G6 MSYS ~
  22.  
  23. ls -la
  24.  
  25. итого 26
  26.  
  27. drwxr-xr-x 1 User Отсутствует 0 фев 17 22:46 .
  28.  
  29. drwxr-xr-x 1 User Отсутствует 0 фев 17 20:48 ..
  30.  
  31. -rw-r--r-- 1 User Отсутствует 318 фев 18 02:40 .bash_history
  32.  
  33. -rw-r--r-- 1 User Отсутствует 21 апр 19 2018 .bash_logout
  34.  
  35. -rw-r--r-- 1 User Отсутствует 1255 апр 19 2018 .bash_profile
  36.  
  37. -rw-r--r-- 1 User Отсутствует 5827 апр 19 2018 .bashrc
  38.  
  39. drwxr-xr-x 1 User Отсутствует 0 фев 17 22:46 .gnupg
  40.  
  41. -rw-r--r-- 1 User Отсутствует 3272 апр 19 2018 .inputrc
  42.  
  43. -rw-r--r-- 1 User Отсутствует 1574 апр 19 2018 .profile
  44.  
  45. • Для выполнения лабораторной работы я создала папку «work» (команда mkdir)
  46.  
  47. User@WIN-9Q4O35285G6 MSYS ~
  48. mkdir work
  49.  
  50.  
  51. • Воспользовалась функцией cd, чтобы перейти в папку work, затем при помощи pwd, убедилась, что нахожусь в нужной мне папке:
  52.  
  53. User@WIN-9Q4O35285G6 MSYS ~
  54.  
  55. cd work
  56.  
  57. User@WIN-9Q4O35285G6 MSYS ~/work
  58.  
  59. pwd
  60.  
  61. /home/User/work
  62.  
  63. • Для создания локального репозитория воспользовалась командой git init.
  64.  
  65. User@WIN-9Q4O35285G6 MSYS ~/work
  66.  
  67. git init
  68.  
  69. Инициализирован пустой репозиторий Git в /home/User/work/.git/
  70.  
  71. • Убедилась, что папка теперь непустая:
  72.  
  73. User@WIN-9Q4O35285G6 MSYS ~/work
  74.  
  75. ls -a
  76.  
  77. . .. .git
  78.  
  79. • Проверила, задано ли имя пользователя и e-mail: ( функция git config –list)
  80.  
  81.  
  82. User@WIN-9Q4O35285G6 MSYS ~/work
  83.  
  84. git config --list
  85.  
  86. core.repositoryformatversion=0
  87.  
  88. core.filemode=false
  89.  
  90. core.bare=false
  91.  
  92. core.logallrefupdates=true
  93.  
  94. core.symlinks=false
  95.  
  96. core.ignorecase=true
  97.  
  98. • При помощи команд git config user.name и git config user.email указала свое имя и электронную почту, затем убедилась, что изменения сохранены:
  99.  
  100. User@WIN-9Q4O35285G6 MSYS ~/work
  101.  
  102. git config user.name uao18u969
  103.  
  104. User@WIN-9Q4O35285G6 MSYS ~/work
  105.  
  106.  
  107. git config user.email arishka.milashka@mail.ru
  108.  
  109. User@WIN-9Q4O35285G6 MSYS ~/work
  110.  
  111. git config --list
  112.  
  113. core.repositoryformatversion=0
  114.  
  115. core.filemode=false
  116.  
  117. core.bare=false
  118.  
  119. core.logallrefupdates=true
  120.  
  121. core.symlinks=false
  122.  
  123. core.ignorecase=true
  124.  
  125. user.name=uao18u969
  126.  
  127. user.email=arishka.milashka@mail.ru
  128.  
  129. • Затем скопировала в папку work исходный код программы из архива, убедилась, что все сделано верно:
  130.  
  131. User@WIN-9Q4O35285G6 MSYS ~/work
  132.  
  133. pwd
  134. /home/User/work
  135.  
  136.  
  137. User@WIN-9Q4O35285G6 MSYS ~/work
  138.  
  139. ls
  140.  
  141. iarray.py main.py
  142.  
  143. • После запуска программы, в папке work появилась папка __pycache__, которая содержит байт-код Python.
  144.  
  145. User@WIN-9Q4O35285G6 MSYS ~/work
  146.  
  147. ls
  148.  
  149. __pycache__ iarray.py main.py
  150.  
  151. • Чтобы git данный файл не отслеживал, воспользовалась специальным файлом, который называется .gitignore. C помощью текстового редактора Notepad++ (который я специально скачала из интернета) создала файл, содержащий строку __pycache__.
  152.  
  153.  
  154.  
  155.  
  156. • При помощи git status ,комнады, выводяющей статус репозитория, узнаю , в каком состоянии находится мой проект:
  157.  
  158.  
  159. User@WIN-9Q4O35285G6 MSYS ~/work
  160.  
  161. git status
  162.  
  163. На ветке master
  164.  
  165. Еще нет коммитов
  166.  
  167. Неотслеживаемые файлы:
  168.  
  169. (используйте «git add <файл>…», чтобы добавить в то, что будет включено в коммит)
  170.  
  171. .gitignore
  172. iarray.py
  173. main.py
  174.  
  175. ничего не добавлено в коммит, но есть неотслеживаемые файлы (используйте «git add»,
  176. чтобы отслеживать их)
  177.  
  178. • Чтобы сообщить Git о том, что пора начать отслеживать изменения, внесенные в файл, я сначала добавила его с помощью git add, затем снова git status, чтобы понять, что изменилось:
  179.  
  180. User@WIN-9Q4O35285G6 MSYS ~/work
  181.  
  182. git add .gitignore
  183.  
  184. User@WIN-9Q4O35285G6 MSYS ~/work
  185.  
  186. git status
  187.  
  188. На ветке master
  189.  
  190. Еще нет коммитов
  191.  
  192. Изменения, которые будут включены в коммит:
  193.  
  194. (используйте «git rm --cached <файл>…», чтобы убрать из индекса)
  195.  
  196. новый файл: .gitignore
  197.  
  198. Неотслеживаемые файлы:
  199.  
  200. (используйте «git add <файл>…», чтобы добавить в то, что будет включено в коммит)
  201.  
  202. iarray.py
  203.  
  204. main.py
  205.  
  206. • Чтобы сохранить изменения на данном этапе выполнила команду создания коммита (git commit) и передала ей в качестве аргумента сообщение, описывающие изменения, сделанные в этом коммите:
  207.  
  208. User@WIN-9Q4O35285G6 MSYS ~/work
  209.  
  210. git commit -m ".gitignore was added."
  211.  
  212. [master (корневой коммит) 72daa8c] .gitignore was added.
  213.  
  214. 1 file changed, 1 insertion(+)
  215.  
  216. create mode 100644 .gitignore
  217.  
  218. • Добавила остальные файлы под версионный контроль:
  219.  
  220. User@WIN-9Q4O35285G6 MSYS ~/work
  221.  
  222. git add iarray.py main.py
  223.  
  224. User@WIN-9Q4O35285G6 MSYS ~/work
  225.  
  226. git status
  227.  
  228. На ветке master
  229.  
  230. Изменения, которые будут включены в коммит:
  231.  
  232. (используйте «git reset HEAD <файл>…», чтобы убрать из индекса)
  233.  
  234. новый файл: iarray.py
  235.  
  236. новый файл: main.py
  237.  
  238.  
  239. User@WIN-9Q4O35285G6 MSYS ~/work
  240.  
  241. git commit -m "Initial version of program was added."
  242.  
  243. [master 6e371bb] Initial version of program was added.
  244.  
  245. 2 files changed, 37 insertions(+)
  246.  
  247. create mode 100644 iarray.py
  248.  
  249. create mode 100644 main.py
  250.  
  251. 3) Данная программа подсчитывает количество максимальных значений в массиве чисел.
  252.  
  253. • В функции Test1() происходит заполнение массива Arr.
  254.  
  255. • В функции main() переменной Arr передается заполненный в функции Test1() массив, а переменная N хранит его длину .Далее после вызова фукции GetMaxCount(Arr, N), которая была импортирована из файла iarray.py, выводится ответ задачи.
  256.  
  257. • Фукция GetMaxCount(Arr, N) находит количество максимальных значений в заданном массиве чисел.
  258.  
  259. • if __name__ == '__main__' в питоне используется для того чтобы предотвратить мгновенное выполнение участков программного кода сразу при импортировании модулей что происходило бы без этой конструкции.
  260.  
  261. 4) Данная программа работает верно, если массив содержит элементы: 5, 3, 2, 5, 1
  262. Ответ: Maximal value is found 2 times.
  263.  
  264. Но программа работает неверно, если массив содержит элементы: 3, 3, 5, 5, 5
  265. Ответ, который выводит программа : Maximal value is found 4 times.
  266. Правильный ответ: Maximal value is found 3 times.
  267.  
  268. 5) После добавления функции Test2(), исходный файл main.py был изменен, при помощи функции git status, узнаю, какие файлы в каком состоянии находятся:
  269.  
  270. git status
  271.  
  272. На ветке master
  273.  
  274. Изменения, которые не в индексе для коммита:
  275.  
  276. (используйте «git add <файл>…», чтобы добавить файл в индекс)
  277.  
  278. (используйте «git checkout -- <файл>…», чтобы отменить изменения
  279.  
  280. в рабочем каталоге)
  281.  
  282. изменено: main.py
  283.  
  284. нет изменений добавленных для коммита
  285.  
  286. (используйте «git add» и/или «git commit -a»)
  287.  
  288.  
  289. 6) Команда git diff показывает разницу между файлами в состоянии changed и umodified.
  290.  
  291. git diff
  292.  
  293. diff --git a/main.py b/main.py
  294.  
  295. index 788e6b3..09fa355 100644
  296.  
  297. --- a/main.py
  298.  
  299. +++ b/main.py
  300.  
  301. @@ -12,11 +12,25 @@ def Test1():
  302.  
  303. return Arr, 5
  304.  
  305. ```
  306. +def Test2():^M
  307.  
  308. + Arr = list()^M
  309.  
  310. + ^M
  311.  
  312. + Arr.append(3)^M
  313.  
  314. + Arr.append(3)^M
  315.  
  316. + Arr.append(5)^M
  317.  
  318. + Arr.append(5)^M
  319.  
  320. + Arr.append(5)^M
  321.  
  322. + ^M
  323.  
  324. + return Arr, 5^M
  325.  
  326. +^M
  327.  
  328. def main():
  329.  
  330. Arr, N = Test1()
  331.  
  332. -
  333. + print('1 список: ', Arr)^M
  334.  
  335. print("Maximal value is found " + str(GetMaxCount(Arr, N)) + " times.")
  336.  
  337. + Arr, N = Test2()^M
  338.  
  339. + print('\n2 список: ', Arr)^M
  340.  
  341. + print("Maximal value is found " + str(GetMaxCount(Arr, N)) + " times.")^M
  342.  
  343. if __name__ == '__main__':
  344.  
  345. - main()
  346.  
  347. \ No newline at end of file
  348.  
  349. + main()^M
  350. ```
  351.  
  352. 7) Зафиксируем изменения (при помощи git commit):
  353.  
  354. ```
  355. User@WIN-9Q4O35285G6 MSYS ~/work
  356.  
  357. git add main.py
  358.  
  359. User@WIN-9Q4O35285G6 MSYS ~/work
  360.  
  361. git status
  362.  
  363. На ветке master
  364.  
  365. Изменения, которые будут включены в коммит:
  366.  
  367. (используйте «git reset HEAD <файл>…», чтобы убрать из индекса)
  368.  
  369. изменено: main.py
  370.  
  371.  
  372. User@WIN-9Q4O35285G6 MSYS ~/work
  373.  
  374. git commit -m"Revision 1: adding a test that works incorrectly"
  375.  
  376. [master 216ca08] Revision 1: adding a test that works incorrectly
  377.  
  378. 1 file changed, 16 insertions(+), 2 deletions(-)
  379. ```
  380.  
  381. 8) В файле iarray.py в функции GetMaxCount(Arr, N) я нашла ошибку и исправила ее, добавив строку
  382. Count = 1, чтобы счетчик начал заново подсчет количества максимумов при нахождении нового максимально значения массива.
  383. Перед фиксацией изменений я проанализировала изменения с помощью команд git status и git diff:
  384.  
  385. User@WIN-9Q4O35285G6 MSYS ~/work
  386. # git status
  387. На ветке master
  388. Изменения, которые не в индексе для коммита:
  389. (используйте «git add <файл>…», чтобы добавить файл в индекс)
  390. (используйте «git checkout -- <файл>…», чтобы отменить изменения
  391. в рабочем каталоге)
  392.  
  393. изменено: iarray.py
  394.  
  395. нет изменений добавленных для коммита
  396. (используйте «git add» и/или «git commit -a»)
  397.  
  398. User@WIN-9Q4O35285G6 MSYS ~/work
  399. git diff
  400. diff --git a/iarray.py b/iarray.py
  401. index bfe46b8..08acd73 100644
  402. --- a/iarray.py
  403. +++ b/iarray.py
  404. @@ -6,6 +6,7 @@ def GetMaxCount(Arr, N):
  405. while (I < N):
  406. if (Arr[I] > Max):
  407. Max = Arr[I]
  408. + Count = 1^M
  409. else:
  410. if (Max == Arr[I]):
  411. Count += 1;
  412.  
  413. User@WIN-9Q4O35285G6 MSYS ~/work
  414. git add iarray.py
  415.  
  416. User@WIN-9Q4O35285G6 MSYS ~/work
  417. git commit -m"Revision 2: error correction: resetting the max number counter when a new maximum is found."
  418. [master 2a2b14d] Revision 2: error correction: resetting the max number counter when a new maximum is found.
  419. 1 file changed, 1 insertion(+)
  420.  
  421. 9) C помощью команды git log можно проанализируйте историю изменений:
  422.  
  423. User@WIN-9Q4O35285G6 MSYS ~/work
  424. git log
  425. commit 2a2b14dfe9ee480f2131548151c229860ff575e4 (HEAD -> master)
  426. Author: uao18u969 <arishka.milashka@mail.ru>
  427. Date: Fri Feb 22 00:39:16 2019 +0300
  428.  
  429. Revision 2: error correction: resetting the max number counter when a new maximum is found.
  430.  
  431. commit 216ca083388bf3099696341f0c826a76049cd4d8
  432. Author: uao18u969 <arishka.milashka@mail.ru>
  433. Date: Thu Feb 21 21:29:48 2019 +0300
  434.  
  435. Revision 1: adding a test that works incorrectly
  436.  
  437. commit f32ba97d60dd9ebd0f0df2136c56ce757222f69d
  438. Author: uao18u969 <arishka.milashka@mail.ru>
  439. Date: Thu Feb 21 18:36:53 2019 +0300
  440.  
  441. Initial version of program was added.
  442.  
  443. commit 97814017d3fb4b75ad5d23af2cf221c7884d9501
  444. Author: uao18u969 <arishka.milashka@mail.ru>
  445. Date: Thu Feb 21 18:36:18 2019 +0300
  446.  
  447. .gitignore was added.
  448.  
  449.  
  450.  
  451. 10) При добавлении параметра “—name-status” выводится список изменённых файлов вместе с информацией о добавлении/изменении/удалении.
  452.  
  453. User@WIN-9Q4O35285G6 MSYS ~/work
  454. git log --name-status
  455. commit 2a2b14dfe9ee480f2131548151c229860ff575e4 (HEAD -> master)
  456. Author: uao18u969 <arishka.milashka@mail.ru>
  457. Date: Fri Feb 22 00:39:16 2019 +0300
  458.  
  459. Revision 2: error correction: resetting the max number counter when a new maximum is found.
  460.  
  461. M iarray.py
  462.  
  463. commit 216ca083388bf3099696341f0c826a76049cd4d8
  464. Author: uao18u969 <arishka.milashka@mail.ru>
  465. Date: Thu Feb 21 21:29:48 2019 +0300
  466.  
  467. Revision 1: adding a test that works incorrectly
  468.  
  469. M main.py
  470.  
  471. commit f32ba97d60dd9ebd0f0df2136c56ce757222f69d
  472. Author: uao18u969 <arishka.milashka@mail.ru>
  473. Date: Thu Feb 21 18:36:53 2019 +0300
  474.  
  475. Initial version of program was added.
  476.  
  477. A iarray.py
  478. A main.py
  479.  
  480. commit 97814017d3fb4b75ad5d23af2cf221c7884d9501
  481. Author: uao18u969 <arishka.milashka@mail.ru>
  482. Date: Thu Feb 21 18:36:18 2019 +0300
  483.  
  484. .gitignore was added.
  485.  
  486. A .gitignore
  487.  
  488.  
  489. 11) Кроме опций для форматирования вывода, git log имеет ряд полезных ограничительных параметров, то есть параметров, которые дают возможность отобразить часть коммитов.
  490.  
  491. -(n) Показать последние n коммитов
  492.  
  493. --since, --after Ограничить коммиты теми, которые сделаны после указанной даты.
  494.  
  495. --until, --before Ограничить коммиты теми, которые сделаны до указанной даты.
  496.  
  497. 12) “git diff” полезен также в том случае, когда вы хотите посмотреть, чем одна ветка (или конкретный коммит) отличается от другой. Например, вам интересно просмотреть все изменения из ветки “contact-form”, которой еще нет в ветке “master”. Чтоб сделать это, используйте команду “git diff” в следующем ключе:
  498.  
  499. $ git diff master..contact-form
  500.  
  501. Но вы не ограничены только возможностью сравнения веток. Также можно сравнивать между собой два отдельных коммита:
  502.  
  503. $ git diff 0023cdd..fcd6199# 4. Анализ истории
  504.  
  505. # 4. Анализ истории
  506.  
  507. `git log` позволяет просмотреть полную историю внесённых изменений, включая хэши, имена, даты и комментарии.
  508.  
  509. ```
  510. $ git log
  511. commit d41e186ae0bc02ac0c81a1982fa1a131c47a5c25 (HEAD -> master)
  512. Author: Artyom <ArtyomBogachenco@gmail.com>
  513. Date: Mon Feb 18 10:47:33 2019 +0300
  514.  
  515. Failure fix.
  516.  
  517. commit cc06b140502064b1330255422a419e2863198408
  518. Author: Artyom <ArtyomBogachenco@gmail.com>
  519. Date: Mon Feb 18 10:34:32 2019 +0300
  520.  
  521. New test added. Failure found
  522.  
  523. commit 5f3bf8040c4790c5e27a7874fb0aadb8aa748dcf
  524. Author: Artyom <ArtyomBogachenco@gmail.com>
  525. Date: Mon Feb 18 10:03:07 2019 +0300
  526.  
  527. Initial version of program was added.
  528.  
  529. commit 3c3f73148e1e4e13bce95a5f6efcd69af89b52a0
  530. Author: Artyom <ArtyomBogachenco@gmail.com>
  531. Date: Mon Feb 18 10:02:16 2019 +0300
  532.  
  533. .gitignore was added.
  534. ```
  535.  
  536. При добавлении параметра `--name-status` будут выведены имена и статусы изменённых файлов. Добавив второй параметр `--pretty=oneline` можно красиво упорядочить выдачу, буквально по две строчки на commit.
  537.  
  538. ```
  539. $ git log --name-status --pretty=oneline
  540. d41e186ae0bc02ac0c81a1982fa1a131c47a5c25 (HEAD -> master) Failure fix.
  541. M iarray.py
  542. cc06b140502064b1330255422a419e2863198408 New test added. Failure found
  543. M main.py
  544. 5f3bf8040c4790c5e27a7874fb0aadb8aa748dcf Initial version of program was added.
  545. A iarray.py
  546. A main.py
  547. 3c3f73148e1e4e13bce95a5f6efcd69af89b52a0 .gitignore was added.
  548. A .gitignore
  549. ```
  550.  
  551. Что-бы проанализировать историю изменений между двумя коммитами нужно воспользоваться командой `git diff SHA1 SHA2`
  552. ```
  553. $ git diff d41e186ae0bc02ac0c81a1982fa1a131c47a5c25 cc06b140502064b1330255422a419e2863198408
  554. diff --git a/iarray.py b/iarray.py
  555. index 08acd73..bfe46b8 100644
  556. --- a/iarray.py
  557. +++ b/iarray.py
  558. @@ -6,7 +6,6 @@ def GetMaxCount(Arr, N):
  559. while (I < N):
  560. if (Arr[I] > Max):
  561. Max = Arr[I]
  562. - Count = 1
  563. else:
  564. if (Max == Arr[I]):
  565. Count += 1;
  566. ```
  567. Файлы сравниваются аналогично, с использованием `git diff SHA1 SHA2`
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement