Git仓库

Git仓库

Git 中,初始化一个仓库的命令如下:

git init

创建仓库的命令如下:

git init git_non_bare_repo

创建裸仓库的命令如下:

git init --bare git_bare_repo

克隆仓库的命令如下:

git clone

clone 一个仓库,通常需要一个 url 地址,这里我们使用刚才创建的裸仓库,并重命名为 git_clone_bare_repo,具体命令如下:

git clone git_bare_repo/ git_clone_bare_repo/

Git仓库三个区域

Git 仓库的三个区域分别为工作区、暂存区与历史仓库。

  1. working directory(工作区):就是我们编辑代码的地方,维护着一个 tree。
  2. staging area(暂存区):是工作区和历史仓库之间的一个缓存。
  3. history repo(历史仓库):是 commit 指向的一个树形结构。

它们的关系为,通常是从工作区添加文件到暂存区,再把暂存区的整体的状态提交到历史仓库,还可以直接从历史仓库里面检出文件到工作区。

上面关系对于的命令:

git add git commit

查看工作区和暂存区之间的区别:

git status

从暂存区删掉:

git rm

从工作区重命名文件并提交到暂存区:

git mv

忽略工作区中的某些文件提交到暂存区和历史仓库:

git ignore

案例

首先,我们创建一个 git 仓库,具体命令如下:

git init git_basics

现在,我们进入到该目录,具体命令如下:

cd git_basics/

现在,我们创建两个文件,具体命令如下:

touch a touch b

现在,我们添加文件到暂存区:

git add a b

可以看到两个新文件被添加了:

git status

现在 ,我们再次提交到历史仓库:

git commit -m "Init repo"

再次修改文件 a:

echo "a file version 1" > a

再看下文件信息,可以看到a被修改了但还没有提交到暂存区:

git status

先添加到暂存区,再提交:

git add a git commit a -m "version 1"

从历史仓库和工作区删除 a:

git rm a

查看 a 被删除了:

ls git status

还原 a:

git reset HEAD a git checkout a

查看:

ls

删除暂存区的 a,不删除工作区的 a:

git rm --cached a

查看状态,可以看到提示 a 是未被跟踪的文件:

git status

再次添加到暂存区:

git add a

重命名 a 为 c,其实是删除了 a,并新建了 c,并加入暂存区:

git mv a c

修改回去:

git mv c a

直接重命名 a:

mv a c

查看状态,显示 a 被删除了,c 未被添加:

git status

把整个工作区都添加到暂存区:

git add . 或者 git add -A

忽略不需要添加的文件,首先,使用 vim 新建 .gitignore 文件:

vim .gitignore

并写入如下内容:

*.[oa] #所有的.o 和 .a文件不被提交 *.pyc #所有的.pyc文件不被提交 !test.pyc #test.pyc文件被提交 build/ #build目录不被提交

最后,我们提交 .gitignore 文件,具体命令如下:

git add .gitignore git commit -m "add gitignore"