1 Git整体架构
2 Git常用命令
命令 | 作用 |
---|---|
git config --global user.name | 指定作用域,设置项目用户名 [–local, --system] |
git config --global user.email | 指定作用域,设置项目用户邮箱 [–local, --system] |
git config --list --global | 查看配置 |
git add file_name | 把a从工作区提交到暂存区 |
git add -u | 把所有git跟踪的文件(工作区文件)提交到暂存区 (u: update) |
git commit -m message | 将暂存区内容提交到版本仓库 |
git commit -am’messeg’ | 将工作区内容直接提交到版本仓库 |
pwd | 查看当前工作的路径 |
ls -al | 查看当前文件夹的所有文件 |
git ls-files | 查看暂存区的所有文件 |
clear | 清空屏幕 |
echo “readme massege” > README.md | 创建readme.md并写入message |
ssh-keygen -t rsa -C “your email” | 生成公钥私钥 |
git remote add origin git@git.com:username/name.git | 关联远程仓库,origin为关联名 |
git push origin master | 提交代码到远程仓库,master为为分支名,默认为master |
cp file_path . | 将指定文件拷贝到当前目录 |
cp file_path new_file_name | 将指定文件拷贝到当前目录,修改命名为new_file_name |
cp -r folder_path . | 把目录folder拷贝到当前路径, (r: recusive 递归的意思) |
git log | 查看当前分支版本历史 |
git log --oneline | 简洁地查看当前分支版本历史 |
git log -nk --online | 简洁地查看最近的k次版本历史 |
git log --all | 查看所有分支版本历史 |
git log --all --graph | 以图形界面形式查看所有分支版本历史 |
mkdir folder_name | 创建文件夹 |
rm -r folder_name | 删除文件夹 |
q | 出现(end)时按q即可推出 |
vi your_script name | 使用vim打开脚本 |
mv file_name new_file_name | 把文件移动或重命名 |
git branch -v | 查看本地所有分支 |
git branch branch_name commit_d(可省略) | 根绝某次commit创建分支,若省略commit_id则使用HEAD指向的commit |
git checkout branch_name/ commit id | 切换到分支/某次commit(分离头指针) |
git checkout -b branch_name | 使用当前HEAD指向的commit创建分支,并切换到分支 |
git restore file | 丢弃某个文件在工作区的改动 |
git help --web log | 从web浏览器查看log命令的帮助 |
cat file_name | 查看工作区文件内容 |
git cat-file -t file_name | 查看对象类型,(commit, tree, blob) |
git cat-file -p file_name | 查看对象内容 |
git branch -av | 查看所有分支的详细信息 |
gik --all | 打开git图形界面 |
git diff <HEAD~n> <HEAD~m> | 比较HEAD前n次与HEAD前m次commit的差异 |
git branch -d branch_name | 删除分支 |
git commit --amend | 修改最近一次commit的massege |
git rebase -i pre_commit_id | 修改之前某次提交的commit,后续采用reward |
3 Git对象commit, tree, blob的关系
- commit: commit指代一次提交,记录了这次提交中所有项目文件的状态。如上图中,一次commit的信息由tree, parent, author, committer, message组成,这里的tree代表了整个项目文件夹。
- tree:tree代表某文件夹中的所有的内容,如果该文件夹中有子文件夹,那么该tree中将包含代表了子文件的tree,如上图912fa6所示。
- blob:blob代表了一个文件,比如一个txt文本文件,或者png图片文件,被tree所包含。