时间:2023-02-23 09:10:13 | 栏目: | 点击:次
要对现有的某个项目开始使用Git管理,只需到此项目所在的根目录,执行git init
命令即可。
准备一个新的Git本地版本库:
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit $ git init Initialized empty Git repository in J:/git-repository/learngit/.git/
说明:初始化Git仓库后,在当前目录下会出现一个名为.git
的目录,所有Git需要的数据和资源都存放在这个目录中。
不过目前,仅仅是按照既有的结构框架,初始化好了Git仓库中所有的文件和目录,但我们还没有开始跟踪管理项目中的任何一个文件。
使用git status
命令进行查看。
进入本地版本库查看工作区、暂存区中文件的状态。
# 执行`git status`命令 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git status # 在主分支上工作 On branch master # 尚无提交文件,指的是本地库中没有提交过任何文件。 No commits yet # 无需提交(可创建/复制文件并使用“git add”进行跟踪) # 无需提交指的是,暂存区中没有任何可提交的文件 # 追踪文件,就是让Git管理该文件。 nothing to commit (create/copy files and use "git add" to track)
1)创建文件后查看工作区、暂存区中文件的状态。
我们在仓库目录中创建一个readme.txt
文件后,在执行git status
命令。
# 创建readme.txt文件 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ touch readme.txt L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ ll total 0 -rw-r--r-- 1 L 197121 0 4月 4 00:38 readme.txt # 查看工作区、暂存区状态 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git status On branch master # 尚无提交文件,指的是本地库中没有提交过任何文件。 No commits yet Untracked files: (use "git add <file>..." to include in what will be committed) readme.txt # 文件名为红色 nothing added to commit but untracked files present (use "git add" to track)
说明:
Untracked files:readme.txt
表示发现未追踪的文件readme.txt
use "git add <file>..." to include in what will be committed
表示对readme.txt
文件,你可以使用git add
命令,将新建文件添加到暂存区。
nothing added to commit but untracked files present (use "git add" to track)
表示你没有添加任何内容到暂存区,但是存在未追踪的文件,可使用“git add”命令进行追踪。
2)将工作区的文件添加到暂存区。
执行git add
命令,将readme.txt
文件添加到暂存区。
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git add readme.txt warning: LF will be replaced by CRLF in readme.txt. The file will have its original line endings in your working directory
说明:
warning: LF will be replaced by CRLF in readme.txt.
The file will have its original line endings in your working directory
readme.txt
文件中的换行符格式会被替换,CRLF替换LF。3)再次查看工作区、暂存区状态。
执行git status
命令查看工作区、暂存区状态。
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git status On branch master No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: readme.txt # 文件名为绿色
说明:
Changes to be committed: new file: readme.tx
所做更改:新建了readme.txt文件
use "git rm --cached <file>..." to unstage
提示你可以适用使“git rm --cached <file> ...”
命令,
把文件从暂存区中撤回到工作区。
总结:
只要在"Changes to be committed"
这行下面显示的文件,就说明是已暂存状态。
如果此时提交,那么该文件此时此刻的版本,将被留存在历史记录中。
在git add
命令后面可以指明要跟踪的文件或目录路径。
如果是目录的话,就说明要递归跟踪该目录下的所有文件。(其实git add
命令的潜台词就是把目标文件快照放入暂存区域,同时未曾跟踪过的文件标记为已跟踪。)
4)将文件从暂存区撤回到工作区。
执行git rm --cached
命令,将readme.txt
文件从暂存区撤回到工作区。
并执行git status
命令查看工作区、暂存区状态。
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git rm --cached readme.txt rm 'readme.txt' L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git status On branch master No commits yet Untracked files: (use "git add <file>..." to include in what will be committed) readme.txt # 文件名为红色 nothing added to commit but untracked files present (use "git add" to track)
可以看到结果,readme.txt
文件又成为了一个未被Git追踪的文件。
当暂存区域已经准备妥当可以提交时,在此之前,请一定要确认还有什么修改过的,或新建的文件还没有git add
到暂存区,否则提交的时候不会记录这些还没暂存起来的变化。
所以,每次准备提交前,先用git status
查看下,需要提交的文件是不是都已暂存起来了,然后再运行提交命令git commit -m '备注信息'。
1)将文件添加到缓存区并提交到本地版本库。
将readme.txt
文件加入到暂存区,并执行git commit -m '本次提交的说明',将readme.txt
文件提交到本地版本库。
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git add readme.txt warning: LF will be replaced by CRLF in readme.txt. The file will have its original line endings in your working directory L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git commit readme.txt -m 'My first commit.new file readme.txt' warning: LF will be replaced by CRLF in readme.txt. The file will have its original line endings in your working directory [master (root-commit) e84b93b] My first commit.new file readme.txt 1 file changed, 1 insertion(+) create mode 100644 readme.txt
重点说明最下面三行内容:
master
:表示master
(主干)分支。
root-commit
:root
表示根,意思是该版本库的第一次提交。
e84b93b
:提交操作的版本号概要。
My first commit.new file readme.txt
:本次提交的说明信息。
1 file changed
:一个文件被修改。
1 insertions(+)
:增加了1行内容,+
号表示增加,-
号表示减少。
create mode 100644 readme.txt
:readme.txt
文件创建模式为100644,
100代表regular file
(普通文件),644代表文件权限。
提示:提交时记录的是放在暂存区域的快照。
即:每一次执行提交操作时,都是对项目作一次快照,以后可以回到这个状态,或者与这个状态进行比较。
2)将文件提交到本地版本库后工作区、暂存区状态。
执行git status
命令查看工作区、暂存区状态。
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git status On branch master # 暂存区中没有可提交的内容 # 工作目录和本地版本库是一样的,没有修改、新建等操作。 nothing to commit, working tree clean
3)修改文件内容后查看工作区、暂存区状态。
修改readme.txt
文件内容后,再执行git status
命令查看工作区、暂存区状态。
# 修改文件内容 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ echo "git world" >> readme.txt L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ cat readme.txt hello git world git world # 查看工作区、暂存区状态。 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: readme.txt # 文件名为红色 no changes added to commit (use "git add" and/or "git commit -a")
说明:
Changes not staged for commit:modified: readme.txt
readme.txt文件被修改,但是没有添加到暂存区
use "git add <file>..." to update what will be committed
表示对readme.txt
文件,你可以使用git add <file>
命令,将文件更新添加到暂存区。
和第(2)步的
use "git add <file>..." to include in what will be committed
是有一点差别的。
use "git restore <file>..." to discard changes in working directory
表示可以通过git restore <file>...
命令,放弃工作目录中文件的更改。
就是还原文件。
Git早期版本该命令为git checkout --<file>...
。
no changes added to commit (use "git add" and/or "git commit -a")
表示你没有添加要提交的更改,and/or
表示你可使用“git add”把变更文件添加到暂存区,在通过"git commit -a"提交到本地版本库
你也可以通过git commit -a
直接把变更的文件提交到本地版本库。
注意使用git commit -a
命令用加文件名。
4)把修改后的文件提交到暂存区。
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git add readme.txt warning: LF will be replaced by CRLF in readme.txt. The file will have its original line endings in your working directory L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git status On branch master Changes to be committed: (use "git restore --staged <file>..." to unstage) modified: readme.txt # 文件名为绿色
说明:
Changes to be committed: modified: readme.txt
readme.txt的修改已被Git追踪到
use "git restore --staged <file>..." to unstage
你可以用git restore --staged <file>...命令,
将文件从暂存区撤出,但不会撤销文件的更改。
5)将修改过后的文件提交到本地版本库。
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git commit readme.txt -m 'modified readme.txt' warning: LF will be replaced by CRLF in readme.txt. The file will have its original line endings in your working directory [master e704334] modified readme.txt 1 file changed, 1 insertion(+)
可以看到,master
后没有 (root-commit
)了,因为根提交只有一次。
新创建的文件先添加到暂存区,然后添加到本地版本库。
而已经提交到本地版本库的文件,修改了,可以按照上面操作,也可以直接提交到本地版本库。
序号 | Git命令 | 说明 |
---|---|---|
1 | git init | 初始化本地版本库。 |
2 | git status | 查看当前工作区和暂存区文件的状态。 |
3 | git add <file>... | 可以将文件添加到暂存区。 |
4 | git commit -m ' ' | 提交更新。 |