こんにちは、私の名前はセルゲイエフセルゲイ別名です gurugray..。私は現在、ManyChatのメンターフロントエンドコミュニティです。Yandex School of Interface Development(SRI)で、リリースサイクルとバージョン制御システムを操作するためのルールに関する私の講義をご覧いただけました。
Gitやプロジェクトリポジトリを操作するときに使用するライフハックやベストプラクティスについてよく尋ねられます。
この投稿は、私が毎日使用する基本的な設定とテクニックを説明する試みです。レシピはノウハウのふりをしませんが、リポジトリでの作業の日常の衛生状態を習得するのに役立ちます。
1.新鮮なものを使用する
私はコンソールで作業することを好みます。この投稿のコマンドとアドバイスのほとんどは、コンソールクライアントに関するものです。これは一種の最初の推奨事項です。リポジトリでの日常の作業にはコンソールクライアントを使用し、定期的に更新してください。新しい機能とバグ修正は、コンソールクライアントで最初に行われます。
> git --version
git version 2.27.0
2.機器を調整します
現在の会社と提携していない公開メールを自分で設定します。これにより、さまざまなリポジトリのIDを微調整でき、デフォルト設定について考える必要がなくなります。GitHubは、職場を変更した場合でもアクティビティを表示します。
> git config --global user.email "gurugray@yandex.ru"
> cd company_project
> git config user.email "gurugray@manychat.com"
vim' , :
> git config --global core.editor "code --wait"
3. autocomplete
, . , .
Git , shell, , — .
4.
(aliases) . - , ssh — , ( , ). — , , .
Git SVN, , "b" — .
> git config --global alias.st "status -sb"
> git config --global alias.co "checkout"
> git config --global alias.ci "commit -a"
> git config --global alias.b "branch"
5.
— , , . . Git :
> git log --oneline --graph --branches
, , --pretty=format:
:
> git log --graph --date=short --branches --pretty=format:'%C(yellow)%h%C(reset) %ad | %C(75)%s%C(reset) %C(yellow)%d%C(reset) [%an]'
6.
, git+ssh , http :
> git clone git@github.com:gurugray/gurugray
7.
«» ( , pull-request' ) upstream
push' origin
. , , ssh-, :
> git clone git://github.com/gurugray/gurugray -o upstream
8.
pull, . , , . , :
> git fetch --all
> git rebase my_feature upstream/master
9.
, , :
> git fetch --all
> git checkout -b my_feature upstream/master
> git branch -D master
10.
, --fixup=
> git commit -m "Feature A is done"
> ...
> git commit -m "Feature B is done"
> git commit --fixup=fe2f857
> git log --oneline
a5050e7 fixup! Feature A is done
633e33f Feature B is done
...
fe2f857 Feature A is done
cb5db88 Previous commit
11.
— , «» , :
> git config --global alias.fixlast "commit --all --amend --no-edit"
12.
rebase
--autosquash
--fixup
, , guidline', pull-request' .
> git rebase -i --autosquash cb5db88
pick fe2f857 Feature A is done
fixup a5050e7 fixup! Feature A is done
pick 733e2ff Feature B is done
> git log --oneline
633e33f Feature B is done
...
5778cbb Feature A is done
cb5db88 Previous commit
13.
reset
, - «» :
> git reset @~4
> git commit --all
14. push
, --force
-f
, :
> git push origin +feature
15.
reflog
- — , :
> git reflog
> ...
> git reset --hard FOUND_HASH
, .
Git' , .