git管理仓库

如无特别说明,下面的git命令都是在git的版本库目录下执行的。所谓的git的版本库目录,就是管理的文件所在的目录。如何确定是否是git管理的版本库呢?在该目录下,使用命令ls -a,如果有.git这样一个文件夹,那么就说明该目录是git的版本库目录。而.git这个文件夹下,就是存放着该版本库的版本信息等,所以,.git文件夹又叫做该git版本库的git管理仓库。

git状态查看

查看一个git源的状态,使用命令git status。命令很简单,关键是要能够明白命令输出的各种状态代表什么含义。下面列举出几种常用的状态。

[root@localhost jzcode]# git status
# On branch master
nothing to commit (working directory clean)
[root@localhost jzcode]# git status
# On branch master
# Changed but not updated:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       deleted:    linux-2.6.24.3/drivers/video/nieyong.c
#
no changes added to commit (use "git add" and/or "git commit -a")
/***************
可以看到,显示nieyong.c文件不在当前目录下,被删除了,但是这个删除操作并没有记录在git管理仓库中,也就是changed but not updated的含义。因为没有操作(例如添加,更改,删除等)记录在案,所以,git认为并不需要更新git管理仓库中的版本,或者说,git应该先将这个改变(nieyong.c文件被删除了)记录在案(update),然后再提交到管理仓库中(commit)。因为现在还没有记录在案,也就有no changes added to commit。
****************/

[root@localhost jzcode]# git rm linux-2.6.24.3/drivers/video/nieyong.c
rm 'linux-2.6.24.3/drivers/video/nieyong.c'
/***************
在git管理仓库中删除nieyong.c文件
***************/

[root@localhost jzcode]# git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       deleted:    linux-2.6.24.3/drivers/video/nieyong.c
#
/***************
nieyong.c文件已经在git管理仓库中删除,下面,你就需要将这个改变提交,得到一个新的版本。
***************/

[root@localhost jzcode]# git commit -m "删除SLCD调试时的临时文件nieyong.c"
[master a3a54a7] 删除SLCD调试时的临时文件nieyong.c
Committer: root <root@localhost.localdomain>
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:

git config --global user.name "Your Name"
git config --global user.email you@example.com

If the identity used for this commit is wrong, you can fix it with:

git commit --amend --author='Your Name <you@example.com>'

1 files changed, 0 insertions(+), 95 deletions(-)
delete mode 100644 linux-2.6.24.3/drivers/video/nieyong.c
/****************
提交这一次操作到git管理仓库中,获得一个新的版本。
*****************/

[root@localhost jzcode]# git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
/***************
又恢复到版本库中的文件和git管理仓库中的描述是一致的状态。
***************/

[root@localhost jzcode]# git push
Counting objects: 9, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 470 bytes, done.
Total 5 (delta 4), reused 0 (delta 0)
To git@github.com:jzcode/jzcode-x11.git
   2e7a6f8..a3a54a7  master -> master
[root@localhost jzcode]# git status
# On branch master
nothing to commit (working directory clean)
/***************
git push之前的操作都是在本地,目的是为了保持版本库和管理仓库的一致性。而git push就是把本地的这一个新的版本发送到github服务器端。
***************/