每天有效工作的15个基本Git技巧

嗨,我叫谢尔盖耶夫谢尔盖 古格里... 我目前是ManyChat的Mentor FrontEnd社区。您可能已经在Yandex界面开发学院(SRI)上看到了我的有关发布周期和版本控制系统使用规则的讲座。



我经常被问到在使用Git和项目存储库时,我会使用哪种生活技巧或最佳实践。



这篇文章试图解释我每天使用的基本设置和技术。食谱并不伪装成专有技术,但可以帮助您掌握使用存储库的日常卫生。





1.使用新鲜



我更喜欢在控制台中工作,本文中的大多数命令和建议将与控制台客户端有关。这是第一个建议-使用控制台客户端进行存储库的日常工作并定期更新。控制台客户端主要介绍新功能和错误修复。



> git --version
git version 2.27.0


2.调音仪器



设置一个与当前公司无关的公开电子邮件。这将使您可以微调不同存储库的标识,而不必考虑默认设置,即使您更改工作地点,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' , .




All Articles