Git学习记录
2017-01-24 15:47
302 查看
一、Linux上安装
Git是目前世界上最先进的分布式版本控制系统git ——查看系统是否安装了Git
sudo apt-get install git——完成Git的安装
安装完成后,还需要最后一步设置,在命令行输入: $ git config --global user.name "Your Name" $ git config --global user.email "email@example.com"
二、创建版本库
#1.选择一个合适的地方,创建一个空目录 $ mkdir learngit $ cd learngit $ pwd /Users/michael/learngit #2.通过git init命令把这个目录变成Git可以管理的仓库,工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库 $ git init Initialized empty Git repository in /Users/michael/learngit/.git/ #3.用命令git add告诉Git,把文件添加到仓库(暂存区stage) $ git add readme.txt #4.用命令git commit告诉Git,把文件提交到仓库(分支master) #commit可以一次提交很多文件,所以你可以多次add不同的文件,如;$ git add file2.txt file3.txt #git commit只负责把暂存区的修改提交(add过后,commit才会提交) $ git commit -m "wrote a readme file" #用git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别 $ git diff HEAD -- readme.txt
三、修改文件并提交
#git status命令可以让我们时刻掌握仓库当前的状态 $ git status #如果git status告诉你有文件被修改过,用git diff可以查看修改内容 $ git diff readme.txt #提交修改 $ git add readme.txt #在执行第二步git commit之前,我们再运行git status看看当前仓库的状态 #git status告诉我们,将要被提交的修改包括readme.txt,下一步,就可以放心地提交了 $ git status #提交 $ git commit -m "add distributed" #提交后,我们再用git status命令看看仓库的当前状态 $ git status
四、多次修改后版本退回
#git log命令显示从最近到最远的提交日志 $ git log #如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数,历史的时间线 $ git log --pretty=oneline 3628164fb26d48395383f8f31179f24e0882e1e0 append GPL ea34578d5496d7dd233c827ed32a8cd576c5ee85 add distributed cb926e7ea50ad11b8f9e909c05226233bf755030 wrote a readme file #和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示,而且你看到的commit id和我的肯定不一样,以你自己的为准。为什么commit id需要用这么一大串数字表示呢?因为Git是分布式的版本控制系统,后面我们还要研究多人在同一个版本库里工作,如果大家都用1,2,3……作为版本号,那肯定就冲突了 #我们要把当前版本“append GPL”回退到上一个版本“add distributed” $ git reset --hard HEAD^ #指定回到未来的某个版本,版本号没必要写全,前几位就可以了,Git会自动去找 $ git reset --hard 3628164 #git reflog用来记录你的每一次命令 $ git reflog
五、撤销修改
用暂存区覆盖工作区 git checkout – file 可以丢弃工作区的修改 用分支覆盖暂存区 git reset HEAD file可以丢弃暂存区的修改
reset和checkout的区别:
git reset HEAD^ //回退至上一版本, 并重置缓存区
git reset HEAD~10 //回退至10个版本之前, 并重置缓存区
git reset –soft HEAD //回退时不重置缓存区和工作区
git reset –mixed HEAD //回退时重置缓存区, 默认选项
git reset –hard HEAD //回退时重置缓存区和工作区
git reset //不指定HEAD, 用来清空缓存区的修改
git reset filename //清空缓存区指定文件的修改
git reset –hard filename //清空工作区和缓存区指定文件的修改
git checkout branch //切换branch, 同时重置缓存区和工作区, 如果工作区有修改没有提交, 需要先commit或stash
git checkout branch –force //切换branch, 同时重置缓存区和工作区
git checkout –force //不指定branch, 用来清空工作区的修改(缓存区不变, 如果之前有add, 则工作区与缓存区一致)
git checkout – filename //清空工作区指定文件的修改
六、远程仓库
1.添加远程库
首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库learngit
#远程库的名字就是origin,这是Git默认的叫法,也可以改成别的 $git remote add origin https://github.com/deliaXia/learngit.git #把本地库的所有内容推送到远程库上 #由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令 $ git push -u origin master #此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改; $ git push origin master
2.从远程库克隆
首先,登陆GitHub,创建一个新的仓库,名字叫gitskills,我们勾选Initialize this repository with a README,这样GitHub会自动为我们创建一个README.md文件。创建完毕后,可以看到README.md文件
$ git clone https://github.com/deliaXia/gitskills.git[/code]
Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快$ git clone git@github.com:deliaXia/gitskills.git
七、分支管理
1.创建与合并分支
查看分支:git branch——列出所有分支,当前分支前面会标一个*号
创建分支:git branch
切换分支:git checkout
创建+切换分支:git checkout -b
合并某分支到当前分支:git merge
删除分支:git branch -d
2.解决冲突
不同分支下修改同一文件并完成add commit,合并分支时发生修改内容不一致的冲突:#告诉我们冲突的文件 $ git status #直接查看文件内容 $ gedit readme.txt <<<<<<< HEAD Creating a new branch is quick & simple. ======= Creating a new branch is quick AND simple. >>>>>>> feature1 #修改一致后,add commit #用带参数的git log也可以看到分支的合并情况 $ git log --graph --pretty=oneline --abbrev-commit #最后删除多余的分支#准备合并dev分支,请注意--no-ff参数,表示禁用Fast forward(这种模式下,删除分支后,会丢掉分支信息) $ git merge --no-ff -m "merge with no-ff" dev
[1]Git教程——廖雪峰的官方网站
相关文章推荐
- 【Git 学习笔记】2.2 - 记录每次更新到仓库
- git学习笔记——查看git历史记录
- Git学习个人整理记录(二)
- git 学习记录
- xcode6 cocos2dx开玩笑git和github学习记录
- Git学习,记录一下!
- Git学习记录-------(一)
- Git学习记录
- git学习遇到问题记录。不定时更新
- git学习教程记录
- git学习笔记——查看git历史记录
- git学习记录
- 个人心得记录 --学习廖雪峰的git教程
- Git学习个人整理记录(一)
- git学习使用记录
- git实用操作学习记录
- 关于Git的简单学习记录
- git 学习记录
- 版本控制管理工具--git的学习记录
- 实习先做一点事——菜鸟学习git记录