git 命令学习

一直使用 git,但都是通过软件进行操作,基本上也没有实际用过 git 命令。本着多掌握一些英语单词的思想,还是学习一下 git 使用为好。

因为我的机器里面已经用 sourceTree 登录过 github / coding.net 了,所以 git 不会再要求输入密码了。

从服务器克隆(下载)代码仓库

假设代码存放在 coding.net。项目地址:https://git.coding.net/yukapril/git-study.git

一般很少需要直接本地建立 git 仓库,之后上传到服务器上,这些活都应该是版本管理员做的,所以我就省略了。

首先,克隆代码到本地

1
2
3
4
# 首先通过 cd 切换到你要克隆到的位置
git clone https://git.coding.net/yukapril/git-study.git git-study
# 也可以简写为
git clone https://git.coding.net/yukapril/git-study.git

命令格式为:git clone 远程地址 本地目录名字,其中本地目录名字经常不写,使用 git 的项目名字。

这样,代码就被我们克隆到本地了。

git 操作流程

我们下载代码后,进行修改,要想最终上传到服务器,流程是这样的。

  1. 确定要提交的文件,添加到版本库的暂存区中。你可能这次修改了10个文件,但是仅仅打算提交2个文件。
  2. 针对第一步确定的文件,填写注释并提交到本地 git 仓库。
  3. 将本地仓库的变更,推送到服务器仓库。

注意:流程可以是1->2->3,也可以是反复的1->2,或者1->1->1再提交2,最后一起推送3。

修改了代码,添加文件到暂存区

首先,我们先要添加一些文件,就叫做 index.htmlsrc/index.js吧。随便写点什么都行。

检查下 git 文件状态

1
2
3
git status
# 或者简单模式查看
git status -s

结果为:

1
2
3
4
5
6
7
On branch master
Your branch is up-to-date with 'origin/master'.
Untracked files:
(use "git add <file>..." to include in what will be committed)

index.html
src/

git 提示我们有 (红色的)index.htmlsrc/ 没有添加到版本中。

添加文件到版本库中

我们要把本次即将提交的文件添加到版本库中,这样 git 才会追踪文件的修改。

添加方法很简单,常用有以下几种方法:

1
2
3
4
git add . # 添加所有文件
git add index.html # 添加指定的文件(index.html)
git add src/ # 添加指定的目录
git add *.html # 添加扩展名是html的文件

如果本次我仅仅想提交 index.html,但是我使用了 git add .命令,这样会导致把其他目录也添加到本次待提交暂存区。咋办?我比较笨,不知道如何移除单独的目录,所以用的笨方法,将本次添加的文件全部重置掉:

1
git reset

之后重新添加就好了。

你可以试试 git status,查看下状态:

1
2
new file:   index.html
new file: src/index.js

会有绿色的文件提示了。绿色表示新增加。

填写注释,提交代码到本地仓库

首先说明的是,必须要有上一步 git add,添加文件到暂存区,否则这步没办法提交。

提交上一步的代码,建议写一点注释:

1
git commit -m "add files"

这里 -m 表示 message ,后面写注释就好了。

之后,我们查看下状态吧, git status

1
2
3
4
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working tree clean

它提示我们,现在本地的分支,比服务器的 origin/master 分支多了一条。

将本地的修改,推送到服务器

上面一步已经提示我们,本地比服务器代码更加超前,那么需要将本地的代码,推送到服务器上面。

git 命令是 git push <远程主机名> <本地分支名> <远程分支名>

1
2
3
4
5
git push origin master master # 远程主机叫做origin,本地分支默认为master,提交到远程分支master上
git push origin master # 远程主机叫做origin,本地分支默认为master,远程主机分支不写则同本地分支
git push origin # 将本地当前分支直接推送到远程主机当前分支
git push # 将本地当前分支直接推送到默认远程分支
# 所有的操作,如果远程分支不存在则自动创建分支

一般来讲,我们都用最简单的,第四句。除非需要拉一个新的分支,否则其他写法很少用到。

这里还有一点需要说明,假设你是在17:00进行了 git commit,之后忘记同步到服务器了。到了17:30想起来了,进行了 git push。在服务器上查看你的提交历史,是17:00提交的,绝不是17:30。

总结

这次,学习了以下命令:

  • git clone 从服务器克隆代码到本地
  • git status 查看文件状态
  • git add 添加文件到暂存区
  • git reset 重置文件暂存区
  • git commit -m "message" 提交当前暂存区并加入注释
  • git push 提交本地git变更到服务器