基础操作
创建版本库(repository)
1.选择一个合适的地方,创建一个新目录
mkdir learngit
cd learngit
2.通过git init 命令把这个目录变成Git可以管理的仓库
git init
Initialized empty Git repository in /home/username/learngit/.git/
3.用命令git add ,把文件添加到暂存区:
git add readme.txt
4.用命令git commit ,把暂存区的所有内容提交到当前分支(master):
git commit -m "本次提交说明"
版本回退
1.修改readme.txt文件,git status 查看状态
2.git diff readme.txt 查看修改后的文件与原文件的差异
3.添加并提交到仓库
git add readme.txt
git commit -m "修改说明"
3.显示提交日志git log ,加上--pretty=oneline 输出简洁信息
git log
回退到上一版本
Git中使用 HEAD 表示当前版本(即最新的提交),上一版本为HEAD**,上上版本为**HEAD^,…,如果往上有100个版本,HEAD~100
git reset --hard HEAD^
此时,git log查看,最新的那个版本已经看不到了,想要恢复,可以利用 git reflog 找到commit id:
git reset --hard 52b5642
Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD 指针,当你回退版本的时候,Git仅仅是把 HEAD 重指向上一版本:
工作区和暂存区
-
工作区(Working Directory) 就是电脑中能看到的目录,如前面的learngit文件夹就是一个工作区。 -
版本库(Repository) 工作区有一个隐藏的目录 .git ,这个不算工作区,而是Git的版本库。 版本库中最重要的就是称为 stage/index 的暂存区,还有Git为我们自动创建的第一个分支仓库master ,以及指向master 的一个指针叫HEAD 。 以下笔记内容来自评论区@九只蜗牛Leo 工作区>>>>暂存区>>>>仓库
-
git add 把文件从工作区>>>>暂存区,git commit 把文件从暂存区>>>>仓库, -
git diff 查看工作区和暂存区差异, -
git diff --cached 查看暂存区和仓库差异, -
git diff HEAD 查看工作区和仓库的差异, -
git add 的反向命令 git checkout ,撤销工作区修改,即把暂存区最新版本转移到工作区, -
git commit 的反向命令 git reset HEAD ,就是把仓库最新版本转移到暂存区
撤销修改
回退在工作区修改了文件,但未add到暂存区的文件:
git restore <file>
git checkout -- <file>
回退已经add到暂存区,还未进行commit的文件:
git restore --staged <file>
git reset HEAD <file>
删除文件
git rm <file>
git commit -m "remove file"
远程仓库
添加远程仓库
-
在Github上 ,Create a new repo,仓库名:learngit,其他默认。 -
根据GitHub提示,在本地learngit仓库下执行: git remote add origin git@github.com:jwcen/learngit.git
-
把本地库的所有内容推送到远程库: 当前分支master 推送到远程 origin,远程库为 origin(默认名)。 git push -u origin master
Git把本地的master 分支内容推送的远程新的master 分支,还会把本地的master 分支和远程的master 分支关联起来。
注意:
执行推送命令后如果要你输入账号和密码:
账号:GitHub用户名
密码:
-
需要在【settings】中找到【developer settings】-> 【Personal access tokens】-> 【Generate new token】 2. 然后复制生成的token
解决 git push 后每次都要输入账号密码:
git config credential.helper store
git config -- global credential.helper store
删除远程库
-
建议先查看远程库信息 git remote -v
-
根据名字删除,比如删除 origin git remote rm origin
此处的“删除”其实是解除了本地和远程的绑定关系,并不是物理上删除了远程库。远程库本身并没有任何改动。要真正删除远程库,需要登录到GitHub,在后台页面找到删除按钮再删除。
从远程库克隆
git clone git@github.com:jwcen/gitskills.git
如果有多个人协作开发,那么每个人各自从远程克隆一份就可以了。
Git支持多种协议,默认的git:// 使用ssh,也可使用https 等其他协议。
使用https 除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh 协议而只能用https 。
|