一、创建版本库
git init
git add
git commit -m “注释”
git status
git diff
二、版本回退
git log
git log -pretty=oneline
git reset --hard 版本号
git reflog
三、工作区和暂存区
工作区: 在电脑上能看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等都属于工作区范畴。
版本库:工作区有一个隐藏目录的.git这个不属于工作区,这是版本库。里面存放了很多东西,最重要的就是stage(暂存区),还有Git为我们自动创建的第一个master分支,以及只想master的一个指针Head。
第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。
第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上
四、git撤销修改和删除文件操作
1. 撤销修改
在我未提交之前,我发现添加的内容有误,所以我得马上恢复以前的版本,现在我可以有如下几种方法可以做修改:
第一:如果我知道要删掉那些内容的话,直接手动更改去掉那些需要的文件,然后add添加到暂存区,最后commit掉。
第二:我可以按以前的方法直接恢复到上一个版本。使用 git reset –hard HEAD^
git checkout --readme.txt
- readme.txt自动修改后,还没有放到暂存区,使用 撤销修改就回到和版本库一模一样的状态。
- 另外一种是readme.txt已经放入暂存区了,接着又作了修改,撤销修改就回到添加暂存区后的状态。
2.删除文件
rm 文件名 // 直接在文件目录中把文件删了
commit命令 提交掉 // 从版本库中删掉了此文件的话
只要没有commit之前,在版本库中恢复此文件
git checkout -- b.txt // 恢复b.txt文件
git commit -m "注释"
五、远程仓库
第一步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,
如果有的话,直接跳过此如下命令,
如果没有的话,打开命令行,输入如下命令:
- ssh-keygen -t rsa –C “youremail@example.com”
git remote add origin https://github.com/tugenhua0707/testgit.git
git push -u origin master //把本地仓库分支master的内容推送到元仓库去
从现在起,只要本地作了提交,就可以通过如下命令:
git push origin master
六:创建与合并分支
git checkout -b dev // 创建并切换分支 相当于命令 git branch dev git checkout dev
git branch // 查看当前的分支
git checkout master // 切换到master分支
git merge dev // 在master分支上合并dev分支内容
git branch -d dev // 删除dev分支
git branch
总结创建与合并分支命令如下:
查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout –b name
合并某分支到当前分支:git merge name
删除分支:git branch –d name
通常合并分支时,git一般使用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,现在我们来使用带参数 –no-ff来禁用”Fast forward”模式。首先我们来做demo演示下:
- 创建一个dev分支。
- 修改readme.txt内容。
- 添加到暂存区。
- 切换回主分支(master)。
- 合并dev分支,使用命令 git merge –no-ff -m “注释” dev
- 查看历史记录
七:bug分支
1.git stash // Git还提供了一个stash功能,可以把当前工作现场 ”隐藏起来”,等以后恢复现场后继续工作
2.git status
git checkout -b issue-404 // 在master分支上建立临时分支
git add 文件名
git commit -m “注释”
git checkout master // 修复完成后,切换到master上,并完成合并,最后删除issue-404分支
git merge –no-off -m “注释” issue-404
git branch -d issue-404
git checkout dev
git status
git stash list
八 、多人协作
当你从远程库克隆时候,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且远程库的默认名称是origin。
1. git remote // 要查看远程库的信息
2. git remote –v // 要查看远程库的详细信息
1. 推送分支
推送分支就是把该分支上所有本地提交到远程库中,推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上
git push origin master
那么一般情况下,那些分支要推送呢?
-
- master分支是主分支,因此要时刻与远程同步。
- 一些修复bug分支不需要推送到远程去,可以先合并到主分支上,然后把主分支master推送到远程去。
2. 抓取分支
- git push origin dev // 把dev分支推送到远程库
- git clone 地址 // 进入testgit2目录,进行克隆远程的库到本地来
- git checkout –b dev origin/dev // 在dev分支上做开发,就必须把远程的origin的dev分支到本地来
4 git add checkout git commit -m “注释”
- git push origin dev // 把现在的dev推送到远程去
小伙伴们已经向origin/dev分支上推送了提交,而我在我的目录文件下也对同样的文件同个地方作了修改,也试图推送到远程库时
- 首先,可以试图用git push origin branch-name推送自己的修改.
- 如果推送失败,则因为远程分支比你的本地更新早,需要先用git pull试图合并。
- 如果合并有冲突,则需要解决冲突,并在本地提交。再用git push origin branch-name推送。
mkdir: XX (创建一个空目录 XX指目录名)
pwd: 显示当前目录的路径。
git init 把当前的目录变成可以管理的git仓库,生成隐藏.git文件。
git add XX 把xx文件添加到暂存区去。
git commit –m “XX” 提交文件 –m 后面的是注释。
git status 查看仓库状态
git diff XX 查看XX文件修改了那些内容
git log 查看历史记录
git reset –hard HEAD^ 或者 git reset –hard HEAD~ 回退到上一个版本
(如果想回退到100个版本,使用git reset –hard HEAD~100 )
cat XX 查看XX文件内容
git reflog 查看历史记录的版本号id
git checkout — XX 把XX文件在工作区的修改全部撤销。
git rm XX 删除XX文件
git remote add origin https://github.com/tugenhua0707/testgit 关联一个远程库
git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库
git clone https://github.com/tugenhua0707/testgit 从远程库中克隆
git checkout –b dev 创建dev分支 并切换到dev分支上
git branch 查看当前所有的分支
git checkout master 切换回master分支
git merge dev 在当前的分支上合并dev分支
git branch –d dev 删除dev分支
git branch name 创建分支
git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作
git stash list 查看所有被隐藏的文件列表
git stash apply 恢复被隐藏的文件,但是内容不删除
git stash drop 删除文件
git stash pop 恢复文件的同时 也删除文件
git remote 查看远程库的信息
git remote –v 查看远程库的详细信息
git push origin master Git会把master分支推送到远程库对应的远程分支上