目录
git基本组成框架:Workspace、Stage、Repository、Remote
- Workspace:开发者工作区,当前写代码的目录
- Stage:暂存区/缓存区
- Repository:本地仓库,本地所有的提交都会保存在这里,git会保存好每一个历史版本
- Remote:远程仓库,服务器仓库
一、Git常用命令
1.设置用户签名
CC@LAPTOP-R4VGGC1O MINGW64 ~ # git config --global user.name 用户名
文件保存在:C:\Users\CC\.gitconfig
2.初始化本地库
git init 初始化当前目录为仓库,初始化后会自动将当前仓库设置为master
3.查看本地库状态
git status
# git status On branch master No commits yet nothing to commit (create/copy files and use "git add" to track) CC@LAPTOP-R4VGGC1O MINGW64 /e/Git/git-demo (master) $
新建文件并输入内容
CC@LAPTOP-R4VGGC1O MINGW64 /e/Git/git-demo (master) # vim hello.txt # ll total 1 -rw-r--r-- 1 CC 197121 11 Nov 14 22:13 hello.txt CC@LAPTOP-R4VGGC1O MINGW64 /e/Git/git-demo (master) # cat hello.txt hello git!
再次查看本地库状态
解释:untracked 原先没有的,新建的
CC@LAPTOP-R4VGGC1O MINGW64 /e/Git/git-demo (master) # git status On branch master No commits yet Untracked files: (use "git add <file>..." to include in what will be committed) hello.txt nothing added to commit but untracked files present (use "git add" to track)
4.添加暂存区
git add 文件名
这里要说明一点,当我们使用git add将文件提交到暂存区以后,我们在修改这个文件时,它跟暂存区内容是没有任何关系的!我们使用git commit提交时,它只会提交暂存区中的内容,当我们首次提交内容到暂存区后,我又修改了一下文件内容,如果想提交第二次修改,我们只需要再git add一次,然后再次使用git commit提交就可以了!
CC@LAPTOP-R4VGGC1O MINGW64 /e/Git/git-demo (master) # git add hello.txt warning: LF will be replaced by CRLF in hello.txt. The file will have its original line endings in your working directory
再次查看本地库状态,git已经追踪到了我们添加的文件,此时文件只是存在暂存区里面
CC@LAPTOP-R4VGGC1O MINGW64 /e/Git/git-demo (master) # git status On branch master No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: hello.txt
git rm --cached 文件名
从暂存区里面删除文件可采用上述命令,但是不会对工作区产生影响,文件仍然存在工作区里面!
CC@LAPTOP-R4VGGC1O MINGW64 /e/Git/git-demo (master) # git rm --cached hello.txt rm 'hello.txt'
5.提交本地库
将暂存区的文件提交到本地库
git commit -m "日志信息" 文件名
CC@LAPTOP-R4VGGC1O MINGW64 /e/Git/git-demo (master) # git commit -m "first commit" hello.txt warning: LF will be replaced by CRLF in hello.txt. The file will have its original line endings in your working directory [master (root-commit) 689e0ac] first commit 1 file changed, 1 insertion(+) create mode 100644 hello.txt
再次查看本地库状态
CC@LAPTOP-R4VGGC1O MINGW64 /e/Git/git-demo (master) # git status On branch master nothing to commit, working tree clean
简单查看版本信息 689e0ac是版本号的简略写法
CC@LAPTOP-R4VGGC1O MINGW64 /e/Git/git-demo (master) # git reflog 689e0ac (HEAD -> master) HEAD@{0}: commit (initial): first commit
更详细的信息:git log
CC@LAPTOP-R4VGGC1O MINGW64 /e/Git/git-demo (master) # git log commit 689e0acc5cb9a374eb448a5ee4b73adf8a8b5924 (HEAD -> master) Author: chen <1424861923@qq.com> Date: Sun Nov 14 22:29:20 2021 +0800 first commit
6.修改文件内容,模拟版本更替
CC@LAPTOP-R4VGGC1O MINGW64 /e/Git/git-demo (master) # cat hello.txt hello git! CC@LAPTOP-R4VGGC1O MINGW64 /e/Git/git-demo (master) # vim hello.txt CC@LAPTOP-R4VGGC1O MINGW64 /e/Git/git-demo (master) # cat hello.txt hello hello hello hello hello! CC@LAPTOP-R4VGGC1O MINGW64 /e/Git/git-demo (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: hello.txt
修改后的文件添加到暂存区
CC@LAPTOP-R4VGGC1O MINGW64 /e/Git/git-demo (master) # git add hello.txt warning: LF will be replaced by CRLF in hello.txt. The file will have its original line endings in your working directory CC@LAPTOP-R4VGGC1O MINGW64 /e/Git/git-demo (master) # git status On branch master Changes to be committed: (use "git restore --staged <file>..." to unstage) modified: hello.txt
提交到本地库
CC@LAPTOP-R4VGGC1O MINGW64 /e/Git/git-demo (master) # git commit -m "second commit" hello.txt warning: LF will be replaced by CRLF in hello.txt. The file will have its original line endings in your working directory [master 6843ece] second commit 1 file changed, 1 insertion(+), 1 deletion(-)
再次查看本地库状态!
CC@LAPTOP-R4VGGC1O MINGW64 /e/Git/git-demo (master) # git status On branch master nothing to commit, working tree clean
查看版本信息,指针指向第二个版本
CC@LAPTOP-R4VGGC1O MINGW64 /e/Git/git-demo (master) # git reflog 6843ece (HEAD -> master) HEAD@{0}: commit: second commit 689e0ac HEAD@{1}: commit (initial): first commit
7.版本穿梭
CC@LAPTOP-R4VGGC1O MINGW64 /e/Git/git-d