>php教程 >PHP开发 >Git 튜토리얼의 기본 조작에 대한 자세한 설명

Git 튜토리얼의 기본 조작에 대한 자세한 설명

黄舟
黄舟원래의
2016-12-16 15:00:111136검색

기본 Git 작업

Git의 임무는 프로젝트의 스냅샷을 생성 및 저장하고 후속 스냅샷과 비교하는 것입니다. 이 장에서는 프로젝트의 스냅샷을 생성하고 제출하는 명령을 소개합니다.

프로젝트 명령 가져오기 및 만들기

git init

git init를 사용하여 디렉터리에 새 Git 저장소를 만듭니다. 이 작업은 언제든지 어느 디렉터리에서나 수행할 수 있으며 완전히 현지화되어 있습니다.
디렉토리에서 git 실행 init을 실행하면 Git 저장소를 생성할 수 있습니다. 예를 들어 runoob 프로젝트를 생성합니다.

$ mkdir runoob
$ cd runoob/
$ git init
Initialized empty Git repository in /Users/tianqixin/www/runoob/.git/
# 在 /www/runoob/.git/ 目录初始化空 Git 仓库完毕<BR>


이제 프로젝트에 .git 하위 디렉터리가 생성된 것을 볼 수 있습니다. . 이는 프로젝트에 대한 모든 스냅샷 데이터가 저장되는 Git 저장소입니다.

ls -a
.. .git

git clone

Git 저장소를 로컬로 복사하려면 git clone을 사용하세요. 항목을 직접 보거나 변경할 수 있도록 합니다.

다른 사람과 프로젝트를 공동 작업해야 하거나 코드를 보기 위해 프로젝트 복사본을 만들고 싶은 경우 해당 프로젝트를 복제할 수 있습니다. 복사하려는 프로젝트에 대해

git clone [url]

[url] 명령을 실행하면 됩니다.

예를 들어 Github에서 프로젝트를 복제하는 경우:

$ git clone git@github.com:schacon/simplegit.git
Cloning into &#39;simplegit&#39;...
remote: Counting objects: 13, done.
remote: Total 13 (delta 0), reused 0 (delta 0), pack-reused 13
Receiving objects: 100% (13/13), done.
Resolving deltas: 100% (2/2), done.
Checking connectivity... done.

복제가 완료된 후 simplegit 디렉터리가 생성됩니다. 현재 디렉토리:

$ cd simplegit/ $ ls README Rakefile lib

위 작업은 프로젝트의 모든 기록을 복사합니다.

$ ls -a
.    ..    .git   README  Rakefile lib
$ cd .git
$ ls
HEAD    description info    packed-refs
branches  hooks    logs    refs
config   index    objects


기본적으로 Git은 제공된 URL에 표시된 프로젝트 이름에 따라 로컬 프로젝트 디렉터리를 생성합니다. . 일반적으로 URL의 마지막 / 뒤에 프로젝트 이름이 있습니다. 다른 이름을 원할 경우 명령 뒤에 원하는 이름을 추가할 수 있습니다.

기본 스냅샷

Git의 임무는 프로젝트의 스냅샷을 생성 및 저장하고 후속 스냅샷과 비교하는 것입니다. 이 장에서는 프로젝트의 스냅샷을 생성하고 제출하는 명령을 소개합니다.

git add

git add 명령은 파일을 캐시에 추가할 수 있습니다. 예를 들어 다음 두 파일을 추가합니다.

$ touch README
$ touch hello.php
$ ls
README hello.php
$ git status -s
?? README
?? hello.php
$


git status 명령은 프로젝트의 현재 상태를 보는 데 사용됩니다.

다음으로 git add 명령을 실행하여 파일을 추가합니다.

$ git add README hello.php

이제 git을 실행합니다. 상태를 보면 이 두 파일이 추가된 것을 확인할 수 있습니다.

$ git status -s
A README
A hello.php
$

새 프로젝트에서는 모든 파일을 추가하는 것이 일반적입니다. git add 명령을 사용하여 현재 프로젝트의 모든 파일을 추가할 수 있습니다.
이제 README 파일을 수정합니다:


$ vim README
<pre class="brush:php;toolbar:false">
<p>在 README 添加以下内容:<b># Runoob Git 测试</b>,然后保存退出。</p>
<p>再执行一下 git status:</p>
$ git status -s
AM README
A hello.php


"AM" 상태는 다음을 의미합니다. 파일을 캐시에 추가한 이후로 변경되었습니다. 변경 후에는 git add 명령을 실행하여 캐시에 추가합니다.

$ git add .
$ git status -s
A README
A hello.php

곧 있을 스냅샷에 변경 사항을 포함하려는 경우 제출되었습니다. git add를 실행해야 합니다.

git status

git status를 사용하여 마지막 커밋 이후 변경 사항이 있는지 확인하세요.

간단한 결과 출력을 얻기 위해 이 명령을 시연할 때 -s 매개변수를 추가했습니다. 이 매개변수가 추가되지 않으면 자세한 출력은 다음과 같습니다.

$ git status
On branch master
  
Initial commit
  
Changes to be committed:
 (use "git rm --cached <file>..." to unstage)
  
 new file:  README
 new file:  hello.php


git diff

git diff를 실행하면 git status 실행 결과에 대한 자세한 정보를 볼 수 있습니다.

git diff 명령은 캐시에 기록된 변경 사항과 수정되었지만 아직 캐시에 기록되지 않은 변경 사항의 차이를 보여줍니다. git diff에는 두 가지 주요 애플리케이션 시나리오가 있습니다.

1. 캐시되지 않은 변경 사항: git diff

2. 캐시된 변경 사항 보기: git diff --cached

3. 캐시되지 않은 변경 사항: git diff HEAD

4. 전체 diff 대신 요약 표시: git diff --stat

hello.php 파일에 다음을 입력합니다. 🎜 >

<?php
echo &#39;菜鸟教程:www.runoob.com&#39;;
?>


$ git status -s
A README
AM hello.php
$ git diff
diff --git a/hello.php b/hello.php
index e69de29..69b5711 100644
--- a/hello.php
+++ b/hello.php
@@ -0,0 +1,3 @@
+<?php
+echo &#39;菜鸟教程:www.runoob.com&#39;;
+?>


git status는 마지막 커밋을 표시합니다. 업데이트된 변경 사항 또는 캐시에 기록된 변경 사항과 git diff는 이러한 변경 사항이 한 줄씩 표시됩니다.


다음으로 git diff --cached의 실행 효과를 확인해 보겠습니다.


$ git add hello.php 
$ git status -s
A README
A hello.php
$ git diff --cached
diff --git a/README b/README
new file mode 100644
index 0000000..8f87495
--- /dev/null
+++ b/README
@@ -0,0 +1 @@
+# Runoob Git 测试
diff --git a/hello.php b/hello.php
new file mode 100644
index 0000000..69b5711
--- /dev/null
+++ b/hello.php
@@ -0,0 +1,3 @@
+<?php
+echo &#39;菜鸟教程:www.runoob.com&#39;;
+?>


git commit


git add 명령을 사용하여 원하는 스냅샷의 내용을 캐시에 쓰고, git commit을 실행하여 캐시의 내용을 웨어하우스에 추가합니다.


Git은 제출할 때마다 이름과 이메일 주소를 기록하므로 첫 번째 단계는 사용자 이름과 이메일 주소를 구성하는 것입니다.


$ git config --global user.name 'runoob'

$ git config --global user.email test@runoob.com

다음으로 캐시에 쓰고 모든 변경 사항을 hello.php에 커밋합니다. 이 첫 번째 예에서는 -m 옵션을 사용하여 명령줄에 커밋 주석을 제공합니다.


$ git add hello.php
$ git status -s
A README
A hello.php
$ $ git commit -m &#39;第一次版本提交&#39;
[master (root-commit) d32cf1f] 第一次版本提交
 2 files changed, 4 insertions(+)
 create mode 100644 README
 create mode 100644 hello.php


이제 스냅샷을 녹화했습니다. git status를 실행하면:


$ git status

# 브랜치 마스터에서
아무 것도 없습니다. 커밋(작업 디렉토리 정리)

以上输出说明我们在最近一次提交之后,没有做任何改动,是一个"working directory clean:干净的工作目录"。
如果你没有设置 -m 选项,Git 会尝试为你打开一个编辑器以填写提交信息。 如果 Git 在你对它的配置中找不到相关信息,默认会打开 vim。屏幕会像这样:

# Please enter the commit message for your changes. Lines starting
# with &#39;#&#39; will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
#  (use "git reset HEAD <file>..." to unstage)
#
# modified:  hello.php
#
~
~
".git/COMMIT_EDITMSG" 9L, 257C

   


如果你觉得 git add 提交缓存的流程太过繁琐,Git 也允许你用 -a 选项跳过这一步。命令格式如下:

git commit -a

我们先修改 hello.php 文件为以下内容:

<?php
echo &#39;菜鸟教程:www.runoob.com&#39;;
echo &#39;菜鸟教程:www.runoob.com&#39;;
?>

   再执行以下命令:


git commit -am &#39;修改 hello.php 文件&#39;
[master 71ee2cb] 修改 hello.php 文件
 1 file changed, 1 insertion(+)

   

git reset HEAD

git reset HEAD 命令用于取消已缓存的内容。

我们先改动文件 README 文件,内容如下:

# Runoob Git 测试
# 菜鸟教程

hello.php 文件修改为:

<?php
echo &#39;菜鸟教程:www.runoob.com&#39;;
echo &#39;菜鸟教程:www.runoob.com&#39;;
echo &#39;菜鸟教程:www.runoob.com&#39;;
?>

   现在两个文件修改后,都提交到了缓存区,我们现在要取消其中一个的缓存,操作如下


$ git status -s
 M README
 M hello.php
$ git add .
$ git status -s
M README
M hello.pp
$ git reset HEAD -- hello.php 
Unstaged changes after reset:
M hello.php
$ git status -s
M README
 M hello.php

   

现在你执行 git commit,只会将 README 文件的改动提交,而 hello.php 是没有的。

$ git commit -m &#39;修改&#39;
[master f50cfda] 修改
 1 file changed, 1 insertion(+)
$ git status -s
 M hello.php

   

可以看到 hello.php 文件的修改并为提交。

这时我们可以使用以下命令将 hello.php 的修改提交:

$ git commit -am &#39;修改 hello.php 文件&#39;
[master 760f74d] 修改 hello.php 文件
 1 file changed, 1 insertion(+)
$ git status
On branch master
nothing to commit, working directory clean

   

简而言之,执行 git reset HEAD 以取消之前 git add 添加,但不希望包含在下一提交快照中的缓存。

git rm

git rm 会将条目从缓存区中移除。这与 git reset HEAD 将条目取消缓存是有区别的。 "取消缓存"的意思就是将缓存区恢复为我们做出修改之前的样子。

默认情况下,git rm file 会将文件从缓存区和你的硬盘中(工作目录)删除。

如果你要在工作目录中留着该文件,可以使用 git rm --cached:

如我们删除 hello.php文件:

$ git rm hello.php 
rm &#39;hello.php&#39;
$ ls
README

   

不从工作区中删除文件:

$ git rm --cached README 
rm &#39;README&#39;
$ ls
README

   

git mv

git mv 命令做得所有事情就是 git rm --cached 命令的操作, 重命名磁盘上的文件,然后再执行 git add 把新文件添加到缓存区。

我们先把刚移除的 README 添加回来:

$ git add README

然后对其重名:

$ git mv README README.md
$ ls
README.md

   

 以上就是Git 教程之基本操作详解的内容,更多相关文章请关注PHP中文网(www.php.cn)!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.