Post

반응형

Servlet 설정, 예제


Servlet 이란


  • JSP는 Html 위에서 JSP 문법을 사용하는 서버Side 파일.
  • JSP와 다르게 순수 Java코드만 사용.
  • 모델1은 JSP가  Model, View, Controller 기능을 전부 수행하지만
  • 모델2는 JSP가 View, Servlet이 Controller 기능을 각 각 따로수행하는 것으로 이해했다.
  • 모델2에서 JavaBeans가 Model이라고 한다.

 

Servlet 파일 생성


  • 프로젝트 생성 후 Java Resources 폴더 오른쪽클릭-New-Servlet 클릭
  • JavaPackage, Class Name을 작성(각각 com.TestProject, HelloServlet 이라고 적음)
  • 그리고 Next를 눌러서 URL mappings 에 이름을 변경한다.
  • usr mappings 값은 java 소스코드에 접근하기 위한 urlName 이다.
  • ex ) http://localhost:8090/<ProejctName>/<urlName>

Servlet 파일 작성


  • Java에서 html 태그를 쓰기위해서 PrintWriter 객체를 사용.
  • doGet함수에서 다음과 같이 소스를 작성한다.
  • 서버를 실행시켜 http://localhost:8090/<ProejctName>/<urlName> 도메인으로 접속하면 'Hello World'가 보인다.
  • but 아래 예제를 실행하면 크롬에서는 태그 자체가 보인다.
  • response.getWriter().append("Served at: ").append(request.getContextPath());
  • 위 소스를 지우면 또 잘 보이고, html 문서 새로 만들어서 동일하게 출력하게 만들었는데도 잘된다.
  • java 파일 변환과정에서 크롬이 잘못해석하는 변환이 있는건가?싶다.

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              // TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
              
PrintWriter out = response.getWriter();
out.print(" <br>");
out.print("<html>");
out.print("<head>");
out.print("</head>");
out.print("<body>");
out.print("<p>Hello World</p>");
out.print("</body>");
out.print("</html>");
}

Servlet class 파일 확인


  • java 파일을 class 파일로 변환한 것을 확인해본다.
  • 자신의 javaProjectPath\build\classes\com\ProjectName\ 폴더안에 class 파일이 있는것을 확인할 수 있다.


반응형

'이전게시판 > JSP' 카테고리의 다른 글

JDBC로 OLACLE 접속  (0) 2018.10.22
JSP 쿠키, Session, 예외 페이지, 자바빈  (0) 2018.10.21
JSP 태그, request, response, 지시자, 액션태그  (0) 2018.10.20
Servlet 값 초기화, 리스너  (0) 2018.10.20
Servlet Get,Post 동작  (0) 2018.10.19
JSP 설치, 설정, 실행  (0) 2018.10.18

Post

반응형

JSP 설치, 설정, 실행


웹컨테이너란?


  • 웹서버에서 서블릿클래스, JSP파일을 실행시킬 수 있는 환경을 뜻한다.
  • 개발자는 jsp로 작업을 하고, 웹 컨테이너는 기계가 이해할 수 있도록 java, class, obj 파일을 만드는 역활을 한다.

웹컨테이너 환경을 제공해 주는 프로그램?


  • ApacheTomcat
  • Apache는 http웹 서버이다. 
  • Tomcat은 Web Application Service 이다. 웹 서버 기능도 할 수 있다.
  • 하지만 Apache는 정적인 데이터를 처리하고, Tomcat은 동적 데이터 처리해야 한다.
  • 목적에 따라 둘을 달리 쓰는 것이다.


Apache Tomcat 설치


  • 다운로드 링크 : https://tomcat.apache.org/
  • 나는 8.5.28 기준으로 설치하였다.
  • Zip 파일 클릭해서 다운로드 받는다.

웹컨테이너 설정


  • Server Tab이 있어야 한다. 없으면 메뉴에서 Window-Show View-Server를 찾아서 클릭한다.
  • Server Tab이 생기고 'No server are available. Click this... ' 라는 메시지가 보인다. 클릭하고 알맞은 versions 을 선택한다.
  • Apache Tomcat이 있는 폴더를 선택.
  • Server Tab에 'Tomcat v8.5 Server at localhost' 텍스트를 더블클릭하면 설정창이 뜬다. 
  • Server Locations 항목에서 'User Tomcat installation' 선택
  • Server Option 항목에서 'Publish module context to separate XML files' 선택(실제 tomcat 있는 폴더와 동기화 한다는 뜻)
  • Ports 항목에서 HTTP/1.1 Port Number를 8090으로 변경(8080은 DB 사용시 사용할 것)
  • 저장한 다음 Server Tab에 있는 디버그 아이콘 중에 Publish to the server 아이콘을 클릭. 서버와 동기화 완료.
  • 디버그 아이콘을 클릭하면 서버가 실행된다.(Start the Server)
  • 서버 실행을 확인방법은 http://localhost:8090/ 이 주소로 접속해서 tomcat 관련 페이지가 보이면 실행되는 것이다.

프로젝트 생성, JSP 파일 생성


  • 프로젝트 화면에서 오른쪽 클릭-New-Other-Dynamic Web Project 선택
  • 마지막 생성화면에서 'Generate web.xml deployment descriptor' 체크.
  • 프로젝트 생성 후 프로젝트 오른쪽 클릭-New-JSP File 클릭.
  • JSP파일은 WebContent 폴더 안에 생성되어야 한다.
  • 그러면 익숙한 html이 보인다. JSP는 html 위에서 jsp문법을 추가한 것.

JSP 파일 실행



<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
       <p>Hello JSP World!</p>
</body>
</html>

  • Project 오른쪽 마우스 클릭 후 Run As - Run on Server 클릭하면 서버가 다시 올라간다.
  • 서버 접속은 local:8090/ProjectName/jsp file name이다.
  • 페이지 소스코드 보기로 보면 jsp 문법은 보이지 않고, html만 보인다.

.java, .class 파일 확인


  • 맨처음 Apache 폴더에서 work\Catalina\localhost\<ProjectName>\org\apache\jsp 폴더에 들어가면
  • 우리가 만들었던 jsp 파일을 이용해 웹컨테이너가 java, class 파일을 만든것을 확인할 수 있다.
  • ex) D:\apache-tomcat-8.5.34\work\Catalina\localhost\testProject\org\apache\jsp

반응형

'이전게시판 > JSP' 카테고리의 다른 글

JDBC로 OLACLE 접속  (0) 2018.10.22
JSP 쿠키, Session, 예외 페이지, 자바빈  (0) 2018.10.21
JSP 태그, request, response, 지시자, 액션태그  (0) 2018.10.20
Servlet 값 초기화, 리스너  (0) 2018.10.20
Servlet Get,Post 동작  (0) 2018.10.19
Servlet 설정, 예제  (0) 2018.10.18

Post

반응형

오늘 한 일


  • To-Do List 작업
  • Java 기초 공부

오늘 느낀 점


  • To-Do List 작업할 때 css, javascript 에 익숙하지 않다보니 시간이 걸린다.
    • 한동안 이렇게 시간이 걸릴 듯.. 좌절하지 말고 조금씩 하자.
  • to-do list 저장하려면 서버가 필요한데.. 개인서버 구축하고 싶다.
  • 반응형은 나중에 찾아볼 것(일단 구현이 우선!)

내일 할 일 (계획)


  • To-Do List 개발
  • JSP


반응형

'이전게시판 > TIL' 카테고리의 다른 글

2018.12.08_TIL  (0) 2018.12.08
2018.12.07_TIL  (0) 2018.12.08
18.10.21_TIL  (0) 2018.10.21
18.10.20_TIL  (0) 2018.10.20
18.10.19_TIL  (0) 2018.10.19
18.10.18_TIL  (0) 2018.10.18
18.10.16_TIL  (0) 2018.10.16
TIL(Today I Learn) 시작  (0) 2018.10.15

Post

반응형

자바기초 정리


String


java String 선언 시 두가지 방법이 존재
String str = new String();
String srt = "value";

첫번째 방법은 String 자료형이 heap에 할당됨.
두번째 방법은 String 값이 string constant pool이라는 영역에 할당된다. 만약 이미 선언되어있다면 그 값을 가져온다.
메모리를 아끼려면 2번째 방법(String 리터널) 방법으로 사용하는게 좋을 듯..

StringBuffer 


문자열을 추가하거나 변경할 때 주로 사용한다.
String과 다른 점은 String은 문자열 연산 시 객체 생성을 하지만 StringBuffer는 한번만 객체 생성이 된다.
또 String 보다 메모리 사용량도 많고 속도도 느다고 한다.
(일단 같은 문자열을 length() 함수로 출력했을 때 메모리는 같았다.)


String, StringBuffer, StringBuilder의 차이점


String은 메모리공간이 변하지 않는다. 그래서 문자열을 붙이면, 그 문자열을 참조한다. 그래서 문자열 연산이 많을 경우 성능이 좋지 않다.
StringBuffer, StringBuilder는 문자열 연산이 있을 때 크기를 변경해 문자열을 변경한다. 그래서 연산이 많을 때 사용하면 좋다.
둘의 차이점은 StringBuffer는 동기화를 지원하지만 StringBuilder는 멀티스레드 환경에서 사용하면 위험하다.

문자열 연산 시 StringBuffer가 더 효과있는지 확인하기 위해 테스트해보았다.
테스트 결과 문자열 연산 시 StringBuffer가 String보다 5배 더 빨랐다.

package Example;
import java.text.SimpleDateFormat;
public class HelloWorld {
       public static void main(String args[])
       {
              String str = new String("Hello Java");
              String nowTime = getCurrentTime("YYYY.MM.DD. HH:mm:ssSSS");
              for(int i = 0; i < 10000; ++i)
              {
                     System.out.println(str+" Hello Java");
              }
              String nowTime2 = getCurrentTime("YYYY.MM.DD. HH:mm:ssSSS");
              
                           
              StringBuffer strBuf = new StringBuffer("Hello Java");
              String nowTime3 = getCurrentTime("YYYY.MM.DD. HH:mm:ssSSS");
                           
              for(int i = 0; i < 10000; ++i)
              {
                     System.out.println("strBuf"+"Hello Java");
              }
              String nowTime4 = getCurrentTime("YYYY.MM.DD. HH:mm:ssSSS");
              
              System.out.println("1:" + nowTime);
              System.out.println("2:" + nowTime2);
              System.out.println("3:" + nowTime3);
              System.out.println("4:" + nowTime4);
       }
       
       public static String getCurrentTime(String timeFormat)
       {
              return new SimpleDateFormat(timeFormat).format(System.currentTimeMillis());
       }
}

ArrayList


배열은 크기가 고정이지만 List는 가변이다.
원래는 Generics(<>)를 사용하지 않아 item들이 Object로 인식되어 잘못된 형변환을 하는 경우가 있었다.
현재는 자료형을 명확히 적어주기 때문에 형변환에 의한 오류가 없어졌다.

package Example;
import java.util.ArrayList;
public class HelloWorld {
       public static void main(String args[])
       {
              ArrayList<Integer> arrList = new ArrayList();
              arrList.add(2);
              arrList.add(1);
              arrList.add(4);
              arrList.add(3);
              System.out.println(arrList);
              System.out.println(arrList.get(2));             // 2번째 요소 선택(4)
              System.out.println(arrList.size());             // 크기 출력(4)
              arrList.remove(2);                                     // 2번째 요소 삭제
              System.out.println(arrList);                    // 다시 출력
                           
       }
       
}

반응형

Post

반응형

오늘 한 일


  • 내 홈페이지에 명언버튼 추가. 버튼 클릭 시 명언이 변경되도록 수정했다.
  • Java 기초 공부

오늘 느낀 점


  • 글자에 네온사인 효과를 적용하고 싶었지만, 모르는 문법이 많아서 Commit 하기 부담;;
    • css translate에 대해서 찾아보자
  • Web To-do List를 만들어보고 싶다.
  • Java 설치 에러가 나서 너무 오래걸렸다.. 에러를 줄이는 방법=>설치 포스팅을 꼼꼼히 잘보자.

내일 할 일 (계획)


  • To-Do 리스트 개발( 소스 참고보다 직접 필요한 것을 찾아가며 만들자 )
  • Java 기초 보기 ( https://wikidocs.net/book/31 )
  • 시간되면 JSP

반응형

'이전게시판 > TIL' 카테고리의 다른 글

2018.12.08_TIL  (0) 2018.12.08
2018.12.07_TIL  (0) 2018.12.08
18.10.21_TIL  (0) 2018.10.21
18.10.20_TIL  (0) 2018.10.20
18.10.19_TIL  (0) 2018.10.19
18.10.18_TIL  (0) 2018.10.18
18.10.17_TIL  (0) 2018.10.17
TIL(Today I Learn) 시작  (0) 2018.10.15

Post

반응형
TIL 시작


반응형

'이전게시판 > TIL' 카테고리의 다른 글

2018.12.08_TIL  (0) 2018.12.08
2018.12.07_TIL  (0) 2018.12.08
18.10.21_TIL  (0) 2018.10.21
18.10.20_TIL  (0) 2018.10.20
18.10.19_TIL  (0) 2018.10.19
18.10.18_TIL  (0) 2018.10.18
18.10.17_TIL  (0) 2018.10.17
18.10.16_TIL  (0) 2018.10.16

Post

반응형

Javascript 정리


html과 javascript의 차이


  • html은 있는 그대로 보여주지만 javascript는 동적으로 페이지를 보여준다.
  • 아래 예는 같은 1+1을 했지만 html은 글자로써 그대로 보여주는 반면
  • javascript는 1+1의 결과값 2를 출력한다.
<!--DOCTYPE html-->
<html>
<head>
  <meta charset="utf-8">
  <title></title>
</head>
<body>
  <script>
    document.write("1+1");
    document.write(1+1);
  </script>
  <h1>1+1</h1>
</body>
</html>

javascript event


  • html에 on으로 시작하는 속성들이 있다.
  • on으로 시작하는 속성은 javascript 이벤트를 대입해야한다.
  • onclick="alert('OK')"
  • onclick 속성은 마우스 클릭(이벤트)시 OK알람창(javascript)이 뜬다.
<!--DOCTYPE html-->
<html>
<head>
  <meta charset="utf-8">
  <title></title>
</head>
<body>
  <input type="button" value="Click button" onclick="alert('OK')">
  <input type="text" onchange="alert('changed')">
  <input type="text" onkeydown="alert('key down!')">
</body>
</html>

javascript consol


  • 크롬 웹 페이지에서 오른쪽 클릭 - 검사-console 창 뜸
  • 간단한 javascript code 를  console 창에서 테스트 할 수 있다.


데이터타입-문자열과 숫자


  • 데이터 타입이 문자열인지 숫자인지에 따라 결과가 달라진다.
  • 데이터 타입 숫자 : 1+1 = 2
  • 데이터 타입 문자 : "1"+"1"="11"


프로그래밍이란?


  • javascript는 프로그래밍 언어. html 아님.
  • 프로그램이란 순서라는 의미가 있음. 만드는사람은 프로그래머.
  • html은 시간의 순서에 따라 순서대로 작동x
  • javascript는 시간의 순서에 따라 순서대로 작동.


조건문


  • == : 값이 같은지 확인
  • === : 데이터 값이 같은지 확인
  • ex.
  • 1 == "1" : true
  • 1 === "1" : false
  • true == 1 : true
  • true === 1 : false

var target = document.querySelector('body');
if(this.value === 'night')
{
    target.style.backgroundColor = 'black';
    target.style.color = 'white';
    this. value = 'day';
} else {
    target.style.backgroundColor = 'white';
    target.style.color = 'black';
    this.value = 'night';
}

function


중복된 코드가 많아지면 function 으로 grouping 해야 소스 관리가 쉽다.

  • 함수선언
<script>
function FunctionName(arg)
{
return arg;
}
</script>

  • 사용법
<input type="button" value="click" onclick="FunctionName(value)"

객체


  • 소스코드가 커지면 function 이름의 중복이 많이 나타난다.
  • function이 중복되면 나중에 선언된 function만 남고, 먼저 선언된걸 지워버린다.
  • 객체를 사용하면 객체와 관련있는 변수, 함수를 Grouping하기 때문에 function 이름 중복을 방지할 수 있다.
  • 사용법
선언
var player = { "id":"value" }
가져오기
player.id , player.value
Method 선언
var func = {
    MethodName:function(arg){
            // 내용
    },
    MethodName2:function(arg){
            // 내용
    }
}
  • Method 사용

func.MethodName1(value);



파일로 정리하기


  • js객체 정의가 각 파일마다 정의되어있다면 소스가 복잡해진다.
  • js파일을 한 파일에 넣고 정리할 수 있다.
  • js파일 참조하기
<head> 안에 <script src = "js이름.js"></script>

jquery


  • jquery 라이브러리 포함(CDN)
  • jquery 다운로드 페이지 접속 (https://jquery.com/download/)
  • 페이지에서 CDN 검색 , 구글 CDN 클릭
  • jQuery을 찾아서 아래 script를 <head>태그 안에 넣음
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

  • jquery는 javascript로 복잡하게 적은 소스를 간단하게 변경할 수 있는 좋은 라이브러리.


반응형

Post

반응형

Git Cui Commit


Git을 사용할 폴더 만들기


Git cmd 환경은 Git Bash를 실행시키면 된다.
Bash는 시그윈을 통해 윈도우에서 Linux명령어를 사용할 수 있도록 되어있다.

mkdir [폴더이름]

폴더로 이동
cd [폴더 이름]

상위폴더로 이동
cd ../ 

Git에게 이 폴더에서 Git을 사용하겠다고 알림.
git init

ls -la
현재 폴더에 들어있는 파일목록을 보여줌.
git init 후 git 관련 폴더가 생긴것을 확인할 수 있음.

Git이 관리할 파일로 등록


파일 생성
vim filename.txt

입력모드로 설정
i

입력종료
esc

나가기
:wq (내용 저장 및 나가기)

내용보기
cat filename.txt

파일의 상태보기
git status
Untracked files 에 filename.txt 가 있다.
아직 추적하고 있지 않다는 뜻이다.

추적하라는 명령
git add filename.txt

git add 시 아래와 같은 에러가 떴다.
warning : LF will be replaced by CRLF in filename.txt.
The file will have its original line endings in your working directory

찾아보니 파일 끝줄이 LF -> CRLF로 대체되었다는 내용이다.
윈도우는 끝줄을 CRLF로 사용하고, 리눅스는 LF만 사용한다.
이것은 공동 개발자들이 멀티플랫폼 사용시에 문제가 될 수 있다고 한다.
찾아보니 커밋할 때 CRLF -> LF 변환, Checkout할 때 LF -> CRLF 로 변환해주는 설정이 있다고 한다.

git config --global core.autocrlf true

버전만들기(commit)


git 이력에 보여줄 자신의 이름을 세팅해야함,
git config --global user.name mail

파일 커밋
git commit

vim이 실행된다. Log를 적는다.위 vim 에서 작성했던것 처럼 i 를 눌려 입력모드로 변환 후 
Log를 작성한다. 다 작성하였다면 esc, :wq를 해서 나온다. 그러면 commit이 완료된다.

다시 수정 및 커밋
filename.txt 수정 후 commit 하면 안된다.
다시 git 버전관리에 등록해야한다.
git add filename.txt
git commit

git stage area


filetext.txt 을 복사한다.
cp filename.txt filename2.txt

그리고 커밋 및 로그 확인
git add filename2.txt
git commit
git log

그리고 filename.txt만 add하고 2는 add하지 않는다면
filename.txt는 stage area에 있고, filename2.txt는 working copy에 있다고 볼 수 있다.
git add 를 하면 working copy -> stage area 로 이동해서
commit 대기 상태가 된다고 보면 된다.



반응형

'이전게시판 > Git' 카테고리의 다른 글

Git Branch  (0) 2018.10.12
invalid username or password Sourcetree 해결  (0) 2018.10.12
GIT 사용 방법 정리  (0) 2018.10.12
Git 기초_1 Clone, Commit, Push (with.TortoriseGit)  (0) 2016.07.13

Post

Git Branch

[ 이전게시판/Git ] 2018. 10. 12. 22:21
반응형

Git Branch 사용법

원격저장소(Remote)


인터넷, 네트워크에 연결되어있는 저장소. 로컬 저장소와 원격저장소를 연결해서 소스코드를 백업할 수 있다.

SourceTree 메뉴에서 Repository - Add Remote 클릭.
일단 SSH말고 Http로 연결하려고 한다. URL/Path에 git 저장소 주소를 넣는다.
기본 저장소라는 의미로 Default remote를 체크한다.

원격저장소로 소스코드 올리기(Push)


Push를 누르면 로컬에 있는 파일이 올라간다.

만약 여기서 
nvalid username or password Sourcetree,
Updates were rejected because the tip of your current branch is behind
에러가 발생한다면 http://dramadramingdays.tistory.com/126 글을 참고한다.

원격저장소로 업로드


수정사항을 Commit 하면 Push에 1이 뜬다.

원격저장소와 local저장소가 하나의 차이가 있다는 뜻이다.
(origin/master가 원격저장소인데 graph에서 하나 차이일 것 이다.)

저장소 복제(Clone)


원격 저장소에 내용을 자신의 local로 가져오는 것.

Sourcetree 의 local 저장소 이름 옆에 플러스(+)를 클릭한다.
그리고 메뉴에서 Clone 클릭. 원격저장소위치, 이름 등을 적고 Clone 클릭.

협업 pull,push


1.branch에서 pull 하고 충돌나는것을 수정한다.
2.다 수정했으면 commit 한다.
3.master branch 로 이동하고 작업branch의 오른쪽마우스 클릭해서
'Merge work into current branch'를 누른다 한다.

4.작업 branch의 내용을 master로 가져왔다. 이제 push 한다.

반드시 작업 전에 pull을 해서 원격저장소 내용을 내 local로 가져온다.
작업하고 나서 push하기 전에 반드시 pull을 한다. 안하면 pull 받으라고 push 실패 뜬다.

Stash


완성하지 못한 내용을 안전한 곳으로 이동시키는 것.

working copy 에 변경된 소스코드가 있을 때 Stash 클릭.
Stash Changes? 창이 뜨면 메시지를 입력하고 OK 클릭.
우리가 작업한 내용이 Graph에 사라진것을 확인할 수 있음.
사이드바에 Stashes 를 클릭하면 우리가 아까 Stash한 코드가 보인다.
다시 불러올려면 On master; 을 오른쪽 클릭하고 'Apply Stash 'On master:'을 클릭한다.

Tag


수많은 버전 중 의미있는 버전을 기록할 때 사용.
Graph 에서 의미있는 버전의 오른쪽 마우스 클릭 후 Tag 클릭.
Tag는 원격저장소로 올리려면 Push할 때 Push all tags 체크한다.

gitgnore


버전관리에서 파일을 무시한다.

무시하려는 파일은 sourcetree 에서 working copy 에 물음표 아이콘으로 등록되어있다.
오른쪽 클릭을 해서 Ignore을 선택한다.
Ignore exact filename(s) : 해당 파일이름을 가진 파일만 무시한다.
Ignore all files with this extension : 해당 파일의 확장자를 가지면 무시한다.
.gitignore 파일이 만들어졌다.(git 환경설정파일) 커밋한다.
(패턴으로 무시하려면 glob을 찾아본다)
(gitignore.io 에 들어가서 각 환경마다 어떤 파일을 무시하는지 알아낼 수 도 있다.)

반응형

'이전게시판 > Git' 카테고리의 다른 글

Git Cui Commit  (0) 2018.10.13
invalid username or password Sourcetree 해결  (0) 2018.10.12
GIT 사용 방법 정리  (0) 2018.10.12
Git 기초_1 Clone, Commit, Push (with.TortoriseGit)  (0) 2016.07.13

Post

반응형

invalid username or password Sourcetree 해결

상황


로컬저장소와 원격저장소 동기화를 위해 Push 선택.

아이디, 비밀번호 입력 후 틀렸는지 실패해서 다시한번 시도하려고 했는데

아이디, 비밀번호 입력창이 뜨지 않아 계속

 invalid username or password 에러 발생


해결


Sourcetree 인증정보를 삭제해야한다.

C:\Users\user\AppData\Local\Atlassian\SourceTree 폴더에서
(AppData는 숨김파일이므로 숨김파일 표시를 한다)
passwd, userhosts 파일에 저장된 id, 비밀번호를 전부 삭제한다.

sourcetree를 재시작하고 push하면 id, pass를 입력하라는 창이 다시 뜬다.


Updates were rejected because the tip of your current branch is behind 해결



상황


local 에서 작업한 내용을 원격저장소에 올리려고 Push 하니 아래와 같은 에러 발생.

hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.

hint: See the 'Note about fast-forwards' in 'git push --help' for details.

해결


아마 새로 생성한 Repository에 Readme.md 파일이 있을 것이다.

Local 저장소 내용을 올리려고 했는데 알수없는 Readme.md 파일이 있어서
올릴수 없다고 뜨는것 같다(정확히는 모른다;; 추측)
새로운 Repository 생성 시 Initialize this repository with a  README 를 체크하지 않고 생성한다.
그리고 Repository에 Push 하면 소스코드가 잘 올라간다.


반응형

'이전게시판 > Git' 카테고리의 다른 글

Git Cui Commit  (0) 2018.10.13
Git Branch  (0) 2018.10.12
GIT 사용 방법 정리  (0) 2018.10.12
Git 기초_1 Clone, Commit, Push (with.TortoriseGit)  (0) 2016.07.13
▲ top