?

Log in

No account? Create an account

Previous Entry | Next Entry

Github & Co

Помимо Матлаба записалась ещё на курс обучения обработке данных, самый начальный, посмотрим что из этого выйдет.

Пока вышло сражение с командной строкой и загрузкой/скачиванием из неё файлов в/из интернета.

До собственно обработки данных дело пока не дошло. Дошло только до установки ПО и изучения рекомендованного способа командной работы над проектами, с помощью сайта Github, который хорош тем, что отслеживает изменения в документах, позволяя без труда возвращаться к ранним их версиям, создавать "ветки" проекта для соработников, и затем, опять же легко и непринуждённо, отслеживать изменения и сливать все версии воедино. Удобство подхода очевидно.

Проблема же та, что общение с сохранёнными на сайте документами происходит через интерфейс командной строки. Я вот знала, что такой есть, и что давным-давно им только и можно было пользоваться при работе с компьютером, но и только.

Поэтому теперь: а что это, а где это, а как это, а зачем у этого так много вариантов и возможных аргументов. И самое главное, а почему это не работает так, как сказано в лекции / на всяких форумах.

Хорошая для полных чайников (английская) ссыль на подробное описание начала процесса.

Но ссыли уже года два, и новая версия ПО категорически требует синхронизации интернет-проекта с комьютерным до того, как позволить загружать в интернет файлы с компьютера.

[Github, Git bash и передача данных туда-сюда]1. Создать хранилище данных в своём интернет-аккаунте (repo).

2. Создать папку для того же хранилища данных (и работы с ними) на компьютере.
3. Синхронизировать первое со вторым:
3а. Перейти в Git bash в нужную папку (cd .., cd /d/Folder/Subfolder).
3б. Активировать папку как проект git: git init. После выполнения команды ничего не видно, но компьютер знает, что это уже не просто папка, а проект.
3в. Задать адрес хранилища в сети: git remote add origin ONLINE_REPO_FULL_URL.
3г. Скопировать всё из интернет-хранилища на компьютер: git pull origin master (откуда? из origin, в котором хранится ONLINE_REPO_FULL_URL; из какой ветки его? из главной, master).
4. Работать с файлами на компьютере.
5. Сказать git, что файлы в папке проекта относятся к проекту: git add [file name] / git add . / git add -u / git add -A.
6. Записать эти файлы в проект на компьютере: git commit -m "CHANGES_DESCRIPTION".
7. Записать изменения в проект в интернете: git push.

Зачем нужны и п. 5, и п. 6, понятия не имею.

Плюс куча вариаций, которые пока тоже не знаю и до которых боюсь дотрагиваться, вдруг опять всё перестанет работать.



Без второго курса, по Матлабу, мне бы гораздо туже пришлось, потому что хотя команды и разные, логику программную никто не отменял.


*****


I have started a second Coursera course besides MatLab, that on data processing, the first of several. I don't know where it's going yet.

So far, there was no actual data processing, but software installation and some command line stuff, mainly using it to upload/download files.

The site the instructors recommend for several people working on projects at once is Github, and its plus is that it automatically keeps all previous versions of your files for you and allows you to "branch" your projects so that each collaborator works with their own branch, and then an easy way to compare the changes made and merge them back into the main, master, branch of the project. Which is obviously very convenient.

The problem is that you need to use command line to upload and download files to the site. Well, I knew there was such a thing, and I had a vague idea what it did, and that once upon a time this was the only way to operate a computer. That was all I knew.

Therefore now I am all, how, why, where, and most importantly, what have I done wrong this time (again).

A good "starting you up" guide can be found here.

The problem of the guide is that it is a couple of years old and seems the current software version works a bit differently in that it absolutely demands you synchronize your online data repository with your computer one first and foremost, and only then allows you to upload anything from your computer.

[Github, Git bash and data exchange]1. Create an online "repo".

2. Create an offline folder (preferably with the same name).
3. Synchronize both.
3a. Get Git bash to move into the offline folder (cd .., cd /d/Folder/Subfolder).
3b. Activate this folder as a git project: git init. You cannot see any changes afterward, but your computer knows it's not just a folder anymore.
3c. Tell git the repo's online address: git remote add origin ONLINE_REPO_FULL_URL.
3g. Copy everything from the online repo into the offline folder: git pull origin master (where from? origin that keeps ONLINE_REPO_FULL_URL; from what branch of origin? its main one, master).
4. Work with offline files.
5. Tell git to add the files you have worked with to the project: git add [file name] / git add . / git add -u / git add -A.
6. Commit this files to the offline project: git commit -m "CHANGES_DESCRIPTION".
7. Upload changes onto the online repo: git push.

I don't know why we need both #5 and #6.

There are also a lot of command variations I do not yet understand and I am wary of trying because what if everything stops working again.



This would have been much harder without the MatLab course, because while the commands themselves may be different, the programming logic is largely the same.

Comments

( 8 comments — Leave a comment )
evermore_spb
Aug. 9th, 2015 07:28 pm (UTC)
Не то чтобы я была против узнавания нового ради узнавания нового - но зачем тебе гит?) В общем-то, это система контроля версий, которая чаще всего используется для работы с программным кодом, а не документами вообще.
А пункты 5 и 6 - ну, add - это ты говоришь гиту, чтобы он смотрел именно на эти файлы, а на другие нет (те, к-рые не добавишь, будут помечены как unversioned). Можно ненужным сказать ignore и т.п. А коммит/отправка в локальный репозиторий это доп. шаг перед пушем в удалённый. Ты если случайно снесёшь теперь этот файл, его всё равно можно будет выудить, ибо закоммичен. Ну и удобнее, чтобы не делать сто раз push - можно все изменения собрать локально, а потом один раз запушить на сервер.
kehlen_crow
Aug. 9th, 2015 07:47 pm (UTC)
Лично мне он сейчас не нужен :). Я подозреваю, что его включили в курс в основном для удобства оценки ДР (peer evaluation и всё такое). Ну и ещё чтобы люди знали, что такое есть.

Про коммит поняла, а про add что-то не очень. Почему нужно сначала на них посмотреть, а потом только коммитить? Что умеет add чего не может сделать commit?

Казалось бы, сделал commit, потом понял, что этот файл-таки не нужен, ну и сказал опять той же командой, что нужно его игнорировать.

evermore_spb
Aug. 9th, 2015 07:59 pm (UTC)
Ых, я плохой объясняльщик) Попробую сказать исходя из внутреннего устройства. Гит - это ПО, которое ты поставила на компьютер. Ему надо как-то понимать, чего ты хочешь) Поэтому add не делает отправки никуда (ни локально, ни в репозиторий на сервере). Просто внутри гита (обычно в скрытом файлике в той же папке, но именно в гите я точно не помню) добавляется запись - вот, мол, файл abc теперь под version control'ем) Следи за его изменениями, крась его в проводнике, если что-то не закоммичено и т.п. Это add вообще в систему учёта, так сказать, не собственно коммит.
kehlen_crow
Aug. 9th, 2015 08:07 pm (UTC)
А может быть до меня туго доходит, потому что сильно непривычно.

Вот теперь понятнее стало (и ещё стало понятно, как git начитывает больше изменений в закоммиченных файлах, чем мне казалось, я сделала))) ).
fionaa
Aug. 9th, 2015 09:11 pm (UTC)
>>Что умеет add чего не может сделать commit?

commit записывает только изменения файлов, но новые не добавляет, поэтому если удалился/добавился файл, то без add не обойтись. Я обычно пишу вот так:
git add .
git commit -am "message"
kehlen_crow
Aug. 9th, 2015 09:33 pm (UTC)
commit записывает только изменения файлов, но новые не добавляет, поэтому если удалился/добавился файл, то без add не обойтись.

А если вдруг понадобится изменить расширение файла, это аналогично удалению старого + созданию нового?

(И чем -am отличается от просто -m?)
fionaa
Aug. 10th, 2015 09:34 am (UTC)
Ну по опыту могу сказать, что смена разрешения файла приравнивается к простому переименованию, поэтому не аналогично удалению/добавлению.

-am включает в себя команду git add -u
kehlen_crow
Aug. 10th, 2015 12:26 pm (UTC)
-am включает в себя команду git add -u

Это удобно, спасибо.
( 8 comments — Leave a comment )

Latest Month

November 2017
S M T W T F S
   1234
567891011
12131415161718
19202122232425
2627282930  

Tags

Page Summary

Powered by LiveJournal.com