У меня есть это в моем .bash_aliases
файле:
alias gitlearn='cd; rm -rf gitlearn; mkdir gitlearn; cd gitlearn; git init; git commit --allow-empty -m"Add empty, initial commit"'
Каждый раз, когда я хочу, чтобы изучить или попрактиковаться с мерзавцем, я просто введите gitlearn
, и я в ~/gitlearn/
со свежей репо, и первым пустой commit, что позволяет переустановить ваш первый фактический фиксатор, так как вам нужно указать фиксацию до первой фиксации, которую вы хотите переместить при перезагрузке.
Затем я просто использую командные команды linux, чтобы быстро выполнить любую настройку, в которой я нуждаюсь. Я тестировал стратегии ветвления и слияния, чередуя коммиты (соблюдая даты) полностью независимых друг от друга, не связанных между собой репозиториев в новой, общей концепции третьего репо, концепции тестовой ветви, изучал, что происходит с выходом git log --graph
с действительно сумасшедшими слияниями, с командами (например, ужасными filter-branch
) на временных клонах и даже выяснил, что на самом деле требуется (которое вы можете создать для себя), чтобы иметь действительное git-репо.
Отправляясь в пустом каталоге:
~/gitlearn$ ls .git
ls: cannot access .git: No such file or directory
~/gitlearn$ git st
fatal: Not a git repository (or any parent up to mount point /home/gfixler)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
Это все, что вам нужно сделать GIT репозиторий:
~/gitlearn$ mkdir -p .git/objects .git/refs
~/gitlearn$ echo 'ref: refs/heads/master' >.git/HEAD
~/gitlearn$ git st
# On branch master
#
# Initial commit
#
~/gitlearn$ tree .git
.git
|-- HEAD
|-- objects
`-- refs
2 directories, 1 file
Я буду делать такие вещи, как это:
~/gitlearn$ echo something >afile
~/gitlearn$ git add afile
~/gitlearn$ git st
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: afile
#
~/gitlearn$ git commit -m'Add something to afile'
[master 3f78112] Add something to afile
1 file changed, 1 insertion(+)
create mode 100644 afile
~/gitlearn$ echo another thing >>afile
~/gitlearn$ git diff
diff --git a/afile b/afile
index deba01f..fa8eba8 100644
--- a/afile
+++ b/afile
@@ -1 +1,2 @@
something
+another thing
~/gitlearn$ git add --update .
~/gitlearn$ git commit -m'Add another thing to afile'
[master 5c639d9] Add another thing to afile
1 file changed, 1 insertion(+)
~/gitlearn$ git checkout -b feature
Switched to a new branch 'feature'
~/gitlearn$ echo >>afile
~/gitlearn$ echo feature 1 >>afile
~/gitlearn$ git diff
diff --git a/afile b/afile
index fa8eba8..be87597 100644
--- a/afile
+++ b/afile
@@ -1,2 +1,4 @@
something
another thing
+
+feature 1
~/gitlearn$ git add --update .
~/gitlearn$ git ci -m'Add feature 1 to afile'
[feature 25b20ab] Add feature 1 to afile
1 file changed, 2 insertions(+)
~/gitlearn$ git log --all --graph --decorate --oneline
* 25b20ab (HEAD, feature) Add feature 1 to afile
* 5c639d9 (master) Add another thing to afile
* 3f78112 Add something to afile
* 70e28a0 Add empty, initial commit
~/gitlearn$
и т. Д., Пока я не пойму понятие. Это такой быстрый способ экспериментировать. Я использую также много псевдонимов, которые ускоряют его еще больше, и, например, с git add --update .
Я просто наберу git add --u<TAB> .
, поэтому большинство команд имеют тенденцию быть менее 15 нажатий клавиш.
Я рекомендовал это нескольким людям сейчас. Это был действительно отличный способ быстро приспособиться к основам, а в последнее время - к более глубоким внутренним функциям git.
Что касается пультов, я имитирую их все время локально.mkdir remote.git; cd remote.git; git init --bare; cd ..; git clone remote.git local; cd local
, и теперь вы находитесь в «локальном» репо, которое думает об одном в «remote.git» как о его происхождении. Здесь нет никакой разницы в типичных настройках, за исключением того, что голый «remote.git» на самом деле находится на вашем локальном диске. Внутри «локального» вы можете нажимать, извлекать и извлекать из «remote.git», и он будет функционально таким же, как то, что вы делаете между локальным и физически удаленным репо.
Используйте битбакет как удаленный репозиторий, он бесплатный. Тогда у вас может быть две копии на вашем компьютере ... – sashkello
Лучший способ узнать - это просто rtfm, но наверняка не задавайте такие вопросы на форумах. –
git не может быть осуществлен – prusswan