π₯ ΠΠ°ΠΊ ΠΎΡΠΌΠ΅Π½ΠΈΡΡ merging git ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ Π² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ
Π§ΡΠΎΠ±Ρ ΠΎΡΠΌΠ΅Π½ΠΈΡΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Π² Git, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ "git revert". ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΌΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠΌΠ΅Π½ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π²Π½Π΅ΡΠ΅Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ°, ΠΈ ΠΎΡΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ»ΠΈΡΠ½ΠΈΠ΅. ΠΠΎΡ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ:
# ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² Π²Π΅ΡΠΊΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ»ΠΎ ΡΠ»ΠΈΡΠ½ΠΈΠ΅
git checkout Π²Π°ΡΠ°_Π²Π΅ΡΠΊΠ°
# ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΊΠΎΠΌΠΌΠΈΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ»ΠΈΡΠ½ΠΈΡ
git log
# ΠΡΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ revert ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΊΠΎΠΌΠΌΠΈΡΠ°
git revert -m 1 ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ_ΠΊΠΎΠΌΠΌΠΈΡΠ°
# ΠΠ°ΡΠΈΠΊΡΠΈΡΡΠΉΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ
git commit -m "ΠΡΠΌΠ΅Π½Π° ΡΠ»ΠΈΡΠ½ΠΈΡ"
# ΠΡΠΏΡΠ°Π²ΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ
git push origin Π²Π°ΡΠ°_Π²Π΅ΡΠΊΠ°
ΠΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΌΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠΌΠ΅Π½ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π²Π½Π΅ΡΠ΅Π½Π½ΡΠ΅ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ΠΌ, ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΈΡΡΠΎΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π²Π°ΡΠ΅ΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Git.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΠΎΡΠΌΠ΅Π½ΠΈΡΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Π² Git
ΠΠΎΠ³Π΄Π° Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ Git, Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΌΠ΅Π½ΠΈΡΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Π²Π΅ΡΠΎΠΊ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ Π²Π°ΠΌ, ΠΊΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ Ρ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Git.
1. ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΡΠ°ΡΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΠΎΡΠΌΠ΅Π½Π΅ ΡΠ»ΠΈΡΠ½ΠΈΡ, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Π°Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ. ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
git status
ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΡΠ°ΡΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, ΠΈ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½Ρ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΡΠΌΠ΅Π½ΠΎΠΉ ΡΠ»ΠΈΡΠ½ΠΈΡ.
2. ΠΡΠΌΠ΅Π½Π° ΡΠ»ΠΈΡΠ½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git revert
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΎΡΠΌΠ΅Π½ΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΠ°, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΠΎΡΠΊΠ°Ρ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git revert. ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΌΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠΌΠ΅Π½ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π²Π½Π΅ΡΠ΅Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠΌ.
ΠΠ»Ρ ΠΎΡΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ»ΠΈΡΠ½ΠΈΡ Π²Π΅ΡΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
git revert -m 1 <commit_hash>
ΠΠ΄Π΅ΡΡ <commit_hash>
- ΡΡΠΎ Ρ
Π΅Ρ ΠΊΠΎΠΌΠΌΠΈΡΠ°, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π²Π΅ΡΠ½ΡΡΡΡΡ. Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ Ρ
Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ°, Π²Π²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
git log
ΠΡΠ±Π΅ΡΠΈΡΠ΅ Ρ
Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ° ΡΠ»ΠΈΡΠ½ΠΈΡ Π²Π΅ΡΠΎΠΊ ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ <commit_hash>
Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ git revert
.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅Π½ΠΈΡΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΎΠΉ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
git revert -m 1 <commit_hash>
ΠΠ΄Π΅ΡΡ <branch_name>
- ΡΡΠΎ ΠΈΠΌΡ Π²Π΅ΡΠΊΠΈ, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ»ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΡΠ»ΠΈΡΠ½ΠΈΠ΅.
3. ΠΡΠΌΠ΅Π½Π° ΡΠ»ΠΈΡΠ½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git reset
ΠΡΡΠ³ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠΌΠ΅Π½ΠΈΡΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ - ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git reset. ΠΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π΅ΡΠ½ΡΡΡ HEAD ΠΈ Π²Π΅ΡΠΊΡ ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ ΠΊΠΎΠΌΠΌΠΈΡΡ.
ΠΠ»Ρ ΠΎΡΠΌΠ΅Π½Ρ ΡΠ»ΠΈΡΠ½ΠΈΡ Π²Π΅ΡΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
git reset --hard <commit_hash>
ΠΠ΄Π΅ΡΡ <commit_hash>
- ΡΡΠΎ Ρ
Π΅Ρ ΠΊΠΎΠΌΠΌΠΈΡΠ°, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π²Π΅ΡΠ½ΡΡΡΡΡ.
4. Π£Π΄Π°Π»ΡΠ΅Π½ΠΈΠ΅ Π²Π΅ΡΠΊΠΈ ΡΠ»ΠΈΡΠ½ΠΈΡ
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ΄Π°Π»ΠΈΡΡ Π²Π΅ΡΠΊΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈ ΡΠ»ΠΈΡΠ½ΠΈΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
git branch -d <branch_name>
ΠΠ΄Π΅ΡΡ <branch_name>
- ΠΈΠΌΡ Π²Π΅ΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠ΄Π°Π»ΠΈΡΡ.
ΠΡΠΈΠΌΠ΅ΡΡ
ΠΠΎΠΏΡΡΡΠΈΠΌ, Ρ Π²Π°Ρ Π΅ΡΡΡ Π΄Π²Π΅ Π²Π΅ΡΠΊΠΈ: "feature" ΠΈ "master". ΠΡ ΡΠ»ΠΈΠ»ΠΈ Π²Π΅ΡΠΊΡ "feature" Π² Π²Π΅ΡΠΊΡ "master", Π½ΠΎ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ, ΡΡΠΎ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ.
Π§ΡΠΎΠ±Ρ ΠΎΡΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΎ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git revert
, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
git revert -m 1 <commit_hash>
ΠΠ΄Π΅ΡΡ <commit_hash>
- Ρ
Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ° ΡΠ»ΠΈΡΠ½ΠΈΡ Π²Π΅ΡΠΎΠΊ.
ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git reset
Π΄Π»Ρ ΠΎΡΠΌΠ΅Π½Ρ ΡΠ»ΠΈΡΠ½ΠΈΡ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
git reset --hard <commit_hash>
ΠΠ΄Π΅ΡΡ <commit_hash>
- Ρ
Π΅Ρ ΠΊΠΎΠΌΠΌΠΈΡΠ° ΠΏΠ΅ΡΠ΅Π΄ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ΠΌ Π²Π΅ΡΠΎΠΊ.
ΠΠ°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΠΎΡΠΌΠ΅Π½Π° ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ²Π»ΠΈΡΡΡ Π½Π° ΠΈΡΡΠΎΡΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π±ΡΠ΄ΡΡΠ΅ ΠΎΡΡΠΎΡΠΎΠΆΠ½Ρ ΠΈ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΡΠ΄Π΅Π»Π°Π½Ρ.
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠ° ΡΡΠ°ΡΡΡ ΠΏΠΎΠΌΠΎΠ³Π»Π° Π²Π°ΠΌ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΎΡΠΌΠ΅Π½Ρ ΡΠ»ΠΈΡΠ½ΠΈΡ Π² Git. Π£Π΄Π°ΡΠΈ Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ!