Git学习——Git操作
创建一个版本库:
mkdir learngit
cd learngit
pwd //显示当前目录,目录名不要包含中文
/users/windows/learngit
git init 把这个目录变为git可以管理的仓库
Initialized empty Git repository in /Users/windows/learngit/.git/
learngit是工作区,.git是Git的版本库
若没看见.git目录,可以用ls -ah命令
将文件添加到git仓库:git add <file>:git add readme.txt
提交到仓库:git commit -m "message":git commit -m "a txt file"
修改了文件内容:
查看修改结果:git status:可以提示文件被修改过,但是还没提交
查看修改的内容:git diff
添加:git add readme.txt
查看仓库的状态:git status:可以知道将要被提交的修改包括该文件
提交:git commit -m "update txt file"
提交后,可以再用git status查看当前仓库的状态
版本回退
提交几次修改后的文件:(第一个版本:a txt file;第二个版本:update txt file)
查看提交的历史记录:git log:若嫌输出的内容太多,则可以添加:--pretty=oneline
即git log --pretty=oneline
把第二个版本回退到第一个版本:git reset:git reset --hard HEAD
(HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id)
查看内容是不是第一个版本:cat <file>
看看现在版本库的状态:git log:此时已经看不见第二个版本
如果想要回到第二个版本:
若之前的命令行窗口没关闭,则可以通过git log的日志信息进行查找 commit id:git reset --hard <commit id>;
若之前的命令行关闭,则可以通过git reflog进行查找,git reflog用来记录每一次的命令
工作区和暂存区
stage暂存区
git add实质是将文件添加到暂存区里
Git commit实质是把暂存区的所有内容提交到当前分支
管理修改
add一个文件到暂存区,修改了这个文件,并commit,查看status,发现文件没有被修改且提交;
若要将第二次修改的提交,则:
第一次修改 -> git add -> 第二次修改 -> git add -> git commit
撤销修改
将文件已修改,在工作区发现有错误,可以用git status进行查看,Git提示:git checkout --<file>可以丢弃工作区的修改,即:把该文件在工作区的修改全部撤销,这里分两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
(让这个文件回到最近一次git commit或git add时的状态)
将文件已经add到暂存区,在commit之前发现问题,通过git status进行查看,Git提示:git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区
(git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区,用HEAD时,表示是最新的版本)
删除文件
若在工作区删除了文件(rm命令)
工作区和版本库就不一样,运行git status命令会提示,就会存在两种选择:
一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit
另一种情况是删错了,因为版本库存在,所以可以把误删的文件恢复到最新版本:git checkout --<file>
(从来没有被添加到版本库就被删除的文件,是无法恢复的!)