基本的Git操作 – 从git clone到git push和分支删除
关于这篇文章
-
- Gitを使用した開発の一連の流れを説明します
- 「これを知っていれば基本的な開発は行える!」というレベルの内容を記載しており、「コミットを取り消したい」「Gitの設定内容を変更したい」などより詳細な内容は本記事では扱っておりません
目的读者
-
- Gitを使用して開発を始めたい方
- Gitの基本的な使い方を一通り学びたい方
Git中的两个仓库(远程仓库和本地仓库)
在讲解Git的命令时会用到远程仓库和本地仓库这两个词,所以首先来解释一下这两个词的含义。这里只是简单介绍了基本概念,并没有详细说明,希望您能大致理解Git是如何管理代码的。
库的整体情况
仓库是
不仅限于Git,但在版本管理系统中,仓库是用来存放需要进行版本管理的文件和目录的地方。由于英文中”repository”的直译是”収納場所”,所以这个形象比较容易理解。
远程仓库是什么?
这是一个在某个服务器上创建和管理的仓库,开发团队中所有成员都可以共享。
参考:远程工作
本地仓库是
这是在每个开发者的个人电脑(本地环境)上创建并仅在该本地环境中管理的代码库。您可以进行源代码的版本控制,而无需担心自己对代码的更改会影响其他开发者,也无需担心其他开发者对代码的更改会对您产生影响。
除非在本地存储库中的更改被应用到远程存储库(后述),否则将不会在远程存储库中反映。
除非将在远程存储库中的更改合并到本地存储库(后述),否则将不会在本地存储库中反映。
代码库在远程和本地分离的好处。
-
- ローカルリポジトリでは自分が開発を行いやすいようにブランチ分けを行ったり、好きなタイミングでコミット・マージを行うことが可能です
-
- (Subversionなど集中型バージョン管理システムでは、自分のコミットが即座にリモートリポジトリにも反映されるため、部分的にコミットなどが行いづらくなります)
-
- リモートリポジトリ(サーバ)に接続していない状態でもコミット可能なため、開発環境の制約を抑えることもできます
- (集中型バージョン管理システムでは、リモートリポジトリのサーバに接続していない限りはコミットが行えないため、開発環境に制約が生まれてしまいます)
在Git中的开发流程
以下步骤将说明此图片的内容。
假设已经安装了Git。
-
- 从远程仓库创建本地仓库(副本)
-
- 在本地仓库中创建分支
-
- 将本地更改暂存
-
- 提交更改
-
- 将本地仓库的更改同步到远程仓库
-
- 将远程仓库的更改导入到本地仓库
- 删除分支(在功能开发完成后执行)
从远程仓库创建(复制)到本地仓库。
从服务器上获取远程代码库,并创建本地代码库。
在本地环境中执行命令的目录下,将会创建一个物理文件夹。
如果连接到远程存储库的方式是使用https的话
git clone https://[ホスト名またはIPアドレス]/[グループ]/[リポジトリ].git
如果在example.com上存在名为sample的组的远程仓库test
git clone https://example.com/sample/test.git
如果连接到远程存储库的方式为ssh的话。
请事先生成并注册用于SSH连接的密钥。参考:在使用Github时的示例。
git clone ssh://git@[ホスト名またはIPアドレス]/[グループ]/[リポジトリ].git
在本地儲存庫中創建分支。
创建一个feature/#1分支,并切换到所创建的feature/#1分支。
git checkout -b feature/#1
使用git checkout -b命令将产生与下列两个命令执行相同的结果。
git branch feature/#1
git checkout feature/#1
如果将远程仓库指定为源分支的派生源,(在这里我们将远程仓库的develop分支作为派生源)。
git checkout -b feature/#1 origin/develop
您可以使用以下指令来显示当前分支列表(包括远程仓库和本地仓库的所有分支)。
git branch -a
将在本地修改的内容进行分段处理
在本地修改文件内容后,您可以使用以下命令将文件在舞台上(作为提交的对象)进行提交。
如果有多个要提交的文件,请使用半角空格分隔的方式指定文件名或目录名。
git add ファイル名またはディレクトリ名
在以下目錄中,如果有更改內容,則會將test1-1.txt、test2-1.txt和test2-2.txt這3個文件進行暫存(staging)。
sample1
┗test1-1.txt
┗test1-2.txt
sample2
┗test2-1.txt
┗test2-2.txt
git add sample1/test1-1.txt sample2
尽管”git add .”可以将所有有更改的文件进行暂存,但由于可能会将意外的文件暂存,因此基本上最好是指定文件名或目录名。
通过以下命令,您还可以查看当前的暂存状态。
git status
提交
如果希望在vim中描述提交日志的情况下
git commit
Vim可以启动并记录日志。
如果想要在git commit命令的选项中描述提交日志的话
git commit -m "doHogeメソッドを削除"
提交记录将以一行显示。
如果想通过git commit命令的选项,在多行中记录提交日志的话
git commit -m "doHogeメソッドを削除" -m "doHogeメソッドを使用していないため"
您可以通过以下命令查看当前使用分支的过去提交的内容。
git log
将本地仓库的更改同步到远程仓库。
git push origin feature/#1
如果远程仓库中不存在feature/#1分支,则将创建一个新的feature/#1分支。
如果远程仓库中存在feature/#1分支,则现有的feature/#1分支状态将被更改。
把远程仓库的更改同步到本地仓库。
git pull origin develop
git pull origin develop执行以下两个命令将产生相同的结果。
git fetch origin develop
git merge origin/develop
原始开发指的是远程仓库,origin/develop指的是远程跟踪分支。
参考:Git分支功能-远程分支
在功能开发结束后删除分支。
删除本地存储库
git branch feature/#1 --delete
在这一阶段,远程仓库的feature/#1不会被删除。
在本地存储库中同步删除的远程存储库分支。
将包括在遥远的跟踪分支中,远程存储库中被删除的分支在内的最新远程存储库的内容反映到远程跟踪分支中。
git fetch --prune
你可以通过git branch -a来确认分支已被删除。
请提供中文的参考。
Git的基本原理和功能
Git和Subversion在结构上存在显著差异|Git的分支与Subversion的分支完全不同
以5分钟深入理解分布式版本控制系统Git
远程操作技巧
【针对初学者】关于git fetch、git merge、git pull的区别
Git的分支功能 – 远程分支