创建仓库
在现有目录初始化仓库
1
git init
git init
命令将在此目录下创建一个名为.git
的子目录,该目录包含 Git 仓库的必须文件。如果在一个非空文件夹中初始化 Git 仓库,需要通过git add
命令实现对指定文件的跟踪,然后执行git commit
提交克隆现有仓库
1
git clone https://github.com/Better-Jiang/Better-Jiang.github.io
执行
git clone [url] [rpName]
命令,默认配置下,会拉取远程 Git 仓库中的每一个文件的每一个版本,克隆了该 Git 仓库服务器上的几乎所有数据。
更新记录到仓库
文件状态
工作目录下的文件只有 2 中状态:已跟踪、未跟踪(Untracked)
已跟踪: 指那些已经纳入了版本控制的文件,在上一次快照中有它的记录。其状态可能处于未修改(Unmodified),已修改(Modified),放入暂存区(Staged)。
未跟踪(Untracked):指既不在上次快照的记录中,也没有放入暂存区的文件。一般是新加入的文件,还没执行
git add
命令.
git 文件生命周期:
检查当前文件状态
git status
命令,查看当前目录文件状处于什么态.
目录干净(working directory clean),所有已跟踪的文件在上次提交后都未被更改过。
1
2
3
4
5git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean未跟踪的文件(Untracked files),在之前的快照(提交)中没有该文件。
1
2
3
4
5
6
7
8echo 'My Project' > README
git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
README
nothing added to commit but untracked files present (use "git add" to
track)跟踪新文件,但未提交(Changes to be committed),处于暂存状态
使用git add
命令 开始跟踪一个文件,是已暂存状态1
2
3
4
5
6
7git add README
git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: README暂存已修改文件
修改一个已被跟踪的文件,然后运行git status
命令1
2
3
4
5
6
7
8
9
10
11
12git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: README
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: CONTRIBUTING.md文件
CONTRIBUTING.md
在Changes not staged for commit
这行下面,说明已跟踪的文件被修改了,但没有放入暂存区。要暂存此次更新,需要再次执行git add
命令。1
2
3
4
5
6
7$ git add CONTRIBUTING.md
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: README
modified: CONTRIBUTING.mdgit add 将
CONTRIBUTING.md
文件放到暂存区,此时两个文件都是已暂存,下次执行提交时就会一并记录到仓库。
git add / git commit 理解
git add
命令有多个功能
- 可以用它开始跟踪新文件并放入暂存区
- 把已跟踪的且被修改过的文件放入暂存区
- 合并时把有冲突的文件标记未已解决状态
git add
命令 可理解为 添加内容到下一次提交中, 而非 将一个文件添加到项目中git commit
命令,将暂存区的所有文件(git add 命令后的那个版本)提交到版本库中的当前分支上。如果执行了git add
命令之后又做了修改文件,需要重新运行git add
把最新的版本暂存起来。