简介
GIT是一个分布式版本控制软件,2005年发布。
之前的版本控制工具: CVS、Subversion、SVN。
通过GIT进行版本控制的源代码托管服务的主流网站有Github、Gitlab、Bitbucket。
国产的托管平台有:码云,coding。
git工具:命令行,编辑器集成,github客户端等方式。
Git很强大,也很简单。全部命令非常多,但完成日常工作只需要掌握 极其少数的命令即可。其他的可以在工作中遇到调整再去学习。建议初学者使用命令行操作, 使用客户端仅查看变化以便理解git的作用。
安装
- GIT客户端
- Mac用户安装XCode之后执行GIT命令会提示安装
作用
- GIT的作用主要有两个:文件管理,多人协作。
文件管理:GIT在不断的备份文件(GIT内部实际上使用的是diff存储每次的更改而不是真正的备份全部)。
多人协作:GIT通过代码合并,分支管理等功能让多名参与者同时开发项目。
核心概念
workspace 工作区
stage 暂存区
repository 本地仓库
remote 远程仓库
总的来说分为远程仓库和本地仓库,远程仓储用来储存项目的最新代码,本地仓储用来个人开发,个人可以从远程pull最新的代码,也可以将自己修改的代码push到远程仓储。
术语
单词 | 释义 | 单词 | 释义 |
---|---|---|---|
repository | 版本库 | branch | 分支 |
checkout | 撤销 | reset | 重置 |
log | 日志 | merge | 合并 |
stash | 隐藏 | drop | 放弃 |
push | 推送 | pull | 拉 |
GIT常用命令
安装和配置
-
git help :git子命令和核心概念一览表
- git help [subcommand]:查看指定git子命令的简介
-
git config
- git config --list 查看git配置列表
- git config -e [--global] 查看编辑git配置文件
- git config user.name "YOUR_NAME" 查看/设置用户名(当前项目)
- git config user.email "YOUR_EMAIL" 查看/设置用户邮箱(当前项目)
- git config --global user.name "YOUR_NAME" 查看/设置用户名(全局)
- git config --global user.email "YOUR_EMAIL" 查看/设置用户邮箱(全局)
vim ~/.gitconfig:git配置文件
拉取项目
- git clone [URL]
作为一个初学者可以去github上面新建一个账号,随意折腾。
文件操作
git add .
git add [file1] [file2]
git add [dir1] [dir2]
git rm:删除文件或文件夹
git rm .
git rm [file1] [file2]
git rm --cached [file1] [file2] 从版本控制中移除但保留文件
-
git mv:重命名
- git mv [file1] [file2]
很多人误认为git add . 中的 . 是所有的意思。其实, . 指的是相对路径,即当前目录的意思。
提交代码
- git commit :提交指定文件或者目录到本地仓库
- git commit - m ’注释‘
- git commit [file] [folder] -m ‘注释’
- git commit -am ‘注释’ 提交工作区自上次commit之后的变化,直接到仓库区
- git commit -amend -m [message] 使用一次新的commit,替代上一次的提交
撤销
-
git checkout
- git checkout .
- git checkout [file1] [file2]
- git checkout [commit_id] [file]
-
git reset
- git reset [file1] [file2]
- git reset --hard
- git reset [commit_id]
- git reset --hard [commit_id]
隐藏
- git stash
- git stash
- git stash list
- git stash pop
- git stash prod
tip:很容易忘记你隐藏了什么,慎用~
查看信息
git status
-
git diff
- git diff :显示本地工作区和远程工作区的差异
- git diff [file] : 本地仓储指定文件和远程仓储的指定文件的差异
-
git log
- git log :显示commit历史
- git log --stat :显示commit历史应每次commit所变更的文件
- git log -p [files] :显示指定文件每次commit的diff
- git log -[number] --pretty --oneline:显示最近number次的log
-
git show
- git show [commit_id] :显示指定commit_id的diff
- git show [commit_id] [file] :显示指定commit_id下指定文件的diff
分支
-
git branch
- git branch :显示本地分支列表
- git branch -r :显示远程分支列表
- git branch -a :显示本地+远程仓储的分支列表
- git branch [branch_name]:新建分支,不切换分支
- git branch [branch_name] [commit_id]:新建分支,并指向指定commit_id
- git branch -d [branch_name]:删除分支
git checkout
git checkout [branch_name] :切换到指定的分支
git checkout -b [branch_name] :新建分支并且切换到该分支
git checkout - :切换到上一次所在的分支
-
git cherry-pick
- git cherry-pick [commit_id] : 将其他分支的commit提交到当前分支
-
git merge
- git merge [branch_name] : 合并指定分支到当前分支
远程同步
- git pull
- git pull [remote] [branch_name] :拉取远程库中的指定分支与本地分支合并
- git push
- git push origin [branch_name] :把当前分支与远程分支合并
远程仓库(即remote)的名字一般都是 origin
参考资料
此文章为作者在学习过程中的总结,用来分享学习。如有错误还请指出。谢谢!