[오늘 공부한 부분]

1. Java 참조 타입과 참조 변수 

2. Java 배열


1. 배열이란?

  • 같은 데이터의 타입을 연속된 공간에 나열하고 각 데이터에 인덱스를 부여해놓은 자료구조
  • 인덱스(Index)는 배열 항목에 붙인 번호로 0부터 시작하여 (배열길이 -1)까지 범위를 갖는다.
  • 배열은 같은 타입의 데이터만 저장할 수 있다. (int 배열은 int 값만 저장 가능하고, String 배열은 String 값만 저장)
  • 한 번 생성된 배열은 길이를 늘리거나 줄일 수 없다. 
  • 만약 배열의 길이를 수정하고 싶다면 새로운 배열을 생성하고 기존 배열 항목을 새 배열로 복사해야 한다.

 

2. 배열 선언

① 형식 1 : 타입[] 변수;

                 ex) int[ ] intArray;

② 형식 2 : 타입 변수[];

                 ex) int intArray[ ];

 

  • 변수 선언과 비슷한데 대괄호 [ ] 가 추가된 타입이다. 
  • 위에서 intArray가 배열 변수이다.
  • 배열도 객체이므로 힙 영역에 생성되고 변수는 힙 영역의 배역 객체를 참조한다.
  • 만약 참조할 배열 객체가 없다면 배열 변수는 null값으로 초기화 된다.

 

3. 배열 생성

① 값 목록으로 배열 생성 :타입[] 변수 = {값0, 값1, 값2, 값3, ....};

  • 주의할 점 : 배열 객체를 생성할 때 배열 변수를 이미 선언한 후에는 다른 실행문에서 중괄호를 사용한 배열 생성이 허용되지 않는다.
  • 배열 변수를 미리 선언한 후 값 목록들이 결정되는 상황이라면, new연산자를 사용한다. 변수 = new 타입[ ] {값1, 값2, 값3...};

 

ex1)

String [ ] names = {"제니", "리사", "로제"};

names[0] = "제니";

 

ex2)

String[ ] names = null;

names = new String[ ]{"제니", "리사", "로제"};

 

② new 연산자로 배열 생성 : 타입[] 변수 = new 타입[길이];

  • 값의 목록을 가지고 있지 않지만 향후 값들을 저장할 배열을 미리 만들고 싶을때 사용한다.

ex)

int [ ] scores = new int[3];

scores[0] = 80;

scores[1] = 90;

scores[2] = 100;

 

 

4. 배열 길이

  • 배열에 저장할 수 있는 전체 항목의 개수
  • 배열변수.length(); 를 통해 길이를 알 수 있다.
  • 배열의 length 필드는 for문을 사용해서 배열 전체를 루핑할 때 유용하다.

 

5. 명령 라인 입력

 

https://kephilab.tistory.com/40

  • main()메소드의 매개값인 String[ ] args 가 왜 필요할까?
  • 명령 라인(명령 프롬프트)에서 위 코드를 java명령어로 실행하면 JVM은 길이가 0인 Strign배열을 먼저 생성하고 main()메소드를 호출할 때 매개값으로 전달한다.
  • main()메소드는 String[ ] args 매개 변수를 통해서 명령 라인에서 입력된 데이터의 수(배열의 길이)와 입력된 데이터(배열의 항목 값)를 알 수 있게 된다.

예제 1

 

  • 위 예제 1을 그냥 실행하면 '값의 수가 부족합니다' 라는 결과 값을 얻는다.
  • 실행할 때 매개값을 주지 않았기 때문에 길이 0인 String 배열이 매개값으로 전달되어 if문의 조건이 true가 되었기 때문이다.

 

 

같은 예제를 인텔리제이 [Run] - [Run Confiurations] 를 통해 arguments 값 (즉, 매개값) 을 10 20 으로 준다면 '10+20=30' 이라는 결과값을 도출할 수 있다.

 

명령 프롬프트에서 실행한다면 아래와 같은 형식으로 입력하면 된다.

[JDK 11이후 버전] java -p . -m 프로젝트파일명/pakage명.소스코드명 매개값1 매개값2

 

 

6. 다차원 배열

  • 행과 열로 구성된 2차원 배열

 

http://www.tcpschool.com/c/c_array_twoDimensional

 

int[ ][ ] scores = new int [2][3];

scores.length // 2

scores[0].length // 2

scores[1].length // 3

 

예시)

int[ ][ ] scores = { {95, 80}, {92, 96} };

int score = scores[0][0]; //95

int score = scores[1][1]; //96

 

 

7. 객체를 참조하는 배열

  • String[ ] 배열는 각 항목에 문자열이 아니라, String 객체의 번지를 가지고 있다.
  • 즉, String[ ] 배열은 String 객체를 참조하게 된다.
  • String[ ] 배열 항목 간에 문자열을 비교하기 위해서는 == 연산자 대신 equals()메소드를 사용해야 한다.
  • ==연산자는 객체의 번지를 비교하기 때문에 문자열을 비교하는데 사용할 수 없다.
  • 이 내요은 [05] Java 참조 타입 글 참고하기 ! https://leejincha.tistory.com/80

 

8. 배열 복사

배열은 한 번 생성하면 크기를 바꿀 수 없기 때문에 새로운 배열을 생성해서 항목 값을 복사해 주어야 한다.

 

① for문으로 배열 복사

 

② System.arraycopy()로 배열 복사

 

https://jwprogramming.tistory.com/120

 

 

 


연습문제 1 > for 문을 이용해서 주어진 배열의 항목에서 최댓값을 구하세요.

연습문제 2 > 중첩 for 문을 이용해서 주어진 배열의 전체 항목의 합과 평균값을 구하세요.

※ 위의 문제에서 count 변수를 선언한 이유는 평균을 구하기 위함이다. count++를 통해 for문이 돌 때마다 횟수를 얻음으로써 전체 객체 수를 구할 수 있다.

'Coding > Java' 카테고리의 다른 글

[09] Java 클래스 - 객체 지향 프로그래밍  (2) 2022.11.22
[08] Java 열거 타입  (0) 2022.11.12
[06] Java 참조 타입  (0) 2022.11.11
[05] Java 조건문과 반복문  (0) 2022.11.11
[04] Java 연산자와 연산  (0) 2022.11.11

 

[오늘 공부한 부분]

1. Java 참조 타입과 참조 변수 

2. Java 배열

 


1. 참조 타입

  • 참조 타입(reference type) : 객체(object)의 번지를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스를 말한다.
  • 기본 타입(primitive type)인 byte, char, short, int, long, float, double, boolean 변수는 실제 값을 변수 안에 저장한다.
  • 하지만 참조 타입 변수는 메모리의 번지를 변수 안에 저장한다. = 번지를 통해 객체를 참조한다는 뜻 ! 
  • 정리하자면, 기본 타입의 변수와 객체는 스택 영역에 한번에 저장되고, 참조 타입은 변수는 스택영역에 그리고 객체는 힙 영역에 저장된다고 생각하면 된다.

 

https://www.naukri.com/learning/articles/data-types-in-java-primitive-and-non-primitive-data-types/

 

 

2. 메모리 사용 영역(Runtime Data Area)

 

https://www.quora.com/How-many-types-of-memory-areas-are-allocated-by-JVM

 

※ Some of the memory areas allocated by JVM are:


1. ClassLoader : It is a component of JVM used to load class files.
2. Class (Method) Area : It stores per-class structures such as the runtime constant pool, field and method data, and the code for methods.
3. Heap : Heap is created a runtime and it contains the runtime data area in which objects are allocated.
4. Stack : Stack stores local variables and partial results at runtime. It also helps in method invocation and return value. Each thread creates a private JVM stack at the time of thread creation.
5. Program Counter Register : This memory area contains the address of the Java virtual machine instruction that is currently being executed.
6. Native Method Stack : This area is reserved for all the native methods used in the application.

 

메소드 영역 (Method Area) : JVM이 시작할 때 생성, 모든 스레드가 공유하는 영역

힙 영역 (Heap Area) : 객체와 배열이 생성되는 영역. 객체를 참조하는 변수나 필드가 없다면 그 객체를 쓰레기로 취급하고 쓰레기 수집기(Gabage collector)를 실행시켜 자동으로 제거한다. 따라서 개발자는 따로 객체를 제거할 필요가 없다.

JVM 스택 영역 (JVM Stack) :

  • 메소드를 호출할 때마다 프레임을 추가하고 메소드가 종료되면 해당 프레임을 제거하는 동작을 수행.
  • 변수는 선언된 블록 안에서만 스택에 존재하고 블록을 벗어나면 스택에서 제거된다.
  • 기본 타입 변수는 스택 영역에 직접 값을 가지고 있지만, 참조 타입 변수는 스택 영역에 힙 영역의 객체 주소를 가진다.(다시 한번)

 

3. 참조 변수의 ==, != 연산

  • 기본 타입 변수의 ==, != 연산은 변수의 값이 같은지 아닌지를 조사하지만
  • 참조 타입 변수의 ==, != 연산은 동일한 객체를 참조하는지 다른 객체를 참조하는지 알아볼 때 사용된다.
  • 참조 타입 변수 값 = 힙 영역 객체의 주소 (따라서 번지 값을 비교하는 것.)

 

4. null 과 NullPointerException

  • null(널) 값 : 참조 타입의 변수가 힙 영역의 객체를 참조하지 않는다는 뜻
  • null 값도 초기값으로 사용할 수 있기 때문에, null로 초기화된 변수는 스택 영역에 생성된다.
  • 예외(Exception) : 자바 프로그램 실행 도중 발생하는 오류
  • NullPointerException는 가장 많이 발생하는 예외 중 하나 - 참조 변수를 잘못 사용했을 때 발생! 

예를 들면, 참조 변수의 값이 null이라면 객체가 존재하지 않기 때문에 필드나 메소드를 사용하는 코드를 실행하면 발생한다.

int[] intArray = null;
intArray[0] =10; // NullPointerException 발생 !

String[] str = null;
System.out.println("총 문자수:" + str.length()); //NullPointerException 발생 !

 

 

5. String 타입

  • 자바는 문자열 리터럴(값)이 동일하다면 String 객체를 공유하도록 되어있다.
  • 만약 문자열이 같은 새로운 객체를 만들고 싶다면 객체 생성 연산자인 new 연산자를 사용한다.
  • 아래의 예시와 같이 문자열 리터럴로 생성하느냐 new 연산자로 생성하느냐에 따라 비교 연산자의 결과는 달라진다. 
  • 동일한 String 객체이건 다른 String 객체이건 상관 없이 내부 문자열을 비교하고 싶을 때에는 equals()메소드를 사용한다.
String name1 = "신용권";
String name2 = "신용권";

String name1 == String name2 (true)

String name3 = new String("신용권");
String name4 = new String("신용권");

String name1 == String name2 (false)
String name3 == String name4 (false)

name3.equals(name4) (true) // 문자열 값 자체는 같기 때문에 !

 

 

equals() vs hashCode() vs System.identityHashCode() 비교

 

  • equals() : equel은 두 객체의 참조값을 비교하는 Method
  • hashCode() : 객체의 해시코드(정수로 구성된 주소값)를 반환하는 Method, 객체의 주소를 int로 변환해서 반환한다. 그러나 문자열이 같은 경우 같은 정수값을 도출한다.
  • System.identityHashCode() : 객체 번짓수 값을 확인해주는 Method. 객체 자체를 비교하려면 이 메소드를 사용하는 것이 좋다.

 

[정리 !]

  • String 타입의 변수가 서로 다른 객체를 가지더라도 문자열만 같으면 hashCode() 값이 같다.
  • String 타입 변수의 주솟값 즉, 번짓수는 System.identityHashCode()를 통해 분별할 수 있으므로, 이 함수를 적용해야 서로 다른 객체를 갖고있는지 판단 할 수 있다.

 

Object's hashCode() method does not have a unique value for each object because it can be overridden in subclasses. This method can be overridden to express that the properties of the objects are the same. For example, if the hashcode of a String is, it means that the string is the same even if the objects are different.

On the other hand, System.identityHashCode() cannot be overridden and returns a unique hashCode of the object. It is recommended to use this method if you want to compare the objects themselves.

 

[ 출처 ]

https://codechacha.com/ko/java-hashcode/

https://codechacha.com/en/java-system-identityhashcode/

 

'Coding > Java' 카테고리의 다른 글

[08] Java 열거 타입  (0) 2022.11.12
[07] Java 배열  (0) 2022.11.11
[05] Java 조건문과 반복문  (0) 2022.11.11
[04] Java 연산자와 연산  (0) 2022.11.11
[03] Java 시작하기(설치), 변수와 타입  (1) 2022.11.11

[오늘 공부한 부분]

1. Java 조건문 - if문, switch문 

2. Java 반복문 - for문, while문, do-while문


1. 제어문

  • 자바 프로그램은 메소드의 시작 중괄호에서 끝 중괄호 까지 위에서 아래로 실행하는 흐름을 갖고 있다.
  • 이러한 실행 흐름을 개발자가 원하는 방향으로 바꿔주는 것을 (흐름)제어문 이라고 한다.
제어문 조건문   if 문   if(조건식){...} 형태로 조건식이 true이면 중괄호 내부를 실행
  swich 문 switch(변수){case 값1:... case 값2:..dfault:...}형태로 변수의 값에 따라 코드를 실행
반복문   for 문  for(초기화식;조건식;증감식){...}형태로 조건식이 true가 될 때까지만 중괄호 내부 반복되고 반복할 때마다 증감식이 실행된다. 초기화식은 사용할 변수를 초기화 해준다. 주로 지정된 횟수만큼 반복할 때 사용
  while 문  while(조건식){...}형태로 조건식이 true가 될 때까지만 중괄호 내부 반복
  do-while 문  do{...}while(조건식) 형태로 중괄호 내부를 먼저 실행하고 그다음 조건식이 true가 되면 다시 중괄호 내부를 반복 실행

 

[ + 추가 ] 

  • break 문 : for문, while문, do-while문 내부에서 실행되면 반복을 취소
  • contiune 문 : for문, while문, do-while문 내부에서 실행되면 증감식 또는 조건식으로 돌아감 

 

 

2. 조건문

① if문

  • if문의 기본 원리는 조건식이 true 이면 블록을 실행하고 false이면 실행하지 않는 것 !
  • if문에서 괄호{}블록은 생략하지 않고 작성하는 것이 가독성이 좋고 버그 발생을 줄일 수 있다.

 

출처 : https://www.geeksforgeeks.org/java-if-else-if-ladder-with-examples/
if문 예제 1부터 100까지 3의 배수 총합을 구하시오.

 

② switch문

  • 변수가 어떤 값을 갖느냐에 따라 실행문이 선택되는 조건 제어문이다.
  • 때문에 같은 코드를 작성하더라도 if문보다 코드가 간결하다.
  • switch문은 괄호 안의 변수 값과 동일한 값을 같는 case로 가서 실행문을 실행
  • 만약 괄호 안의 변수 값과 동일한 값을 갖는 case가 없으면 default로 가서 실행문을 실행한다. default는 생략 가능하다.

 

출처 : https://www.geeksforgeeks.org/

 

 

※ 다음은 while 문, switch문, Scanner, nextLikne()을 사용한 예시이다.

1. 먼저 불리언 변수를 true로 설정해 주고, Scanner 와 Integer.parseInt(scanner.nextLine())을 통해 입력된 정수값을 받는다.

2. 그리고 Switch문을 통해 변수값에 따른 실행문을 실행한다.

3. 여기서 case 끝에 붙어 있는 break; 는 다음 case를 실행하지 않고 switch문을 빠져나가기 위함이다.

 

 

3. 반복문

  • for문과 while문은 서로 변환이 가능하다.
  • for문은 반복 횟수를 알고 있을 때 주로 사용하고, while문은 조건에 따라 반복할 때 주로 사용한다.
  • 제어문 블록 실행이 완료되었을 경우 조건문의 경우 정상 흐름으로 돌아오지만,
  • 반복문의 경우 제어문 처음으로 다시 되돌아가 반복 실행한다. 이를 루핑(looping)이라고 한다.

① for 문

 

출처 : https://www.geeksforgeeks.org/

 

  • 주어진 횟수 만큼 실행문을 반복 실행할 때 사용한다.
  • 어떤 경우에는 초기화식이 둘 이상 있을 수 있고, 증감식 역시 둘 이상 있을 수 있다. - 쉼표로 구분!
  • 초기화식에서 선언된 변수는 for문 블록 내부에서 사용되는 로컬변수 이기 때문에 for문 밖에서는 사용할 수 없다.
  • 초기화식에서 루프 카운터 변수로 float타입을 사용할 수 없다.

※ 중첩 for 문

중첩 for문 예시1
중첩 for문 예시2

※ 중첩 for 문 : for문은 다른 for문을 내포할 수 있는데, 이 경우 바깥쪽 for문이 한 번 실행할 때마다 중첩된 for문은 지정된 횟수만큼 돌다가 다시 바깥쪽 for문으로 돌아간다.

 

 

② while 문

 

출처 : https://www.geeksforgeeks.org/

 

  • 조건식이 true일 경우 계속해서 반복하는 반복문
  • 조건식에는 boolean타입 변수나 true/false값을 산출하는 어떤 연삭식이든 올 수 있다.
  • 만약 while(true){...} 로 된다면 무한 루프를 돌게 되는데, 이때는 while문을 종료시키기 위해 변수값을 false로 만들거나, break문을 이용하는 방법이 있다.

while문과 if문을 이용한 예제 1
while문과 if문을 이용한 예제 2

 

③ do - while 문

 

출처 : https://www.geeksforgeeks.org/

 

  • 블록 내부의 실행문을 우선 실행하고 실행 결과에 따라서 반복 실행을 게속할지 결정 하는 반복문
  • 작성시 반드시 while()뒤에 ; 세미콜론을 붙여야 한다!

 

④ breack 문

  • 반복문인 for문, while문, do-while문, switch문을 실행 중지할 때 사용
  • 대게 if문과 같이 사용되어 if문의 조건식에 따라 for문과 while문을 종료할 때 사용
  • 만약 반복문이 중첩되어 있을 경우 가장 가까운 반복문만 종료하고 바깥쪽 반복문은 종료하지 않음 
  • 따라서 바깥쪽 반복문도 종료시키려면 바깥쪽 반복문에 이름(라벨)을 붙여야함.

Outter 이라는 라벨을 붙여준 덕분에 안쪽에서도 break 할 수 있다

 

 

⑤ continue 문

  • 블록 내부에서 continue문이 실행되면 for문의 증감식 또는 while문, do-while문의 조건식으로 이동
  • 반복문을 종료하지 않고 계속 반복을 수행한다는 점이 break와 다르다.
  • if문과 함께 쓰여 특정 조건을 만족하는 경우에 그 이후의 문장을 실행하지 않고 다음 반복으로 넘어간다.

for문, if문, continue문 을 사용해서 10이하의 짝수 프린트하기

 

'Coding > Java' 카테고리의 다른 글

[07] Java 배열  (0) 2022.11.11
[06] Java 참조 타입  (0) 2022.11.11
[04] Java 연산자와 연산  (0) 2022.11.11
[03] Java 시작하기(설치), 변수와 타입  (1) 2022.11.11
[02] 생활코딩 Java 입문 강의 정리 (2)  (0) 2022.11.04

 

[오늘의 회고]

 

1. 어려웠던 부분 : 이론적인 부분은 책을 읽으면 이해가 되는데, 연습문제를 풀려고 하면 배운 개념들을 어떻게 활용해야 할지 잘 잡히지 않았다. 일단 해설지를 보고 어떤 식으로 코드를 짜야하는지 이해했다. 내일 아침에 해설지 없이 다시 문제를 풀어봐야겠다.

 

2. 느낀 점 : 조건문은 그래도 이해가 쉬운데, 반복문이 생각보다 어려운 것 같다. 특히, 중첩 반복문 부분에서 로컬 변수 2개를 설정하여 별을 찍는 부분은 구조적인 이해가 더 필요했다. 방법은 그저 많이 알고리즘 문제를 풀어보고 코드를 많이 쳐보는 수밖에 없는 것 같다. 이제 겨우 3일 차 자바 공부일 뿐이니까 좌절하지 말고, 그러려니 하고 넘기는 자세가 필요한 것 같다.

 

3. 새로 알게 된 내용 : 중첩 반복문과 switch 조건문에 대해 처음 알게 되었다. 실제로 현업에서 잘 쓰일지는 모르겠지만, 기본 개념인 만큼 무조건 이해하고 넘어가야 할 것 같다.

 

4. 마지막 한 줄 (셀프칭찬) : 최대한 오늘 배운 개념들을 검증된 사이트에서 영어로 작성된 글을 통해 다시 이해하려 했다. 아직 어색하지만 이런 습관들이 쌓여서 탄탄한 기반이 될 것은 분명하다! 오늘 참고한 사이트 :  https://www.geeksforgeeks.org/

 

5. 내일 할 일 : chap04 연습문제 다시 풀어보기, chap05, git 2주 차 강의 TIL작성, 오늘 TIL작성, git3 주차 강의

 


 

[오늘 공부한 부분]

1. Java 조건문 - if문, switch문 

2. Java 반복문 - for문, while문, do-while문

 

https://leejincha.tistory.com/79

 

[05] Java 조건문과 반복문

[오늘 공부한 부분] 1. Java 조건문 - if문, switch문 2. Java 반복문 - for문, while문, do-while문 1. 제어문 자바 프로그램은 메소드의 시작 중괄호에서 끝 중괄호 까지 위에서 아래로 실행하는 흐름을 갖고

leejincha.tistory.com

 

[오늘 공부한 부분]

 

1. git 기본 개념

2. git 두 가지 error 해결

  • error1 - 'Sourcetree 응용 프로그램이 예기치 않게 종료되었습니다.'
  • error2 - Refreshing Remote Repositories Failed

1. git 기본 키워드 정리

 

① 버전 관리: 프로젝트 상태가 변경되는 정보를 알고 있다는 것! Git 은 가장 널리 쓰이는 버전관리 도구 중에 하나로 commit 을 사용해서 버전이 달라지는 것을 관리할 수 있다.

 

ⓩ git 초기화(git initialize) : 컴퓨터에 있는 프로젝트를 Git 이 관리하는 프로젝트로 만들 수 있다. 깃초기화 작업 후엔 해당 파일에 .git 폴더가 생성되는 것을 확인 할 수 있다. git 초기화는 처음에 단 한번만 해 주면 된다.

 

③ commit : 현재 프로젝트의 상태를 찰칵 📸 저장하는 것.

  • 누가(author), 언제 commit 했는지의 정보와 프로젝트 변경 내용알 수 있다.
  • 작업내역이 어떤 것인지 알아볼 수 있게 적는 메시지를 'commit 메시지'라고 한다. ->협업과정에서 커밋메시지를 잘 쓰는 것도 중요!

 

④ add (혹은 staging, 스테이징) : commit 에 반영할지 안할지는 파일 단위로 선택할 수 있다. commit 에 반영할 파일을 선택하는 것. 작업 내역을 저장하기 위해서는 add - commit 만 하면 된다.

 

ⓢ commit history : commit 한 순서대로 리스트. 역사!

 

⑥ repo : 'Git으로 관리되는 프로젝트' 를 Git 에서는 repo(리포, repository 리포지토리의 약자) 라고 한다. 내 컴퓨터에 저장되어있는 리포지토리를 로컬 repo(local repository), Github 처럼 다른 곳에서 접속할 수 있는 공간에 저장되어있는 것을 원격 repo(remote repository) 라고 한다.

 

⑦ Tracking(추적) : 로컬 repo 와 원격 repo 를 연결하는 것

 

⑧ push : 로컬 repo 의 commit 들을 원격 repo 에 반영하기(push)! 밀어넣기. 원격 repo 에 없는 즉,새로운 commit 내역을 모두 원격 repo 에 한 번에 반영한다.

 

⑨ pull : 원격 repo 의 commit 들을 로컬 repo 로 반영하기(pull)! 땡겨오기. 로컬 repo 에 없는 즉,새로운 commit 내역을 모두 로컬 repo 에 한 번에 반영한다.

 

⑩ clone : 원격 repo 를 내 컴퓨터에 가져와서 초기 repo 세팅하는 것을 clone(복제하기)!

 

출처는 사진에 !

 

 

[ 정리 ]

 

1. 로컬 pc에 있는 작업물을 깃허브에 업로드 하는경우.

 

[git 초기화]

  • sourcetree 계정연결 확인
  • Create new existing locao repo
  • 목적지 경로 옆에 ... 을 클릭해서 폴더를 선택
  • 유형을 Git으로 바꿔주고 '생성하기' 버튼 클릭
  • opne local repo(double click)

[add/ staging] - [commit 메시지 작성] - [commit] - [history확인] - github에서 [원격 repo] 만들기 - [tracking] - 파일 [push]

 

2. 원격 pc에 있는 작업물 내려 받아 작업하기

 

sourcetree 계정연결 - [원격 repo]에서 원하는 파일 [clone] 

 

2. Git error 

 

① error1 - 'Sourcetree 응용 프로그램이 예기치 않게 종료되었습니다.'

 

 

처음엔 인증문제라 생각해서 정말 수두룩 빽빽 올라온 구글링 정보로 키체인 재설정 (초기화)도 해보고, 깃허브 토큰도 몇 번 재발급 받아보고 했지만 2시간 가량 낑낑된 이 에러..... 정말 쉽게 해결 하였다.

 맥과 소스트리 언어설정을 영어(US)로 바꿔주면 해결 ... 쏘 간단 .... ㅠ-ㅠ

 

  • 맥 언어 바꾸는 법 : [시스템 환경설정 ] - [언어 및 지역] - [ 왼쪽 하단 + 버튼 클릭후 영어 선택] - [기본언어 영어로 설정]
  • 소스트리 언어 바꾸는 법 : [소스트리 설정 단축키는 commamd + ] - [ preffered language 영어로 설정] 

[출처] : 

 

[for Mac]Sourcetree 응용 프로그램이 예기치 않게 종료되었습니다.

맥에서 깃을 사용할때 Sourcetree에서 자꾸 꺼지기만 하는 현상.. 검색해서 찾았는데.. 못 찾는 사람이 있을까봐 글을 남긴다. 우선 내 버전은 4.18 한글로 나오는 경우에 오류가 난대 그래서 영어로

babysunmoon.tistory.com

 

② error2 - Refreshing Remote Repositories Failed

 

 

내 로컬 repo에 있는 파일을 원격 repo로  push하는 과정에서 이런 오류가 발생했다. 오류 이유는 원격 url/path를 추가하는 과정에서 깃헙의 링크를 복붙해서 설정했어야 하는데, 강의 자료만 보고 옆 지구본을 눌러서 나타난 문제였다. 해결은 간단하게 복사한 링크를 인풋창에다 붙여넣기 하면된다.

 

③ Mac 에서 sourcetree 기본 브랜치 이름 변경하는 방법

 

 

SourceTree 기본 브랜치를 master 에서 main 으로 변경하기

 

www.lesstif.com

 

+ Recent posts