$ mkdir learngit
$ cd learngit
$ pwd
$ git init
Initialized empty Git repository in xxxxxxx
ls -ah 显示所有文件(含隐藏文件)
git add readme.txt
git status
git add f1.txt f2.txt
git add *
git status
git commit -m "xxxx"
xxxx可以写一些备注,可以写自己做了哪些事。
add * 是什么意思?
git diff
如果修改了readme.txt,可以用git diff查看修改情况。
此时可以用git status查看状态。
再次提交,需要先add,再commit。
git log
查看历史记录
git log --pretty=oneline
HEAD
指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
。穿梭前,用
git log
可以查看提交历史,以便确定要回退到哪个版本。要重返未来,用
git reflog
查看命令历史,以便确定要回到未来的哪个版本。
暂存区 stage
主分支 master
工作区……
每次修改,如果不add
到暂存区,那就不会加入到commit
中
在工作区中修改了文件,还没有add到stage,可以用checkout命令撤销工作区中的修改。
qcy@qcyfred-pc MINGW32 /d/GitHub/learngit (master)
$ git status
On branch master
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: readme.txt
no changes added to commit (use "git add" and/or "git commit -a")
qcy@qcyfred-pc MINGW32 /d/GitHub/learngit (master)
$ git checkout readme.txt
qcy@qcyfred-pc MINGW32 /d/GitHub/learngit (master)
$ git status
On branch master
nothing to commit, working tree clean
在工作区中修改了文件,又add到了stage。现在要撤销。
(1)
qcy@qcyfred-pc MINGW32 /d/GitHub/learngit (master)
$ git add readme.txt
qcy@qcyfred-pc MINGW32 /d/GitHub/learngit (master)
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: readme.txt
$ git reset HEAD readme.txt
Unstaged changes after reset:
M readme.txt
(2)
$ git status
On branch master
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)
一不小心删除了工作区中的文件
rm f1.txt
git checkout f1.txt
可以从仓库里找出来(只要提交过)。