今天看了廖雪峰老师的git教程,为了加深记忆以及为了以后查阅方便,总结一下。
克隆远程库到本地库 -> 本地库修改 -> 链接本地库和远程库 -> 本地库提交到远程库
所有的命令都是git开始
git add <filename> 工作区->暂存区
git rm <filename> 删除 ==》 git add <filename>
git commit -m "commit hint" 暂存区->当前分支
git init 初始化一个本地目录为git管理的版本库
git status 查看git当前状态
git diff <filename> 查看file文件的修改
git remote rm <remoteName> 删除远程库的链接
git remote add <remoteName> remoteUrl 添加远程库的链接,其中的url为 git@github.com:<username>/<repositoryName>.git
git push remoteName branchName 提交本地库到远程库
git push -u remoteName branchName 提交本地库到远程库(第一次)
git clone remoteUrl 克隆远程库到本地库
git checkout -- <filename> 回滚工作区的版本,其实是用版本库中的版本替换工作区中的版本
git reset HEAD <filename> 回滚暂存区的版本,并把暂存区的修改回退到工作区
git reset commitId/head^/.. 回滚本地库的版本
git log 查看commitId
git介绍
1.Git是目前世界上最先进的分布式版本控制系统(没有之一)。
2.对于分布式版本控制系统,每个人的电脑上都是一个完整的版本库。
3.一般而言,分布式版本控制系统通常也有一个充当“中央服务器”的电脑,但是这个服务器仅仅用来方便大家交换自己的修改(eg..github、码云)
git安装
1.可以从Git官网直接下载安装程序,(网速慢的同学请移步国内镜像),按照默认选项安装即可。
安装完成后,找到git bash,蹦出一个类似命令行窗口的东西,以后的命令行相关操作均在git bash中进行。
2. 安装之后配置用户名和邮箱,一般和自己申请的github账号的用户名和邮箱相同。git是分布式控制系统,所以每台机器都必须自报家门。
(用户名可以不同,但是邮箱必须相同)。
$ git config --global user.name "your name"
$ git config --global user.email "email@XX.com"
git config文件用于配置git仓库,--global参数表示为全局配置,也就是对于你这台电脑上的全部git仓库都会使用这个配置。
3. 生成ssh密钥
$ ssh-keygen -t -rsa -C "youremail"
用户目录下,里面有id_rsa(私钥)和id_rsa.pub(公钥),登录github,打开头像-> setting -> ssh and GPG key,点击 new ssh key,填上任意Title,在Key文本框里粘贴id_rsa.pub中的内容。
4.让git显示颜色
$ git config --global color.ui true
5.忽略特殊文件:编写.gitignore,放在git工作取得根目录下,把不往远程库提交的文件名写入该文件中。
add -> commit该文件
6.配置别名
$ git config --global alias.<name> <rawName>
可以用Name替换rawName在命令行输入
推荐使用一下配置,使用git lg 代替 git log --......,方便查看修改。
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
从本地库到上传到远程库
$ git init 初始化一个本地仓库
$ git remote add <remoteName> git@github.com:<username>/<repositoryName>.git 建立远程库链接
remoteName为远程仓库名,一般为origin useaname为github账户名,repositoryName为仓库名
$ 第一次提交: git push -u <remoteName> <BranchName> -u会关联本地master分支和远程master分支
$ 其余的: git push <remoteName> <BranchName>
$ git remote rm <remoteName> 删除远程库链接
从远程库复制到本地库
$ git clone remoteUrl 克隆一个远程库到本地库 remoteUrl = git@github.com:<username>/<repositoryName>.git 建立远程库链接
remoteName为远程仓库名,一般为origin useaname为github账户名,repositoryName为仓库名
$ cd XXX 进入克隆后的本地库
本地版本库的基本操作
1.修改文件后使用git status查看状态
上面代码告诉我们,readme.txt文件已经修改过了,但是尚未add
注意git status中返回的命令,红线圈出来的。
2.提交文件到本地库
$ git add <filename> 增加修改到暂存区
3.提交删除到本地库
$ rm <filename> 删除工作区的文件
$ git rm <filename> 删除命令放入缓存区 和 git add <fiename>作用相当
$ git checkout -- <filename> 撤销删除工作区的文件
4.撤销修改
撤销修改
若只是更改了工作区的文件
git checkout -- <filename> 回滚工作区的该文件到上一次git add或者git commit,
如果缓存区有,则回滚到缓存区中文件的状态;否则,回滚到版本库中文件的状态。
若只是放入了缓存区 add
git reset HEAD <filename> 把暂存区的修改回退到工作区,Head表示为最新版本。
git checkout -- <filename> 回滚工作区的文件
若提交到了本地版本库 commit
git reset head^
5.把所做的修改提交到本地库
git commit -m "commit hint" 暂存区->本地库
版本回退问题
1.在git中,head表示当前版本,上一个版本是head^,上上一个版本是head^^,往上100个版本是head~100
2.版本号没必要写全
3.工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
4.Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向
master的一个指针叫head。
5.git跟踪并管理的是修改
版本回退:
git log查看要回退的版本的commitId,一般 git log --pretty = oneline
git reset --hard commitId/head^/head^^/... 回退到commitId/head^/head^^/...指定的版本
git reflog 用来记录每一次命令,一般用于重返未来
小tips:
1.版本库,又名仓库,英文名repository,可以认为是一个目录,该目录内的所有文件是仓库内的货物,被git管理。每个文件的增加、修改、删除git都能追踪,也可以还原之前的某个状态。
2.尽量使用纯文本编写文件,git无法追踪二进制格式文件的改变,word格式也为二进制格式