写在前面
生命在于运动,学习在于总结。
先安利下(廖雪峰 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000)
这几天在学git,百度各种教程感觉都对不上号,缺胳膊少腿的,历史总是那么偶然,发现了这个教程,讲的很细,适合新手学习,在此教程上进行精简提炼,放此便于日后查看。
0、历史
Linus在1991年创建了开源的Linux后,为了方便管理而创建了Git
2008年,GitHub网站上线,它为开源项目免费提供Git存储
1、相较于svn
svn是集中式的版本控制系统:有中央服务器、必须联网才能工作
git是分布式版本控制系统:无中央服务器、在本地即可编辑、安全性高、强大的分支管理、跟踪并管理的是修改,而非文件。
2、windows下载安装:
下载地址https://git-for-windows.github.io/或者360云盘下载
按照默认安装即可(可改下安装目录)
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
配置用户名邮箱:
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
“--global”代表所有git仓库都是用这个配置
3、创建版本库(又名仓库,英文名repository)
1)、找个合适的地方创建目录(一般不要选择c盘)
在当前目录按住shift然后鼠标右键打开
mkdir haha
cd haha
pwd
/f/git/haha
pwd命令用于显示当前目录。
2)、通过git init命令把这个目录变成Git可以管理的仓库
git init
3)、将文件添加到版本库
git add test.txt
放到暂存区
4)、将文件提交到仓库
git commit -m "这是提交的说明"
提交到master分支
5)、查看当前状态
git status
6)、查看上次修改过的差异
git diff test.txt
7)、查看历史提交记录
git log
git log --pretty=oneline
8)、回退到上一个版本
git reset --hard HEAD^
HEAD表示当前版本 ^表示上一个,^^表示上上一个,HEAD~100表示第上100个
9)、查看文件内容
cat test.txt
10)、回到未来的某个版本
git reset --hard 3628164(这个是id号前几位)
11)、查看所有的版本号
git reflog
12)、工作区:电脑里能看到的目录
13)、丢弃工作区的修改
git checkout -- test.txt
14)、暂存区的修改撤销掉
git reset HEAD readme.txt
15)、命令行删除文件
rm test.txt
删除已提交的文件
git rm test.txt
4、远程仓库
1)、创建SSH Key
在C:\Users\Administrator下面
有没有.ssh目录,.ssh里面有没有id_rsa和id_rsa.pub两个文件
如果没有:就创建SSH Key:
ssh-keygen -t rsa -C "youremail@example.com"
2)、登录GitHub
SSH and GPG keys->New SSH key
填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容
3)、创建仓库
右上角New repository
Repository name(最好有意义的名字这里写demo)
其他选项默认点create repository
4)、根据GitHub上的提示可以在本地通过
git remote add origin git@github.com:yinuocode/demo.git
git push -u origin master
来完成推送
后面修改在往这个库里推送就可以直接
git push origin master
5)查看远程库消息
git remote或者
git remote -v(更详细)
5、克隆到本地
git clone git@github.com:yinuocode/demo.git(推荐)
或者git clone https://github.com/Ceryn/img.git
6、分支管理
1)创建dev分支
git checkout -b dev
git checkout命令加上-b参数表示创建并切换相当于
git branch dev
git checkout dev
2)分支切换
git checkout dev
3)查看当前分支
git branch
会列出所有分支,前面带*号的为当前分支
4)分支合并
git merge dev(用于合并指定分支到当前分支)
5)删除分支
git branch -d dev
6)分支冲突
如果两个分支改的一个文件合并分支时会有冲突
需要手动改下后重新添加提交
7)可查看分支的历史合并情况
git log --graph或者
git log --graph --pretty=oneline --abbrev-commit
8)普通模式合并分支(保留历史)
git merge --no-ff -m "merge with no-ff" dev
9)Bug分支
把当前工作现场“储藏”起来,等以后恢复现场后继续工作
git stash
查看保存的工作现场
git stash list
恢复保存的工作现场两种方法
1、git stash apply
git stash drop
2、git stash pop
10)强行删除未合并的分支
git branch -D 分支名
11)将分支推送到服务器(只推送服务器需要的)
推送时需指定本地分支
git push origin master
git push origin dev
git push origin 某某分支
12)clone服务器代码后想在dev上开发
git checkout -b dev origin/dev
13)git pull失败(未指定当前分支与远程分支的链接)
git branch --set-upstream dev origin/dev
14)多人协作的工作模式流程
首先,可以试图用git push origin branch-name推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
7、标签管理
1)标签定义和作用
标签也是版本库的一个快照,可以根据某个标签取出当时历史版本
2)创建标签
切换到需要打标签的分支上git tag v2.0
给之前的某个状态打标签
通过git log --pretty=oneline --abbrev-commit获得需要的id
$ git tag v1.0 6224937
3)查看所有标签(按字母排序)
git tag
4)查看标签信息
git show v1.0
5)删除标签
git tag -d v1.0
6)将标签推送到服务器
推送某个标签:git push origin v1.0
一次性推送全部尚未推送的本地标签:git push origin --tags
7)删除远程标签
先删除本地标签然后执行(v2.0标签名)
git push origin :refs/tags/v2.0
8、使用GitHub
参与GitHub上的项目:
到项目主页-Fork-从自己账号下clone-修改-推送到自己仓库-发起一个pull request
9、自定义Git
1)忽略特殊文件
放到git工作目录,又不需提交
需要加上.gitignore文件,并将忽略文件名填进去
https://github.com/github/gitignore
2)配置别名
简化命令单词
git config --global alias.st status
当敲git st就等于敲git status
以下同理
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
--global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。
git config --global alias.unstage 'reset HEAD'
git unstage test.py==git reset HEAD test.py
配置git last,显示最后一次提交信息:
git config --global alias.last 'log -1'
甚至还有人丧心病狂地把lg配置成了:
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"
3)配置文件
每个仓库的Git配置文件都放在.git/config文件中
别名就在[alias]后面,要删除别名,直接把对应的行删掉即可。
而当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中:
4)搭建Git服务器
准备Linux机器,通常10分钟即可完成
要方便管理公钥,用Gitosis
要像SVN那样变态地控制权限,用Gitolite
参考:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
日历
最新微语
- html转义与翻转义工具
https://www.sojson.com/rehtml#google_vignette
2024-09-03 15:28
- 周公恐惧流言日,王莽谦恭未篡时
2024-09-03 15:28
最新评论
- clashx常见问题
多谢分享 - 快帆云
你好,我们的机场:快帆云,已经稳定运营三...
分类
随机文章
最新文章
热门文章
存档
- 2023年1月(1)
- 2022年8月(1)
- 2022年5月(1)
- 2021年8月(1)
- 2021年7月(1)
- 2021年6月(1)
- 2021年5月(1)
- 2021年4月(1)
- 2021年3月(2)
- 2021年2月(3)
- 2021年1月(3)
- 2020年12月(1)
- 2020年11月(2)
- 2020年10月(2)
- 2020年9月(2)
- 2020年8月(2)
- 2020年7月(3)
- 2020年6月(3)
- 2020年5月(7)
- 2020年4月(5)
- 2020年3月(3)
- 2020年2月(2)
- 2020年1月(2)
- 2019年12月(2)
- 2019年11月(1)
- 2019年10月(3)
- 2019年9月(1)
- 2019年8月(2)
- 2019年7月(4)
- 2019年6月(5)
- 2019年5月(5)
- 2019年4月(3)
- 2019年3月(2)
- 2019年2月(2)
- 2019年1月(3)
- 2018年12月(1)
- 2018年11月(1)
- 2018年10月(1)
- 2018年9月(2)
- 2018年8月(1)
- 2018年7月(1)
- 2018年6月(3)
- 2018年5月(2)
- 2018年3月(1)
- 2018年2月(1)
- 2018年1月(1)
- 2017年11月(1)
- 2017年10月(1)
- 2017年8月(2)
- 2017年5月(1)
- 2016年11月(1)
- 2016年10月(2)
- 2016年9月(1)
- 2016年8月(1)
- 2016年7月(2)
- 2016年6月(2)
- 2016年5月(7)
- 2016年4月(6)
- 2016年3月(3)
- 2016年2月(2)
- 2016年1月(3)
- 2015年12月(2)
- 2015年11月(2)
- 2015年10月(3)
- 2015年9月(2)
- 2015年8月(4)
- 2015年7月(4)
- 2015年6月(8)
- 2015年5月(34)
- 2015年4月(8)
- 2015年3月(2)
发表评论: