В данной статье мы рассмотрим операцию patch. Это текстовый файл, который содержит код и метаданные о коммитах (ID коммита, дату, сообщение и т.д.). Мы можем создать патч из коммитов, а другие разработчики могут принять их в свой репозиторий.
Для более глубокого понимания принципа работы данной операции рассмотрим небольшой пример.
Предположим, что мы создаём в классе Developer.java новый метод и хотим отправить их в удалённый репозиторий. Данные изменения могут быть приняты или нет.
Вот наш класс Developer.java:
package net.proselyte.gittutorial.company;
/**
* Simple JavaBean domain object that represents a Developer.
*
* @author Eugene Suleimanov
* @version 1.0
*/
public class Developer {
private String firstName;
private String lastName;
private String specialty;
private Integer salary;
private Team team;
public Developer() {
}
public Developer(String firstName, String lastName, String specialty, Integer salary) {
this.firstName = firstName;
this.lastName = lastName;
this.specialty = specialty;
this.salary = salary;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getSpecialty() {
return specialty;
}
public void setSpecialty(String specialty) {
this.specialty = specialty;
}
public Integer getSalary() {
return salary;
}
public void setSalary(Integer salary) {
this.salary = salary;
}
public Team getTeam() {
return team;
}
public void setTeam(Team team) {
this.team = team;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Developer developer = (Developer) o;
if (firstName != null ? !firstName.equals(developer.firstName) : developer.firstName != null) return false;
if (lastName != null ? !lastName.equals(developer.lastName) : developer.lastName != null) return false;
if (specialty != null ? !specialty.equals(developer.specialty) : developer.specialty != null) return false;
if (salary != null ? !salary.equals(developer.salary) : developer.salary != null) return false;
return team != null ? team.equals(developer.team) : developer.team == null;
}
@Override
public int hashCode() {
int result = firstName != null ? firstName.hashCode() : 0;
result = 31 * result + (lastName != null ? lastName.hashCode() : 0);
result = 31 * result + (specialty != null ? specialty.hashCode() : 0);
result = 31 * result + (salary != null ? salary.hashCode() : 0);
result = 31 * result + (team != null ? team.hashCode() : 0);
return result;
}
@Override
public String toString() {
return "First Name: " + firstName +
"\nLast Name: " + lastName +
"\nSpecialty: " + specialty +
"\nSalary: " + salary +
"\nTeam: " + team.getTeamName();
}
}
Добавим и подтвердим изменения:
git add --all
git commit -m "Adding methods equals and hashCode to class Developer"
[master 07a23fa] Adding methods equals and hashCode to class Developer
1 file changed, 26 insertions(+)
Для создания патча необходимо использовать следующую команду:
git format-patch -1
0001-Adding-methods-equals-and-hashCode-to-class-Develope.patch
Данная команда создаёт файл .patch внутри текущей директории. Для подтверждения данных изменений в git предусмотрена следующая команда:
git apply 0001-Adding-methods-equals-and-hashCode-to-class-Develope.patch
После этого мы можем просмотреть изменения в репозитории с помощью команды, указанной ниже:
git diff
На этом мы заканчиваем изучение команды patch.
В следующей статье мы рассмотрим механизм управления ветками git.