名词解释
工作区(Working Directory)
在电脑里能看到的目录就是工作区。
版本库(Repository)
工作区的隐藏目录.git
是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage
(或者叫index
)的暂存区,还有Git自动创建的第一个分支master
,以及指向master
的一个指针叫HEAD
。
用git add
把文件添加进去,实际上就是把文件修改添加到暂存区;用git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支master
或其他分支。
创建
- 创建空文件夹/空目录:
$ mkdir 文件夹名
- 给git bash定位(如不写则默认/Users/系统用户名/):
$ cd 路径
- 显示当前目录:
$ pwd
- 将定位的目录变成Git可以管理的仓库:
$ git init
- 把文件添加到仓库:
$ git add 文件名
(所有文件:文件名改成.
) - 把文件提交到仓库:
$ git commit -m "你的注释"
查看
- 查看状态:
$ git status
- 查看提交日志:
$ git log
$ git log --pretty=oneline
$ git --graph
$ git log --graph --pretty=oneline --abbrev-commit
- 查看命令日志:
$ git reflog
- 查看工作区和版本库里面最新版本的区别:
$ git diff HEAD -- 文件名
退出按q
删除
- 删除文件:
$ rm test.txt
- 在版本库中删除:
git rm 文件名
+git commit -m "你的注释"
恢复
- 返回上一个版本:
$ git reset --hard HEAD^ //表示回到上一个版本
$ git reset --hard HEAD^^ //表示回到上上一个版本
$ git reset --hard HEAD~50 //表示回到上50个版本
$ git reset --hard 写提交的ID
(恢复顺序:先暂存区撤销后工作区丢弃)
- 把暂存区的修改撤销掉(unstage):
$ git reset HEAD 文件名
- 丢弃工作区的修改:
$ git checkout -- 文件名
远程仓库
- 创建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
(在/Users/用户名/里找到.ssh
目录,里面有id_rsa
和id_rsa.pub
两个文件,这两个就是SSH Key的秘钥对,id_rsa
是私钥,不要泄露!id_rsa.pub
是公钥。) - 关联远程库:
$ git remote add origin git@github.com:你在GitHub用户名/文件夹名字.git
(或者:$ git remote add origin http://github.com/githubusername/demo.git
) - 获取远程库与本地同步合并(如果远程库不为空必须做这一步,否则后面的提交会失败):
$ git pull --rebase origin master
- 推送到远程库:
$ git push origin master
- 推送到空远程库:
$ git push -u origin master
- 克隆远程库到本地:
git clone git@github.com:你在GitHub的用户名/文件夹名字.git
(或者:$ git clone http://github.com/githubusername/demo.git
) - git查看远程仓库地址命令:
$ git remote -v
分支
- 查看分支:
git branch
- 创建分支:
git branch 分支名字
- 切换分支:
git checkout 分支名字
或git switch 分支名字
- 创建+切换分支:
git checkout -b 分支名字
或git switch -c 分支名字
- 合并某分支到当前分支:
git merge 被合并的分支名字
- 禁用
FastForward
模式的合并分支:git merge --no-ff -m "你自己的注释" 被合并分支的名字
- 删除分支:
git branch -d 分支名字