我开始使用Git了!

首先

以前在工作中一直使用Subversion,但是未来可能会开始使用Git,所以我打算先开始学习。

在公司的项目中,我们仍然在使用SVN。
公司内部的一部分库已经迁移到了Git,但是因为接触较少,对于Git没有经验。
在公司内,我感觉SVN的限制即将到来,可能是因为项目规模的扩大(人数和数据大小增加,包括大量的二进制数据)以及基础设施的影响(服务器性能不足)。
关于Git,听说它的分支和合并功能很强大,但对于管理二进制数据可能不适用?总的来说,可能是因为不同情况而不同选择。
至于版本管理的比较和选择,我们将在另一个机会再讨论,总之先开始尝试Git吧。

    • とにかくGitを触ってみる

 

    • GUIクライアントのTortoiseGitを触ってみる

 

    GitHubを触ってみる

我们将以…为目标继续前进。

虽然还在写作过程中,但我希望能帮助开始使用Git的人。

由于以下内容只作为个人备忘录写下,所以请原谅我的乱涂乱写。
另外,如果有任何不足或您的指正意见,请多多指教。

Git–> Git(一种版本控制系统)

所以,Git。

对于“分散版本控制”这个概念,我不是很了解,跟SVN有很大的不同吗?
我觉得可能是这样的。

SVN只能向服务器的存储库提交。
也就是说假设大家共同操作服务器的存储库。(※这被称为“集中式版本控制”)
Git采用共享存储库的概念,服务器作为共享存储库,本地作为工作存储库,可以在本地创建克隆并在克隆中自由地进行提交、分支等操作,最终将提交内容推送到共享存储库中。(※这被称为“分布式版本控制”)

那是指“分散版本管理”的意思吗!?
如果用Git的术语来归纳的话…

共有存储库:存放在文件服务器等上供大家参考的存储库。
工作目录:用于本地工作的存储库。
提交:向工作目录提交更改。
克隆:在本地创建一个工作目录。
推送:将工作目录的更改内容更新到共享存储库。
拉取:从共享存储库获取最新版本。
变基:不理解和使用可能会导致严重问题!?※需要注意!

仓库种类
仓库有两种类型。
空仓库:没有工作目录,只保存更新信息。
非空仓库:有工作目录。

如果用SVN,在进行中的工作状态或者一些小的变动上很难提交,但是如果使用Git,可以在工作目录中频繁地提交变动,并只需将最终的内容推送到共享仓库中。这样,工作目录的历史记录也会被反映出来吗?可以知道哪些内容还没被推送到工作目录吗?

创建存储库

git init

or

git init --bare --shared

创建工作目录

创建本地工作仓库。

git clone https://username@????/????/repository

提交

可以在工作目录中提交添加和修改。
这个阶段不会反映在共享仓库中。
对共享仓库没有影响,可以毫不犹豫地进行操作。

// コミット準備
// インデックスへの反映
git add <filename>
  or
git add *

// 実際にコミット
// 作業ディレクトリのみに反映
git commit -m 

按下

将更新后的工作目录内容同步到共享的代码仓库中。

// 共有リポジトリに反映
git push origin master

拔得出来

从共享仓库获取最新版本。

git pull

分支

合并

    • FastForword

 

    Non-FastForword

重新基底 (rebase)

请将其作为一个单独的项目记下来,因为将其视为合并的一种可能会有所困扰。

我第一次尝试使用Git。

不管怎样,试着摸一下。

为了熟悉起见,我首先尝试从命令行开始。
然后再来使用TortoiseGit。
TortoiseGit的安装页面上写着要安装msysGit,这是另外一种东西吗?
→实际上它们是一样的,msysGit是旧的名称,现在被称为Git for windows,所以只需安装Git for windows即可。

安装

我会参考下面的链接进行安装尝试。
由于每个页面可能会有些许差异,但请阅读它非常有帮助。

    • 私家版 Git For Windowsのインストール手順

 

    • [Sy] 「Git for Windows」でWindowsにGitをインストールする手順

 

    WindowsにGitをインストールする

1. 下载来

Windows 平台上的 Git

最新版本的现状是2.12.0 (2017/3/17)。
请下载Git-2.12.0-64-bit.exe。

启动安装程序

git_000.png

选择安装目录文件夹。

如果没有特别的变化,我们将按原计划进行。

git_001.png

选择要安装的组件。

暂时不需要在这个地方进行任何更改,我们可以继续进行。

git_002.png

选择是否将其添加至开始菜单。

如果您不想将其添加到开始菜单中,请勾选下面的”不创建开始菜单文件夹”选项。

git_003.png

选择是否使用命令提示符来使用Git。

我选择了上面的 Git Bash only。
如果需要考虑使用TortoiseGit的情况,我会再次进行评估。

git_004.png

选择如何处理改行。

关于这个问题,参考页面上的意见也存在分歧。这次我们选择最底下的“按原样结账”、“按原样提交”选项继续。

git_005.png

这将根据开发环境和项目而定,需要逐个考虑。
安装后是否可以进行更改?
如果项目的策略有所不同,我们将如何进行运营?

在终端上选择使用什么

我們可以繼續下去。

git_006.png

选择启用/禁用缓存和双重认证的设定。

我将继续向前进行。

git_007.png

10.正在安装中…

git_008.png

11.安装已完成

git_009.png

12. 启动Git Bash

请从开始菜单中执行GitBash,并确认启动。

只在本地电脑上尝试一下。

只要不在C:\的根目录使用类似rm -rf *这样的bash命令,估计电脑不会被破坏,所以我想放心地玩一下。

1. 尝试创建仓库

$ git init

已经创建了 .git 文件。

尝试添加

TEST!!
$ git add test.txt

这只是一个索引注册的状态,实际上还没有提交。

确认一下提交前的状态

$ git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

        new file:   test.txt

尝试取消添加。

$ git rm --cached test.txt
On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        test.txt

nothing added to commit but untracked files present (use "git add" to track)

刚才的索引登记已经取消了。

5. 尝试提交

完成上述的添加操作后,再执行提交操作。

$ git commit -m 'コミットのテスト ファイルの追加'
[master (root-commit) bba183d] コミットテスト ファイルの追加
 Committer: xxx xxx <xxx@xxx.co.jp>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly. Run the
following command and follow the instructions in your editor to edit
your configuration file:

    git config --global --edit

After doing this, you may fix the identity used for this commit with:

    git commit --amend --reset-author

 1 file changed, 1 insertion(+)
 create mode 100644 test.txt

似乎有一条消息说:“我已经自动获取了姓名和电子邮件地址。” 这里好像需要正确设置一下…

6. 查看日志试试看

$ git log
commit bba183d1ea41789b5737085e2e8c5b7f2fc54859
Author: xxx xxx <xxx@xxx.co.jp>
Date:   Tue Mar 28 14:53:49 2017 +0900

    コミットテスト ファイルの追加

您可以查看先前的提交。

请尝试更改用户和电子邮件地址。

因为在之前的提交中有出现消息,所以暂时设置了临时的用户和地址。

$ git config --global user.name "takezoh"
$ git config --global user.email "takezoh@hogehoge.co.jp"

我将确认内容。

$ git config --global --list
user.name=takezoh
user.email=takezoh@hogehoge.co.jp

8. 试一试反映变更

我将尝试输入先前消息中提到的命令。

$ git commit --amend --reset-author

我的vi编辑器启动了。
虽然感觉很怀念,但是我现在什么都不做,先用ZZ(Shift+zz)来结束编辑。
关于vi命令,请参考以下页面。

    viコマンド(vimコマンド)一覧(検索・置換)
[master 840b9bd] コミットテスト ファイルの追加
 1 file changed, 1 insertion(+)
 create mode 100644 test.txt

再次查看日志,发现已经反映了作者的更改。

$ git log
commit 840b9bd0b5857262d28a07cc4add0056888b9ff1
Author: takezoh <takezoh@hogehoge.co.jp>
Date:   Tue Mar 28 15:56:59 2017 +0900

    コミットテスト ファイルの追加

尝试修改文件。

修改test.txt文件并添加文本。

TEST!!
テスト //←追加

11. 检查已提交的文件的差异。

$ git diff
diff --git a/test.txt b/test.txt
index 3a3b7cb..4317b96 100644
--- a/test.txt
+++ b/test.txt
@@ -1 +1,2 @@
 TEST!!
+<83>e<83>X<83>g<81>I<81>I^M

看起来日语无法正确显示…
需要支持bash的日语吗?
Shift-JIS好像不行…
看来需要其他的解决办法…

只要是UTF-8编码,基本上就可以显示出来了。

$ git diff
diff --git a/test.txt b/test.txt
index 3a3b7cb..f60fb19 100644
--- a/test.txt
+++ b/test.txt
@@ -1 +1,2 @@
 TEST!!
+テスト!!^M

12. 尝试提交更改

$ git add test.txt

$ git status
On branch master
Your branch is based on 'origin/master', but the upstream is gone.
  (use "git branch --unset-upstream" to fixup)
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   test.txt

$ git commit -m 'テキストを変更'
[master 225112b] テキストを変更
 1 file changed, 1 insertion(+)

$ git log
commit 225112be3ab8a1dda4d9e2cf567ebfc5dbcc2d3e
Author: takezoh <takezoh@hogehoge.co.jp>
Date:   Wed Mar 29 12:59:42 2017 +0900

    テキストを変更

commit 840b9bd0b5857262d28a07cc4add0056888b9ff1
Author: takezoh <takezoh@hogehoge.co.jp>
Date:   Tue Mar 28 15:56:59 2017 +0900

    コミットテスト ファイルの追加

尝试添加一个日语文件。

$ git add テスト.txt
$ git status
On branch master
Your branch is based on 'origin/master', but the upstream is gone.
  (use "git branch --unset-upstream" to fixup)
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   "\343\203\206\343\202\271\343\203\210.txt"
$ git diff --cached
diff --git "a/\343\203\206\343\202\271\343\203\210.txt" "b/\343\203\206\343\202\271\343\203\210.txt"
new file mode 100644
index 0000000..95eace3
--- /dev/null
+++ "b/\343\203\206\343\202\271\343\203\210.txt"
@@ -0,0 +1 @@
+<83>e<83>X<83>g<81>I<81>I^M

看起来文字乱码了…
我会稍后查找这方面的设置等信息。

尝试提交日语文件。

$ git commit -m '日本語ファイル名のファイルをコミット'
[master 2090d55] 日本語ファイル名のファイルをコミット
 1 file changed, 1 insertion(+)
 create mode 100644 "\343\203\206\343\202\271\343\203\210.txt"
$ git show
commit 2090d55fb9c14fa3bbeef779fcc24c366955b5f6
Author: takezoh <takezoh@hogehoge.co.jp>
Date:   Wed Mar 29 20:05:31 2017 +0900

    日本語ファイル名のファイルをコミット

diff --git "a/\343\203\206\343\202\271\343\203\210.txt" "b/\343\203\206\343\202\271\343\203\210.txt"
new file mode 100644
index 0000000..95eace3
--- /dev/null
+++ "b/\343\203\206\343\202\271\343\203\210.txt"
@@ -0,0 +1 @@
+<83>e<83>X<83>g<81>I<81>I^M

15. 要不要试着推一下?推到哪儿?

我最初创建的工作仓库执行了add和commit操作。
这仅仅是对工作仓库进行了提交。

哦?但是这样的话,无法进行push或者pull操作,对吧?

$ git push
fatal: No configured push destination.
Either specify the URL from the command-line or configure a remote repository using

    git remote add <name> <url>

and then push using the remote name

    git push <name>

推?对于哪里来说?

$ git remote

当然没有任何显示的东西。

首先,在项目中,我们会使用GitHub等平台建立共享仓库来进行服务器的操作,通过push和pull来进行代码的共享。
因此,我想在本地电脑上构建相同的环境,并试着进行操作。

16.我试着创建了一个共享仓库。

我计划在本地PC上创建一个共享存储库,并对该存储库尝试各种操作。

先创建一个名为git_test.git的文件夹。(共享仓库的命名惯例是在文件夹名后面加上.git吗?)
在该文件夹下创建共享仓库。

$ git init --bare --shared

现在,在bash窗口的文件夹名称旁边显示了”(BARE:master)”,下面的文件被生成了。
以前只有.git文件,但是现在似乎生成了类似于创建SVN存储库的文件。

config
description
HEAD
hooks/
info/
objects/
refs/

17. 我们来尝试克隆一下

我们将创建一个名为”work”的文件夹,并将共享仓库克隆到该文件夹中。
在该文件夹中运行以下命令。

$ git clone /c/test/git_test.git

在work下创建了一个名为git_test的文件夹,并在该文件夹下创建了.git文件夹。
看起来如果不指定路径,工作目录将分配给从存储库名称中去除.git的路径…

如果要指定克隆路径,请在仓库后面指定路径。

$ git clone /c/test/git_test.git ./git_test2

在work下创建了一个名为git_test2的文件夹。

如果想将以下的内容作为工作库存储在作业代码库中,请参照以下方式。

$ git clone /c/test/git_test.git ./

创建了一个.git文件夹。
其他部分当然是空的。

尝试将克隆的工作代码库进行添加和提交。

以相同的步骤将文件添加并提交。

19.尝试将代码推送到共有仓库

$ git remote
origin

克隆时似乎会创建一个名为origin的目标。

$ git push origin
Counting objects: 9, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (9/9), 819 bytes | 0 bytes/s, done.
Total 9 (delta 0), reused 0 (delta 0)
To C:/product/git/git_test.git/
 * [new branch]      master -> master

看起来已经成功地进行了推送。

$ git pull origin
Already up-to-date.

似乎拉取后已经更新完毕。

$ git log origin/master

我也会检查公共仓库的日志。
由于没有其他人的提交,所以内容是相同的。

20. B先生尝试克隆(到另一个工作目录)。

我将在其他文件夹中克隆一份用于工作的副本,假设对象是B先生。

$ git clone /c/product/git/git_test.git/ ./
Cloning into '.'...
done.
.git/
test.txt
テスト.txt

21. B先生尝试修改文件

TEST!!
テスト!!
hogehoge!!  // ←追加

确认B先生的状态在修改后。
确认test.txt已经被修改。

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   test.txt

no changes added to commit (use "git add" and/or "git commit -a")

一方面,A先生的情况没有任何改变,所以不需要做任何动作。

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean

22. B先生尝试进行add、commit、push。

$ git add test.txt

$ git commit -m 'Bさんの変更をコミット hogehoge追加しました'
[master 4806924] Bさんの変更をコミット hogehoge追加しました
 1 file changed, 1 insertion(+)

$ git log -2
commit 4806924508c44f967053b3378aff3f930ca16ee8
Author: hogehoge <takezoh@hogehoge.co.jp>
Date:   Thu Mar 30 12:16:19 2017 +0900

    Bさんの変更をコミット hogehoge追加しました

commit 2090d55fb9c14fa3bbeef779fcc24c366955b5f6
Author: takezoh <takezoh@hogehoge.co.jp>
Date:   Wed Mar 29 20:05:31 2017 +0900

    日本語ファイル名のファイルをコミット

我要将代码提交到B先生的代码仓库。

$ git push origin
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 367 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To C:/product/git/git_test.git/
   2090d55..4806924  master -> master

我也会将代码推送到共有仓库。

On one hand, A先生…

$ git log -2
commit 2090d55fb9c14fa3bbeef779fcc24c366955b5f6
Author: takezoh <takezoh@hogehoge.co.jp>
Date:   Wed Mar 29 20:05:31 2017 +0900

    日本語ファイル名のファイルをコミット

commit 225112be3ab8a1dda4d9e2cf567ebfc5dbcc2d3e
Author: takezoh <takezoh@hogehoge.co.jp>
Date:   Wed Mar 29 12:59:42 2017 +0900

    テキストを変更

当然还是之前的样子。

$ git log origin/master -2
commit 2090d55fb9c14fa3bbeef779fcc24c366955b5f6
Author: takezoh <takezoh@hogehoge.co.jp>
Date:   Wed Mar 29 20:05:31 2017 +0900

    日本語ファイル名のファイルをコミット

commit 225112be3ab8a1dda4d9e2cf567ebfc5dbcc2d3e
Author: takezoh <takezoh@hogehoge.co.jp>
Date:   Wed Mar 29 12:59:42 2017 +0900

    テキストを変更

在这种情况下查看共享存储库的日志,状态保持不变是因为这种情况下的特性吗?

在原始工作存储库中尝试进行pull操作的是A先生。

$ git pull
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From C:/product/git/git_test
   2090d55..4806924  master     -> origin/master
Updating 2090d55..4806924
Fast-forward
 test.txt | 1 +
 1 file changed, 1 insertion(+)

成功地更新了。

$ git log -2
commit 4806924508c44f967053b3378aff3f930ca16ee8
Author: hogehoge <takezoh@hogehoge.co.jp>
Date:   Thu Mar 30 12:16:19 2017 +0900

    Bさんの変更をコミット hogehoge追加しました

commit 2090d55fb9c14fa3bbeef779fcc24c366955b5f6
Author: takezoh <takezoh@hogehoge.co.jp>
Date:   Wed Mar 29 20:05:31 2017 +0900

    日本語ファイル名のファイルをコミット

请在此阅读参考页面后再次检查一下。我认为在进行操作和体验后再次查看会加深理解。

    • Git の基礎勉強 〜Git によるバージョン管理を使う〜

 

    こわくない Git

尝试引发冲突。

我会分别修改A和B的test.txt文件如下。

TEST!!
テスト!!
hogehoge!!
Aさんの追加。
コンフリクト起きるかな?
TEST!!
テスト!!
hogehoge!!
Bさんの追加。
コンフリクトが起きたらどうしよう...

首先,将每个更改提交到工作库。

$ git commit -m 'Aさんの変更をコミット'
[master 1726af7] Aさんの変更をコミット
 1 file changed, 2 insertions(+)

$ git log -2
commit 1726af73ee128a949e76c27a38bfdb05396ff04e
Author: takezoh <takezoh@hogehoge.co.jp>
Date:   Tue Apr 4 12:22:55 2017 +0900

    Aさんの変更をコミット

commit 4806924508c44f967053b3378aff3f930ca16ee8
Author: hogehoge <takezoh@hogehoge.co.jp>
Date:   Thu Mar 30 12:16:19 2017 +0900

    Bさんの変更をコミット hogehoge追加しました
$ git commit test.txt -m 'Bさんの変更をコミット'
[master 42e9c92] Bさんの変更をコミット
 1 file changed, 2 insertions(+)

$ git log -2
commit 42e9c926f974ce74268c96c9b74a185a7199a2f2
Author: hogehoge <takezoh@hogehoge.co.jp>
Date:   Tue Apr 4 12:26:00 2017 +0900

    Bさんの変更をコミット

commit 4806924508c44f967053b3378aff3f930ca16ee8
Author: hogehoge <takezoh@hogehoge.co.jp>
Date:   Thu Mar 30 12:16:19 2017 +0900

    Bさんの変更をコミット hogehoge追加しました

B先生先把项目推送到共享仓库中。

$ git push origin
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 426 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To C:/product/git/git_test.git/
   4806924..42e9c92  master -> master

我成功地进行了推送,没有出任何问题。

我会在A先生的工作 repository 中进行 pull 操作。

$ git pull
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From C:/product/git/git_test
   4806924..42e9c92  master     -> origin/master
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.

好像发生了冲突…
看看合并后的test.txt,发现…

TEST!!
テスト!!
hogehoge!!
<<<<<<< HEAD
Aさんの追加。
コンフリクト起きるかな?
=======
Bさんの追加。
コンフリクトが起きたらどうしよう...
>>>>>>> 42e9c926f974ce74268c96c9b74a185a7199a2f2

可以看出在同一位置上有冲突发生。

25. 解决冲突

请适当修复冲突的文件。此次我们将反映A和B两位的修正。在合并之前,请确保程序等冲突已经得到正确修复,并确认更改的位置。

TEST!!
テスト!!
hogehoge!!
Aさんの追加。
コンフリクト起きるかな?
Bさんの追加。
コンフリクトが起きたらどうしよう...

由于冲突得以解决,我将再次提交到工作仓库。

$ git status
On branch master
Your branch and 'origin/master' have diverged,
and have 1 and 1 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)
You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Unmerged paths:
  (use "git add <file>..." to mark resolution)

        both modified:   test.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        test.txt.orig

no changes added to commit (use "git add" and/or "git commit -a")
$ git add test.txt

$ git status
On branch master
Your branch and 'origin/master' have diverged,
and have 1 and 1 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)
All conflicts fixed but you are still merging.
  (use "git commit" to conclude merge)

Changes to be committed:

        modified:   test.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        test.txt.orig

$ git commit -m 'コンフリクトを解消'
[master c588972] コンフリクトを解消

$ git log -2
commit c5889725472ceba93e7ec3cffdd66e608b014fac
Merge: 1726af7 42e9c92
Author: takezoh <takezoh@hogehoge.co.jp>
Date:   Tue Apr 4 12:55:34 2017 +0900

    コンフリクトを解消

commit 42e9c926f974ce74268c96c9b74a185a7199a2f2
Author: hogehoge <takezoh@hogehoge.co.jp>
Date:   Tue Apr 4 12:26:00 2017 +0900

    Bさんの変更をコミット

我会把A的修改一起推送到共享存储库。

$ git push
Counting objects: 6, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 679 bytes | 0 bytes/s, done.
Total 6 (delta 2), reused 0 (delta 0)
To C:/product/git/git_test.git/
   42e9c92..c588972  master -> master
$ git log origin/master -2
commit c5889725472ceba93e7ec3cffdd66e608b014fac
Merge: 1726af7 42e9c92
Author: takezoh <takezoh@hogehoge.co.jp>
Date:   Tue Apr 4 12:55:34 2017 +0900

    コンフリクトを解消

commit 42e9c926f974ce74268c96c9b74a185a7199a2f2
Author: hogehoge <takezoh@hogehoge.co.jp>
Date:   Tue Apr 4 12:26:00 2017 +0900

    Bさんの変更をコミット

我会再次尝试B先生的拉取。

$ git pull
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 6 (delta 2), reused 0 (delta 0)
Unpacking objects: 100% (6/6), done.
From C:/product/git/git_test
   42e9c92..c588972  master     -> origin/master
Updating 42e9c92..c588972
Fast-forward
 test.txt | 2 ++
 1 file changed, 2 insertions(+)

在合并后的文件中进行了更新。

在作業存储库中尝试分支。

我会试着创建一个分支。
由于涉及到分散版本管理,因此我会在工作仓库(本地环境)中创建一个分支。

首先要确认当前分支的状态。

$ git branch
* master

标有*号的master表示当前分支。

我会尝试创建一个分支。
我会尝试创建一个名为local_branch_1的分支。

$ git branch local_branch_1

$ git branch
  local_branch_1
* master

我将切换到已创建的分支进行工作。

$ git checkout local_branch_1
Switched to branch 'local_branch_1'

$ git branch
* local_branch_1
  master

控制台的文件夹名称旁边的显示也切换为(local_branch_1)。

我会修改test.txt并提交到分支上来尝试。

TEST!!
テスト!!
hogehoge!!
Aさんの追加。
コンフリクト起きるかな?
Bさんの追加。
コンフリクトが起きたらどうしよう...
ブランチ側で変更。  // ←追加

我会添加并提交。

$ git add test.txt

$ git commit -m 'ブランチ側にコミット'
[local_branch_1 beb3317] ブランチ側にコミット
 1 file changed, 1 insertion(+)

我成功地提交了代码,没有遇到任何问题。

我会检查一下日志。

$ git log -3
commit beb3317e6ac54d1c80bdec218055cd5460e2dc96
Author: takezoh <takezoh@hogehoge.co.jp>
Date:   Thu Apr 6 12:37:33 2017 +0900

    ブランチ側にコミット

commit c5889725472ceba93e7ec3cffdd66e608b014fac
Merge: 1726af7 42e9c92
Author: takezoh <takezoh@hogehoge.co.jp>
Date:   Tue Apr 4 12:55:34 2017 +0900

    コンフリクトを解消

commit 42e9c926f974ce74268c96c9b74a185a7199a2f2
Author: hogehoge <takezoh@hogehoge.co.jp>
Date:   Tue Apr 4 12:26:00 2017 +0900

    Bさんの変更をコミット

我将尝试返回到主分支。

$ git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.

在这个时间点上,刚刚修改的test.txt将会替换为主分支的提交文件。

TEST!!
テスト!!
hogehoge!!
Aさんの追加。
コンフリクト起きるかな?
Bさんの追加。
コンフリクトが起きたらどうしよう...

查看日志,找不到分支上的提交记录。

$ git log -2
commit c5889725472ceba93e7ec3cffdd66e608b014fac
Merge: 1726af7 42e9c92
Author: takezoh <takezoh@hogehoge.co.jp>
Date:   Tue Apr 4 12:55:34 2017 +0900

    コンフリクトを解消

commit 42e9c926f974ce74268c96c9b74a185a7199a2f2
Author: hogehoge <takezoh@hogehoge.co.jp>
Date:   Tue Apr 4 12:26:00 2017 +0900

    Bさんの変更をコミット

27. 尝试将更改合并到主分支中,来进行测试。

由于分支端的提交已经完成,所以我尝试将这些更改合并到主分支中。

$ git merge local_branch_1
Updating c588972..beb3317
Fast-forward
 test.txt | 1 +
 1 file changed, 1 insertion(+)

我会确认test.txt已经更改并反映出来。
这样就完成了向主分支(master)的合并。

我也会查看一下日志。

$ git log -2
commit beb3317e6ac54d1c80bdec218055cd5460e2dc96
Author: takezoh <takezoh@hogehoge.co.jp>
Date:   Thu Apr 6 12:37:33 2017 +0900

    ブランチ側にコミット

commit c5889725472ceba93e7ec3cffdd66e608b014fac
Merge: 1726af7 42e9c92
Author: takezoh <takezoh@hogehoge.co.jp>
Date:   Tue Apr 4 12:55:34 2017 +0900

    コンフリクトを解消

尝试删除分支。

我会尝试删除不需要的分支。

$ git branch -d local_branch_1
Deleted branch local_branch_1 (was beb3317).

$ git branch
* master

乌龟Git

安装

我将参考下面的页面进行安装。这篇文章也非常有参考价值,请一定要阅读。

    TortoiseGit の基礎勉強 〜TortoiseGit によるバージョン管理を使う〜

1. 下载过来

乌龟Git

目前的最新版本是2.4.0.2(2017/4/7)。

下载” TortoiseGit-2.4.0.2-64bit.msi”。
同时也下载 “日本语化包(TortoiseGit-LanguagePack-2.4.0.0-64bit-ja.msi)”。

由于Windows已经安装了Git,因此开始安装TortoiseGit。

2. 安装 TortoiseGit

请执行安装程序。
基本上,只需点击[下一步]即可顺利进行。

tortoisegit_000.png
tortoisegit_001.png

我会选择顶部的SSH客户端选项。

tortoisegit_002.png

如果自定义设置没有变化,我们就按照原样进行。

tortoisegit_003.png
tortoisegit_004.png
tortoisegit_005.png

安装已完成。

tortoisegit_006.png

我会尝试启动。
因为我没有安装日语语言包,所以这个部分将保持为英文的状态。

tortoisegit_007.png
tortoisegit_008.png
tortoisegit_009.png

由于用户信息已在Git Bash中设置并显示出来,您可以继续进行。

tortoisegit_010.png
tortoisegit_011.png

这样一来,初始设置也完成了。

安装日本语化包。

langpack_000.png
langpack_001.png
langpack_002.png

安装已完成。

请切换到日语。
请右键点击TortoiseGit,选择设置。

langpack_003.png

请将General的语言切换为日语。

langpack_004.png

切換至日語已完成。

我尝试使用TortoiseGit。

确认一下在Git Bash进行的工作环境。

请确认是否显示了绿色的勾选标志图标。
※图标显示可能需要一些时间。
※如果图标没有显示,可能是超过了叠加图标的最大数量。

tortoisegit_012.png

试着拉一下

tortoisegit_013.png
tortoisegit_014.png
tortoisegit_015.png

确认日志

tortoisegit_016.png
tortoisegit_017.png

尝试提交更改。

我会尝试修改test.txt文件。

tortoisegit_018.png

5. 检查差分

tortoisegit_019.png
tortoisegit_020.png

尝试提交

tortoisegit_021.png
tortoisegit_022.png
tortoisegit_023.png

7. 我们试一试推送。 shì .)

之前的提交是对工作仓库的提交。
尚未在共享仓库中反映。
即使在B先生的环境中进行了pull并检查日志,之前的更改也没有反映出来。

tortoisegit_024.png

因此,我会将之前的提交推送到共享存储库中。
* 此时工作存储库没有更改,所以全部都是绿色标记。
* 怎样才能确认与共享存储库的差异呢…
* 我好像忘记了是否已经推送到共享存储库…
* 有很多人用各种方法来处理忘记推送的问题…

在Bash中,可以通过以下方式来确认。
如果存在未推送的提交,则会在日志中显示。

$ git log origin/master..master
commit 317239762c05044fa189cde1548374b10459e9bd
Author: takezoh <takezoh@hogehoge.co.jp>
Date:   Wed Apr 12 12:42:07 2017 +0900

    TortoiseGitでコミット

commit beb3317e6ac54d1c80bdec218055cd5460e2dc96
Author: takezoh <takezoh@hogehoge.co.jp>
Date:   Thu Apr 6 12:37:33 2017 +0900

    ブランチ側にコミット

在TortoiseGit中,如何确认是否忘记进行push?
在TortoiseGit中,如何查看远程日志?

先试试推送吧。

tortoisegit_025.png
tortoisegit_026.png

推送已完成。

tortoisegit_027.png

GitHub (源于简体中文的网络社交平台).

终于开始尝试使用GitHub了。

在 GitHub 上注册账号

首先,您需要注册一个GitHub账号。

GitHub – 代码托管平台

请提供您的用户名、邮箱地址和密码。

github_000.png

选择计划。
选择免费方案进行。

github_001.png

选择适合自己经验的内容并提交。

github_002.png

我已成功完成注册。
我会收到一封电子邮件,需要确认我的电子邮件地址,所以我会进行确认。

github_003.png

我立即创建一个仓库来试试。

github_004.png

仓库已经顺利创建。

github_005.png

接下来,您将可以按照以往的步骤在GitHub共享仓库上进行操作。

在GitHub上创建的共享存储库中进行工作。

首先,将刚才创建的共享版本库克隆下来。
尝试使用TortoiseGit进行操作。

github_006.png

请在URL中输入刚刚创建的共享存储库的URL。
请指定一个本地路径作为目录。

从现在起,你可以将内容提交到GitHub上共享的存储库中。

GitHub桌面版

我也尝试安装GitHub Desktop。

安装GitHub Desktop

githubdesktop_000.png

正在安装中…

githubdesktop_001.png

使用GitHub账户登录

输入GitHub账号并登录。

githubdesktop_002.png

设定配置

请填写以前设置过的用户名和电子邮件地址。

githubdesktop_003.png

安装完成

githubdesktop_004.png

添加存储库

让我们在这里添加我们迄今为止创建的存储库。
它将会显示在桌面上。

githubdesktop_005.png

首先尝试使用Git,然后试试TortoiseGit,最后成功访问到GitHub。
接下来会继续尝试更多不同的操作并进行随时更新。

请参考

    • Git の基礎勉強 〜Git によるバージョン管理を使う〜

 

    • こわくない Git

 

    • GitHub 入門

 

    • Gitコマンド一覧

 

    • TortoiseGit の基礎勉強 〜TortoiseGit によるバージョン管理を使う〜

 

    • TortoiseGitの使い方だがローカルPCで共有リポジトリ、作業リポジトリでの使い方が書かれている。

 

    • ガチで5分で分かる分散型バージョン管理システムGit

 

    分散バージョン管理Git/Mercurial/Bazaar徹底比較
广告
将在 10 秒后关闭
bannerAds