您的位置:首页 > 其它

Git学习小记(一)

2016-03-30 21:27 218 查看
------【查看类指令】

git diff :查看修改了之后,未add的文件的修改情况(比较的是工作区和暂存区的不同),diff就是different的缩写

git status : 查看修改后没有add的文件状态(红色),或者add后还没有commit的文件状态(绿色)

------【时光机类指令】

git reset --hard HEAD^ 退回到最近一次commit之前的状态(回退两个版本是HEAD^^,回退n个版本是HEAD^n)

git reset --hard 1234 退回到版本号为1234的版本

git reflog 记录了每一次执行的命令

------【提交类指令】

工作区 --->  暂存区 ---> 版本库

git add 文件路径 :将文件从工作区添加到暂存区

git commit -m "message" : 将暂存区的所有内容提交到版本库中去

(新建或者新被复制到工作目录下的文件,处于一种Untracked状态,需要add后在commit才能加入版本库)

【相关概念】

工作区--被git管理的目录,也是就.git所在的目录

暂存区stage--用来存放add的东西(也叫缓存区(Index))

分支--最终保存commit的东西

暂存区和分支同属于版本库

------【比较】

git diff 比较工作区和暂存区的不同

git diff --cached 比较暂存区和版本库分支的不同

注意:commit之后,暂存区中的东西和版本库分支保持一致,并没有并清空,否则执行git diff会显示不同

------【Git和Vim】

git commit 回车后进入到Vim编辑器,输入提交信息

注意:进入Vim后,默认是命令行模式,要按一下i,才能进入到插入模式来输入信息。输入完毕之后,按ESC键回到命令行模式,输入ZZ来保存并退出

git log 回车后进入到Vim的底行模式,按q退出

git diff 回车后进入到Vim的底行模式,按q退出

------【撤销修改】

git checkout -- (file) :丢弃工作区的修改

--情况1.工作区(状态2),暂存区(状态1),版本库(状态1)

将工作区恢复为状态1

--情况2.工作区(状态3),暂存区(状态2),版本库(状态1)

将工作区恢复为状态2

--情况3.工作区(状态2),暂存区(状态2),版本库(状态1)

没有任何变化

那么问题来了,情况3如何撤销呢?

--git reset HEAD (file) : 将暂存区还原为版本库中的状态

执行之后,工作区(状态2),暂存区(状态1),版本库(状态1)

------【删除文件】

右键删除文件后,在工作区就看不到该文件了,但是版本库中还有最近一次commit的该文件的版本,可以通过上面的撤销修改的命令来恢复。

这里要注意的是,在Git中的“修改”的概念。

----Git中修改的含义

--文件内容:增加,删除

--文件:新建,删除

上面说到,仅仅在工作区下删除文件,版本库中仍然是有备份的,那如果想要在版本库中也删除这个文件呢?

----删除文件(工作区和版本库中的都删除)

--1.右键delete文件

--2.git rm (file)  (这里可以理解为删除这个特殊操作的add,也就是将工作区内容同步到暂存区,就是暂存区也删除这个文件)

--3.git commit -m "message"

------【Https和SSH两种方式】

clone 项目到本地的时候,常用的是两种方式,https + url 或者SSH + url.

---Https方式

每次push都要输入账号密码

----SSH方式(本地库推送到远程库)

--clone之前要先配置SSH key,这要求自己是项目的拥有者。这种方式不用每次push都输入账号密码

--在GitHub上创建一个空仓库,然后把本地的仓库关联到GitHub上

-本地库关联远程库

git remote add origin git@github.com:androidnote/GitDemo.git

-本地库master分支内容推送到远程库master分支上

git push -u origin master

-本地提交之后,推送到远程库

git push origin master

-温馨提示:

第一次push会出现警告,输入yes即可

---Https方式(远程库clone到本地)

git clone https://github.com/androidnote/GitDemo.git
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  git