【Git】初入职工程师的Git推送之路

第一次的git提交

我有一些私事要和你说,从8月份开始,我在一家公司担任Web工程师。

前几天我完成了一个任务,想要进行git push,可是却惊讶地忘记了git的命令。我当时向前辈请教了一下,成功地完成了任务,感觉如释重负(´;ω;`)。

虽然我有知识,但我真实的想法是不知道在哪里、如何以及为什么要使用git命令。

这次我们回顾一下在那个时候使用的git命令,重点并不是命令本身,而是回顾一下整个工作流程。

之前我写过一篇类似的文章。这次的重点是更加实践性的内容。

使用【GitHub】进行应用程序的版本管理

创建仓库-提交

开始

创建一个仓库。(需要初始化吗?)

在这里,我正在git_test目录中创建一个仓库。

$ cd git_test
$ git init
Initialized empty Git repository in /Users/yuki/workspace/git_test/.git/

添加

可以使用-A选项将想要提交的文件添加到暂存区中。该选项可以选择当前目录及其子目录下的所有文件。

如果您想按文件分别提交,请指定文件名。

$ git add test.html

承诺

我会提交。并通过-m选项附加提交消息。

$ git commit -m "first commit"
[master (root-commit) aba6a83] first commit
 1 file changed, 9 insertions(+)
 create mode 100644 test.html

在远程存储库中进行同步

使用GitHub作为远程存储库。需要先预先创建存储库。

添加远程

将指定的名称与远程仓库的地址关联起来。

由于远程仓库存在于互联网上,所以在与本地仓库进行交互时,需要指定地址(路径)。

因为每次指定作业地址也很麻烦,所以在这里将其命名为”origin”并进行关联,以后可以使用”origin”来处理。

$ git remote add origin git@github.com:ユーザー名/リポジトリ名.git

推动

我会将更改写入远程存储库。

将提交的内容同步到源主分支(origin的master分支)。

$ git push origin master
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 308 bytes | 308.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:ユーザー名/リポジトリ名.git
 * [new branch]      master -> master

切出分支

刚刚使用的所有分支都是主分支。现在,我们将创建一个与主分支不同的新分支,并尝试将其同步到远程仓库的主分支上。

我不太清楚分支切割的标准,但在这里我会准备一个develop分支。

分支(一)

在指定的名称上创建一个分支。如果想要同时将创建的分支用作当前分支,可以使用git checkout -b 分支名称。

本次创建的develop分支与master分支的内容相同。

$ git branch develop

结账

转到指定的分支。

$ git checkout develop
Switched to branch 'develop'

分支(第2部分)

您可以查看所有现有的分支和当前分支。

在这里有两个分支,一个是主分支(master),另一个是开发分支(develop),现在我在开发分支上,这是其意思。

$ git branch
* develop
  master

我会在这个develop分支上进行工作。

状态

显示已进行更改的文件。

由于在develop分支上进行了新的操作,因此显示了与之相关的test.html文件。

$ git status
On branch develop
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.html

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

以下是对git status的结果解读以及变更标准的时机比较难理解。这篇文章可能会给您一些参考,希望对您有所帮助。

Git的基本使用 – 将变更内容记录到代码仓库中。

与众不同

会将自上次分阶段以来发生变更的部分作为差异显示出来。也可以指定文件名进行执行。

在test.html中,对哪些部分进行了更改,已经以上下比较的方式显示出来了。

$ git diff
diff --git a/test.html b/test.html
index d1e9fdb..5bd36cc 100644
--- a/test.html
+++ b/test.html
@@ -6,6 +6,6 @@
   <body>
     <p>git_test</p>

-    
+
   </body>
 </html>

即使外表看起来没有差异,但可能是由于不可见字符的影响。

【Atom】解决使用git diff发现的不可见字符(制表符、空格)的方法。

如果没有问题,就可以使用git add命令对相应的文件进行暂存。

$ git add test.html

我们来提交吧。

$ git commit -m "second commit"
[develop 9701c20] second commit
 1 file changed, 2 insertions(+)

我会将更改推送到远程代码库。本次推送目标是develop分支。

$ git push origin develop
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 293 bytes | 293.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To github.com:ユーザー名/リポジトリ名.git
   aba6a83..9701c20  develop -> develop

将更新应用于远程存储库的主分支。

接下来,我们要操作本地仓库的主分支。使用git checkout进行切换。

$ git checkout master
Switched to branch 'master'

拉 (lā)

同步远程仓库和本地仓库,并将更改合并到本地仓库的分支中。

如果有多人一起作業,将需要共同使用远程代码仓库。因此,在我自己工作的同时,可能会有其他人更新主分支。

因此,首先从远程存储库的主分支获取最新状态,并将其同步到本地存储库的主分支上(尽管这次没有任何变更)。

$ git pull origin master
From github.com:ユーザー名/リポジトリ名
 * branch            master     -> FETCH_HEAD
Already up to date.

顺带一提,git pull命令是git fetch(同步远程仓库和本地仓库)和git merge(合并)两个命令的组合。

合并

合并其他分支的内容。

在本地存储库将主分支更新为最新状态,并将开发分支的内容合并进来。

现在可以准备将此推送到远程存储库了。

$ git merge develop
Updating aba6a83..9701c20
Fast-forward
 test.html | 2 ++
 1 file changed, 2 insertions(+)

将主分支的内容推送到远程仓库。工作已完成。

$ git push origin master
Total 0 (delta 0), reused 0 (delta 0)
To github.com:ユーザー名/リポジトリ名.git
   aba6a83..9701c20  master -> master

一般来说,在主分支(master)上不进行更改操作。最后请返回到开发分支(develop)继续工作。

$ git checkout develop
Switched to branch 'develop'
广告
将在 10 秒后关闭
bannerAds