[git과 관련된 일화] 브랜치는 업데이트할 것이 있으면 항상 만들어주어야한다. push 하기전에 늘 pull이 되어있는 상황이어야한다.
이유는? 상대방 것이 업데이트 되어있지 않으면 충돌이 일어나는 문제가 있기 때문에 , 최신의 상태로
업데이트 해주고 내것을 push해준다. 그렇지 않으면 충돌이 일어난다.
한 팀원이 pull은 출석 체크 처럼 해주어야한다라고 말하면서 했다.
하지만, 좀 환경이 익숙해지고 난 뒤에 git master환경에서 승인할 것인지 거절할 것인지 전, 후 비교해보면서
git이 굉장히 편리한 도구라는 것을 알게 되었다.
* 작업공간은 항상 분리해서 해줘야 한다.
그래서 조심해야하는 것이 내 것이 업데이트할 것이 있는데 , 동기화가 안되어있어서 pull을 하면 내꺼가 다 날아간다.
인성 형님 왈:
동기화 작업이 필요하다. (pull ) -> 깃 브랜치 어려움
직접해본 결과
.git에서 config파일에 있었음.
git pull origin master하니까 원격 레퍼지토리( 그냥 저장공간 ) 에서 나의 로컬폴더로 가져온다는 뜻.
=> push전에 선행되어야하는 작업이다.
git status
git add .
git commit -m "ff" => 변경된 확정파일을 로컬 헤더에 저장.
로컬의 마스터에서 pull을 당겨받고 최신의 상태에서 branch를 만들어서 변경 사항들을 저장한다.
-> 그리고 push를 할 때는 git add를 해서 로컬의 저장소를 업데이트 해주고,
-> git commit -m "변경사항에대한내용" //header에 장착.
->
결론
= 깃 브랜치로 만들고 파일 추가-> 깃 add -> 깃 commit -> 깃 push (로컬원격과 같은 이름)
궁금한점 추가
1번, 로컬에 새로운 브랜치 fjf를 만들었다 (jwjw의 것을 pull해왔다라 치자 거기에 있는 거로 했으니까 ) 2번, 새로운 txt파일을 넣었다. ( 사진첨부 g.txt )++ 내용 업데이트 3번, git add. git status확인 git commit 후 4번, jwjw (원격)에 쳐넣음. 하지만 안됨.
//미친 코드다 외우자.
<button class ="btn" > 클릭하세요 </button>
<script>
var btn = document.querySelector('.btn');
var mainTilte = document.querySelector('#main-title');
function btnClickHandler() //기능이다. 이를 버튼과 연결해줘야함.
{
mainTitle.style.background = 'dodgerblue'; //css 직접 조작.
}
btn.addEventListner('click', btnClickHandler);
or
btn.onclick = btnClickHandler ;
하지만 차이가 있다 .
함수 여러개 가능하다. addEventLister자체가 메소드기 때문에
btn.addEventListner('click', btnClickHandler);
btn.addEventListner('click', btnClickHandler1);
btn.addEventListner('click', btnClickHandler2);
onclick 3번을 지정할 수 있지만 속성을 3으로 바꿔버린다.
btn.onclick = btnClickHandler;
btn.onclick = btnClickHandler1;
btn.onclick = btnClickHandler2; //이거로 덮어써버리는 결과가 나온다?
1시 43분 인강 꼭 다시 듣기.
btn활성화 클릭이벤트가 들어올 때
일단 queryselector로 다가져온 뒤 , 메뉴 엑티브가 활성화 되어있는 놈이 있다면 비활성화 시키고 클릭하는놈은 활성화 시켜버린다.
Animal.java
public class Animal {
String name;
public void setName(String name) {
this.name = name;
}
}
Dog.java
public class Dog extends Animal {
public void sleep() {
System.out.println(this.name+" zzz");
}
public static void main(String[] args) {
Dog dog = new Dog();
dog.setName("poppy");
System.out.println(dog.name);
dog.sleep();
}
}
Dog클래스는 Animal클래스를 상속받았다. 즉, Dog는 Animal의 하위 개념이라고 할 수 있겠다. 이런 경우 Dog는 Animal에 포함되기 때문에 "개는 동물이다"라고 표현할 수 있다.
자바는 이러한 관계를 IS-A 관계라고 표현한다. 즉 "Dogis aAnimal" 과 같이 말할 수 있는 관계를 IS-A 관계라고 한다
Animal dog = new Dog(); //개(설계도)로 만든 객체는 동물 자료형이다
Dog dog = new Animal();
// 컴파일 오류: 부모 클래스로 만든 객체는 자식 클래스의 자료형으로 사용할 수 없다.
// 자식 자료형 X = new 부모클래스(); // 부모(설계도)로 자식의 자료형을 만들 수 없다.
//
Animal dog = new Dog();
// 부모 자료형으로 만든 개는 개의 설계도로 만들었다.
즉, 부모 자료형으로 dog1을 만들지만, 자식 설계도이다. 그래서 자식만 가지고 있는 sleep을 쓰면 컴파일 에러가 난다. 이때 형변환을 해주면 쓸 수 있다.
즉, 부모 타입 A = new 자식 , 부모() 만 가능하다.
Root r = new 1,2,3,4() 된다. 로 외우자.
상속의 완전한 이해 완료..
하지만, 아직 멤버객체에 대한 이해 필요.
객체변수(인스턴스 및 클래스 변수)는 오버라이딩 되지 않는가? 네, 객체 타입을 따라갑니다.
public class jungwon {
static class A
{
int d = 1;
int method() {
return 3;
}
}
static class B extends A
{
int d = 2;
int method() {
return 3;
}
}
static class C extends B
{
int d = 3;
int method() {
return 3;
}
}
public static void main(String[] args) {
A a = new C();
B b = new C();
C c = new C();
System.out.println(a.method() + b.method() + c.method());
System.out.println(a.d + b.d + c.d);
}
}
정답은: 9 , 6이다.
// 변수는 참조타입을 따른다.