git 笔记
版本库
1.repository
在一个合适的地方,创建一个空目录
$ mkdir learngit
$ cd learngit
$ pwd
/User/leon/learngit
pwd命令用于显示当前的目录,在我的电脑上,这个仓库位于/user/michael/learngit
2.git init 将当前目录变成git 可以管理的仓库。
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个
.git
的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了3. 添加文件到git仓库,总共分两步
3.1 git add <file>,注意可以反复使用,添加多个文件。
3.2 使用git commit命令
其中,git commit
命令,-m
后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录
不输入这个也可以,但是强烈不建议这样做。
add 每次提交一个文件,add可以多次add不同的文件。
4. git status 掌握工作区的状态
git status告诉你有文件修改过,git diff 可以查看修改的内容。
修改文件和提交新文件一样步骤,
5.git log 显示从近到最远的提交日志,我们可以看到三次提交,最近的一次是 append GPL,上一次是add dist
6.版本回退,git reset - -hard 123456
版本号会模糊查找,
git reflow 记录一次命令,可以在关机之后 查找到那个
7.git 记录的是修改而不是文件
每次修改都是先 add 到暂存区,之后再commit
8.撤销修改
git checkout 会撤销修改。git checkout - - test.txt 文件在工作区的修改全部撤销。
两种情况:1)text.txt 修改后还没有放到暂存区,
2)test.txt 已经添加到暂存区,又做了修改,撤销修改就回到了添加到暂存区后的状态。
文件回到最后一次的 git commit 或者 git add 时候的状态。
需要注意的是 git checkout 中的 - - 很重要。缺了就编程切换到另一个分支
小结:
1.当你改乱了工作区的某个文件的内容,想直接丢弃工作区的修改的时候,用git checkout — file
2.不但改乱了工作区的某个文件,还添加到了暂存区的时候,想丢弃修改,
2.1 get reset HEAD file 回到了场景1,第二步按照场景1来操作。
3.已经提交了不合适的修改到版本库的时候,想要撤销本次提交,参考版本 6 版本回退,不过前提是没有推送到远程库
9.删除文件
$ rm test.txt 就是用命令行删除本地工作区的文件,或者直接自己删除
这时候用 git status 可以看到你哪些文件被删除
现在有两个选择,
1)从版本库中删除,git rm 之后 git commit
$ git rm test.txt
rm 'test.txt'
$ git commit -m "remove test.txt"
[master d17efd8] remove test.txt
1 file changed, 1 deletion(-)
delete mode 100644 test.txt
这样文件就从版本库中删除了
2)如果你删除错了,git checkout - - text.txt
小结:
其实, git checkout 就是用版本库里的版本替换工作区的版本,任何情况都可以一键还原
git rm用于删除一个文件,如果一个文件已经被提交到版本库,那么不需要担心误删除,
需要注意的是你只能回复文件到最新的版本