yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git status
On branch master
Initial commit
nothing to commit (create/copy files and use "git add" to track)
没错,就是"git status"。这个命令用于查看当前git的状态,比如,上面的例子中,我们刚创建了一个空的git仓库,那么运行该指令时,git会提示我们,当前没有任何东西要提交,同时提示我们,可以创建或者复制文件后使用“git add”命令来跟踪文件的变化。
五、现在让我们来创建一个文件吧。我们创建一个叫“a.txt”的文本文件,并且内容如下:
yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
a.txt
nothing added to commit but untracked files present (use "git add" to track)
这时会提示我们有一个未追踪的文件,叫a.txt。我们要把这个文件加入到版本控制中,于是,我们运行如下命令:
yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: a.txt
提示我们有改变需要被提交。这个时候,a.txt这个文件就存在于所谓的“暂存区”中,暂存区中的文件可以被真正提交到git仓库。有同学可能说,如果我不想提交这个文件了,那怎么把刚才的文件从暂存区移除呢?其实答案就在刚才的提示中:
use "git rm --cached ..." to unstage。
那么,我们运行下这个命令:
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got 'yanyaozhen@macbookpro.(none)')
阿欧,报错了,查看给出的错误原因,发现是因为没有设置email和用户名,所以git不让我提交。git为什么要强制要求设置了这两个配置才能提交呢?因为git必须得知道是谁提交的,如果连谁提交的都不知道,那还怎么做版本管理啊,是不。所以我们根据提示设置下:
yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git status
On branch master
nothing to commit, working directory clean
提示我们当前没有东西要提交,当前工作目录是干净的,因为我们都提交到git了。
好了,到这步后,git就可以完全跟踪已经被提交的文件了,以后,这个文件的任何修改,它都可以记录下来。比如某个人对项目私自修改了一些东西,项目管理者根据git的版本记录是一定可以找到是谁修改了哪些文件的。
现在我们就可以把文件提交到远程服务器了。
七、当我们要提交git仓库中的内容到远程服务器时,我们必须得先成为远程服务器受信任的用户才行(服务器当然不允许所有人都可以推送内容,那样就乱套了)。这个时候,我们需要先在本地生成一个公钥,然后把公钥放到远程服务器的账户列表中。生成公钥的命令如下:
On branch master
nothing to commit, working directory clean
工作目录还是干净的,接下来您就可以继续在本地进行创建文件->提交到暂存区->提交到本地仓库->push到远程仓库的过程啦! 将远程仓库克隆到本地
下面我们来讲一个新的玩法,就是先有远程仓库,后有本地仓库,即把远程仓库“克隆(clone)”到本地。
假设现在你的团队其他成员已经在git上建好了仓库,并且也push过代码,这个远程git仓库还叫“StudyGit”,有两个文件:a.txt和README.md,现在,您也要开始贡献代码了,那么,您首先需要把团队其他成员提交的所有东西都拉取到你的本地目录,这个时候就会用到“clone”命令了:
yanyaozhen@macbookpro:~/Coding/StudyGit$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
命令回显表示,我的本地分支已经更新为最新的远程master分支了。此后,我们就可以按照“git快速入门之一”这篇文章所述进行添加代码并提交了。
现在,让我们再看下刚才clone到本地的git项目,现在有两个文件,如下:
代码如下:
To git@github.com:onlyanyz/StudyGit.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'git@github.com:onlyanyz/StudyGit.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
阿欧,报错了,懂点英文的同学可以从提示信息看出问题所在,因为我们的远程已经有更新了,我们在push到远程的时候,必须先把远程的改动拉到本地合并起来,才能再次提交我的修改。所以,以下的命令就出场了:
代码如下: