原理
Git 命令很多,但日常使用只要记住下图的6个主要命令,就可以了。
工作区(Working Directory)
在git管理下的正常目录都算是工作区。就是你平时存放项目代码的地方。
暂存区(Stage/Index)
暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息。
仓库区(Repository或Git Directory)
仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本。
远程仓库(Remote Directory)
远程仓库,托管代码的服务器(如Github、Bitbucket等),可以简单的认为是你项目组中的一台电脑用于远程数据交换。
比较三个区之间的数据差别,可以用diff 命令:
git diff
工作区 vs 暂存区git diff head
工作区 vs 版本库git diff --cached
暂存区 vs 版本库
git的一般工作流程:
- 1、在工作目录中添加、修改文件;
- 2、将需要进行版本管理的文件放入暂存区域;
- 3、将暂存区域的文件提交到git仓库。
因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)。
常用命令
新建代码库
git init #在当前目录新建一个Git代码库 git init <project-name> # 新建一个目录,将其初始化为Git代码库 git clone <url> # 下载一个项目和它的整个代码历史
配置
# 设置提交代码时的用户信息 git config --global user.name "<your name>" git config --global user.email "<your email>"
增删文件
git add <file1> <file2> # 添加指定文件到暂存区 git add <dir> # 添加指定目录到暂存区,包括子目录 git add . # 添加当前目录的所有文件到暂存区 git add -p #同一文件多处变化时,分次提交 git rm <file1> <file2> # 删除工作区文件,并且将这次删除放入暂存区 git rm --cached <file> #停止追踪该文件,但该文件会保留在工作区 git mv <old_file> <new_file> # 改名文件,并且将这个改名放入暂存区
代码提交
git commit -m <message> # 提交暂存区到仓库区 git commit <file1> <file2> -m <message> # 提交暂存区的指定文件到仓库区 git commit -a #自上次commit变化后一次提交到仓库 git commit -v #所有时显示所有diff信息 git commit --amend -m <message> #替代上次commit git commit --amend <file1> <file2> # 重做上一次commit,并包括指定文件的新变化
分支
git branch #查看所有本地分支 git branch -r #查看所有远程分支 git branch -a #查看所有分支 git branch <new_branch> #新建分支,但仍在当前分支 git checkout -b <new_branch> #新建分支并切换到该分支,更常用 git branch --track <new_branch> <remote_branch> #新建分支并追踪远程分支 git checkout <branch_name> #切换到指定分支 git checkout - #切换到上一分支 git branch --set-upstream <branch> <remote_branch> #在现有分支和远程分支间建立追踪关系 git merge <branch> #合并指定分支到当前分支 git branch -d <branch> #删除分支 git push origin --delete <branch> #删除远程分支
标签
git tag # 列出所有tag git tag <tag_name> # 新建一个tag在当前commit git tag <tag_name> <commit> #新建一个tag在指定commit git tag -d <tag> # 删除本地tag git push origin :refs/tags/<tag_name> # 删除远程tag git show <tag> # 查看tag信息
查看信息
命令太多,好难记。需要用时再找。
git status # 显示有变更的文件 git log # 显示当前分支的版本历史 git log --stat # 显示commit历史,以及每次commit发生变更的文件 git log -S <keyword> # 搜索提交历史,根据关键词 git log <tag> HEAD --pretty=format:%s # 显示某个commit之后的所有变动,每个commit占据一行 git log --follow <file> # 显示某个文件的版本历史,包括文件改名 git whatchanged <file> # 显示某个文件的版本历史,包括文件改名 git log -p <file> # 显示指定文件相关的每一次diff git log -5 --pretty --oneline # 显示过去5次提交 git diff <first_branch> <second_branch> # 显示两次提交之间的差异 git reflog # 显示当前分支的最近几次提交
远程同步
git fetch <remote> # 下载远程仓库的所有变动 git remote -v # 显示所有远程仓库 git remote show <remote> # 显示某个远程仓库的信息 git remote add <new_remote> <url> # 增加一个新的远程仓库,并命名 git pull <remote> <branch> #pull=fetch + merge 取回远程仓库的变化,并与本地分支合并 gut push <remote> <branch> # 上传本地指定分支到远程仓库 git push <remote> --force # 强行推送当前分支到远程仓库,即使有冲突 git push <remote> --all # 推送所有分支到远程仓库
撤销
也好多命令,懒得记。
git checkout <file> # 恢复暂存区的指定文件到工作区 git checkout <commit> <file> # 恢复某个commit的指定文件到暂存区和工作区 git checkout . # 恢复暂存区的所有文件到工作区
其他
git archive # 生成一个可供发布的压缩包
其他
Linux配置别名
在Linux中配置git命令的别名,类似于Linux命令的alias。将以下设置加入~/.bashrc中:
git config --global alias.st status git config --global alias.co checkout git config --global alias.ci commit git config --global alias.br branch
以后用时,只需git st
或 git ci -m "message"
查看,其他命令类似。
Git图形界面
Git有很多图形界面工具,推荐SourceTree
来源:https://www.cnblogs.com/jessepeng/p/12519002.html