10 pour gagner du temps et d'améliorer les compétences flux de travail Git

Selon le manuel, Git est défini comme un tracker de contenu fou, riche en fonctionnalités, mais certaines fonctionnalités sont de taille. Donc, nous venons de réutilisons plusieurs commandes pour rappeler que, alors que l'utilisation pas complètement.

https://manpages.debian.org/stretch/git-man/git.1.en.html

Astuce 1: Configuration Optimize

Git sur une approche globale, les utilisateurs et au niveau local sont hautement configurable.

https://git-scm.com/docs/git-config

Trouvez l'ordre

Chaque paramètre peut être remplacé:

$CWD/.git/config 
    ▼ ▼ ▼ 
$HOME/.gitconfig` 
    ▼ ▼ ▼ 
$HOME/.config/git/config 
    ▼ ▼ ▼ 
/etc/gitconfig 

Modifier les paramètres

Utilisez votre éditeur favori ou CLI pour modifier les fichiers de configuration:

# 全局设置 
git config --global <keypath> <value> 
# 本地设置 
git config <keypath> <value> 

Si la valeur contient un espace, vous devez être entre guillemets.

Affiche les paramètres actuels

# 显示当前设置及其来源 
git config --list --show-origin 

Une configuration utile

# 设定身份 
git config --global user.name "<your name>" 
git config --global user.email <your email> 
# 首选编辑器 
git config --global core.editor vim 
# 证书缓存 
# WINDOWS 
git config --global credential.helper manager 
# LINUX (超时时间——以秒为单位) 
git config --global credential.helper "cache --timeout=3600" 
# MACOS 
git config --global credential.helper osxkeychain 

https://git-scm.com/docs/gitcredentials

Astuce 2: Alias ​​(alias)

Créer un alias pour sauver fréquemment utilisé commande git:

# 创建别名 
git config --global alias.<alias-name> "<git command>" 
# 使用别名 
git <alias-name> <more optional arguments> 

Certains alias utiles

# 撤销上次提交 
git config --global alias.undo "reset --soft HEAD^" 
# 将暂存区更新修订到上次提交 (不改变提交信息) 
git config --global alias.amend "commit --amend --no-edit" 
# 压缩的状态输出 
git config --global alias.st "status -sb" 
# 用 GRAPH 为日志着色 
git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'" 
# 删除所有已合并的分支 
git config --global alias.rmb "!git branch --merged | grep -v '*' | xargs -n 1 git branch -d" 
# 贡献排行 
git config --global alias.rank "shortlog -n -s --no-merges" 

Astuce n ° 3: Trouvez et changement Validations

Trouvez par Validations

# 通过 commit 信息查找 (所有分支) 
git log --all --grep='<search term>' 
# 通过 commit 信息查找 (包含 reflog) 
git log -g --grep='<search term>' 

En changeant l'apparence

# 通过更新的内容查找 
git log -S '<search term>' 

Trouvez par date

# 通过日期范围查找 
git log --after='DEC 15 2019' --until='JAN 10 2020' 

Astuce n ° 4: Ajouter un gros morceau

git add <filepath> Toutes les modifications ajouteront non seulement des fichiers, - path / paramètre -p peut aussi être un bloc bloc-notes interactif.

# 补丁命令 
y = 暂存区块 
n = 不暂存这个区块 
q = 退出 
a = 暂存当前文件的此区块以及所有剩余区块 
d = 不暂存当前文件的此区块以及所有剩余区块 
/ = 查找区块 (正则表达式) 
s = 划分成更小的区块 
e = 手动编辑区块 
? = 打印帮助说明 
g = 选择要前往的区块 
j = 将区块设为未定,查看下一个未定区块 
J = 将区块设为未定,查看下一个区块 
k = 将区块设为未定,查看上一个未定区块 
J = 将区块设为未定,查看下一个区块 

https://git-scm.com/docs/git-add#Documentation/git-add.txt--i

Astuce n ° 5: Stockage (Stash) change sans soumission

stash les changements en cours temporairement mises à l'écart. Sous son aide, vous pouvez revenir à l'index de l'état actuel, et pouvez ensuite appliquer les modifications ont été stockés.

Par défaut, seul le stockage des fichiers de la plage actuelle des changements, le nouveau fichier sera ignoré.

Nous pouvons créer de façon indépendante et appliquer Stash multiples.

https://git-scm.com/docs/git-stash

créer

# 创建新的 STASH 
git stash 
# 创建新的 STASH (包含未追踪的更改) 
git stash -u/--include-untracked 
# 创建新的 STASH 并命名 
git stash save "<stash name>" 
# 交互式储藏 
git stash -p 

exposer

# 列出所有的 STASH (为其他命令提供"n") 
git stash list 

Parcourir

# 浏览 STASH 内容 
git stash show 
# 浏览 STASH 差异 
git stash show -p 

application

# 应用上一个 STASH (删除 stash) 
git stash pop 
# 应用上一个 STASH (保留 stash) 
git stash apply 
# 应用特定的 STASH (n = stash 列表序号) 
git stash pop/apply stash@{n} 
# 从 STASH 创建新的分支 (n = stash 列表序号) 
git stash branch <new branch name> stash@{n} 
# 从 STASH 应用单个文件 (n = stash 列表序号) 
git checkout stash@{n} -- <filepath> 

éclaircir

# 删除特定的 STASH (n = stash 列表序号) 
git stash drop stash@{n} 
# 删除所有的 STASH 
git stash clear 

Conseil n ° 6: marche à sec (Dry Run)

Beaucoup opération git peut être destructeur, par exemple, -f propre git supprimera tous les fichiers non suivis, et ne peut être récupéré.

Pour éviter de tels résultats désastreux apparaissent, de nombreuses commandes sont prises en charge par la gestion sec, il peut être vérifié avant de produire réellement des résultats. Mais malheureusement, cette option n'utilise pas exactement la même chose:

git clean -n/--dry-run 
git add -n/--dry-run 
git rm -n/--dry-run 
# GIT MERGE 模拟 DRY-RUN 
git merge --no-commit --no-ff <branch> 
git diff --cached 
git merge --abort 

S'il vous plaît noter, git commit -n n'est pas une course à sec! Il est en fait --no-vérifier, le rôle est d'ignorer tous les pré-COMMIT / msg-githooks commettre.

Astuce 7: pression de sécurité obligatoire

Dans le cas du traitement de l'ancien commettras, créer une nouvelle tête de temps en temps et il est donc facile de gâcher les branches. git pousser --force peut couvrir la variation de distance, mais ne devrait pas faire ça!

git pousser -force est une opération destructrice et dangereuse, car elle sans conditions en vigueur, et détruira tous les autres commettras ont déjà été Submitters poussé. Cet entrepôt pour le code d'autres personnes ne sont pas nécessairement fatale, mais de changer les autres de l'histoire et l'influence est pas une bonne idée.

La meilleure option est d'utiliser git pousser --force-avec-bail.

git ne couvre pas la partie supérieure du dépôt sans condition à distance, mais il faut vérifier les modifications à distance ne sont pas disponibles localement. Dans ce cas, il échouera avec un message « info rassis » et nous dire ce que vous devez exécuter git chercher.

https://git-scm.com/docs/git-push#Documentation/git-push.txt---force-with-leaseltrefnamegt

Conseils 8: Modifier le message de commit

Commit est immuable et ne peut pas être changé. Mais vous pouvez utiliser une nouvelle révision des informations existantes COMMIT, cela remplacera le commit d'origine, ne l'utilisez pas déjà poussé la commettre.

git commit --amend -m "<new commit message>" 

https://git-scm.com/docs/git-commit#Documentation/git-commit.txt---amend

Conseils 9: révision de l'histoire

Modifiez le référentiel de code de l'histoire ne se limite pas à modifier les dernières informations de soumission, peut être modifié à l'aide rebasage git soumissions multiples:

# 提交的范围 
git rebase -i/--interactive HEAD~<number of commits> 
# 该 hash 之后的所有提交 
git rebase -i/--interactive <commit hash> 

Dans l'éditeur de configuration liste inverse tous les commettre, comme ceci:

# <command> <commit hash> <commit message> 
pick 5df8fbc revamped logic 
pick ca5154e README typos fixed 
pick a104aff added awesome new feature 

En changeant l'éditeur de contenu réel, peut fournir une solution pour git, pour illustrer comment rebasage:

# p, pick   = 使用提交而不更改 
# r, reword = 修改提交信息 
# e, edit   = 编辑提交 
# s, squash = 汇合提交 
# f, fixup  = 类似"squash",但是会丢弃提交信息 
# x, exec   = 运行命令 (其余行) 
# d, drop   = 移除提交 

Après avoir enregistré l'éditeur, git exécuter de réécrire l'histoire. e, fait une pause modifier rebasage, vous pouvez modifier l'état actuel du référentiel de code. Une fois cela fait, exécutez git rebase --continue.

Si le problème (par exemple, les conflits de fusion) processus apparaissent, nous devons commencer à nouveau, vous pouvez utiliser git rebase --abort.

https://git-scm.com/docs/git-rebase

Compétences 10: fichier de trace Archive

Vous pouvez compresser le fichier de trace référence spécifique à l'utilisation de différents formats (zip ou tar):

git archive --format <format> --output <filename> <ref> 

<Ref> peut être une branche, hachage ou commettre une étiquette.

https://git-scm.com/docs/git-archive

rappel supplémentaire: un seul tableau de bord

Il y a un raccourci que vous pouvez représenter juste d'utiliser l'branches: un seul tableau de bord -

git checkout my-branch 
# 当前分支:my-branch 
<do some git operations, e.g. adding/commiting> 
git checkout develop 
# 当前分支:develop 
git merge - 
# 将 my-branch 合并到 develop 

Équivalent à un seul tableau de bord @ {} --1.

Git - git-caisse Documentation

résumé

Git Il y a beaucoup de sujets à discuter, ici implique que gratter la surface. Dans un autre article, je veux montrer comment utiliser git bisect efficace pour mauvaise commettras, ou comment utiliser l'historique complet de toute opération par git git reflog.

Publié 18 articles originaux · Praise won 588 · Vues 1,03 millions +

Je suppose que tu aimes

Origine blog.csdn.net/hellozhxy/article/details/104750680
conseillé
Classement