查看下图,了解git的几个概念,会对git的使用有一个大致的了解。
- Workspace:工作区
- Index / Stage:暂存区
- Repository:仓库区(或本地仓库)
- Remote:远程仓库
Git本地版本库操作
1、查看git全局配置信息
2、配置git的全局变量
1 2
| $ git config --global user.name [username] $ git config --global user.email [email]
|
3、查看本地git公钥和私钥
4、生成git公钥和秘钥
1
| $ ssh-keygen -t rsa -C [email]
|
5、将本地目录初始化成本地git版本库
1 2
| $ cd [directory] $ git init
|
6、本地分支管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| $ git branch // 查看本地所有分支及当前所在分支情况
$ git branch [branchname] // 当branchname不存在时,则创建新的branchname分支
$ git checkout [branchname] // 切换到branchname 分支上
$ git checkout -b [branchname] // 创建新分支并切换到新分支上
$ git checkout -b [branchname] [tagname] // 新建一个分支指定到某个tag
$ git checkout -b [branchname] [remote|origin]/[branchname] // 新建一个本地分支并且关联远端分支
$ git branch -d [branchname] // 删除某个分支
$ git merge [branchname] // merge某个分支到当前分支
$ git merge [branchname1] [branchname2] // 同上,将branchname1 合并到 branchname2上
$ git rebase [branchname] // 将branchname 合并到当前分支
$ git cherry-pick [commit] // 遴选某个commit点到当前分支并作为新的commit提交
|
关于merge和rebase的区别,大家可以点击这里去查看,说的比较详尽,结合实战去理解。
7、版本管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| $ git status // 查看当前分支中的文件状态
$ git add [filename] // 添加某个文件到暂存区(此文件需有改动)
$ git add . // 添加所有改动过的文件到暂存区
$ git commit -m [message] // 将暂存区的文件提交到本地仓库区
$ git commit --amend -m [message] // 重新提交一次或改写一次提交信息到本地仓库区
$ git checkout [filename] // 丢弃某个修改的文件
$ git checkout . // 丢弃所有的修改
$ git log // 查看提交记录
$ git log [branch] // 查看某个分支的log
$ git log --pretty=oneline // 将每次提交的记录精简成一行显示
$ git blame [filename] // 查看某个文件是谁在什么时间修改了什么内容
$ git reset [filename] // 将指定文件从暂存区恢复到上一次commit的提交,但工作区文件不变
$ git reset [commit] // 将暂存区内容重置到指定commit上,但工作区不变
$ git reset --hard // 重置暂存区和工作区,使其保持和上一次commit的提交一致
$ git reset --hard [commit] // 将暂存区和工作区重置到指定commit时一致
$ git revert HEAD // 恢复到上一次提交,并创建一次新的提交
$ git revert [commit] // 恢复到指定的某一次提交,并创建新的提交
$ git push --force // 强制向远端仓库推送,并覆盖远端内容,使其保持和本次提交的一致
|
8、查看文件差异
1 2 3 4 5 6 7 8 9
| $ git diff [filename] // 比较当前文件和暂存区文件的差异
$ git diff // 同上
$ git diff [commit1] [commit2] // 比较两次提交之间的差异
$ git diff [branch1] [branch2] // 比较两个分支之间的差异
$ git diff --staged / --cached // 比较暂存区和版本库之间的差异
|
9、标签管理
1 2 3 4 5 6 7 8 9 10 11 12 13
| $ git tag // 查看当前版本库中的所有tag
$ git tag [tagname] // 在当前commit上新建一个tag
$ git tag [tagname] [commit] // 在指定commit上新建一个tag
$ git show [tagname] // 查看tag信息
$ git push [remote|origin] [tagname] // 提交指定tag到远端仓库
$ git push [remote|origin] --tags // 提交所有tag到远端仓库
$ git push [remote|origin] --delete [tagname] // 删除远端tag
|
Git远端仓库管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| $ git remote add [remote|origin] 'remote url' // 将本地仓库与远端仓库关联
$ git push -u [remote|origin] [branchname] // 将某个分支的所有修改推送到远端并实现关联
$ git push [remote|origin] [branchname] // 推送某个分支到远端
$ git push [remote|origin] --force // 强行向远端推送当前分支,并覆盖远端的当前分支内容,即便存在冲突
$ git pull [remote|origin] [branchname] // 更新远端变更到本地仓库,并和本地文件合并
$ git fetch [remote|origin] [branchname] // 下载远端更新,但不和本地文件合并
$ git branch -r // 查看远端的所有分支
$ git branch -r -D [remote|origin] [branchname] // 删除远端某个分支
$ git branch origin :[branchname] // 删除远端分支后同步更新到远端
$ git branch --set-upstream [branchname] origin/[branchname] // 将本地分支与远端分支进行关联
|
附一张git命令速查表
参考资料来源:常用Git命令清单、Git常用命令备忘、Git入门私房菜