先快速上手
非纯新手跳过
- 远程git账号
不管是自己用,公司用,还是想拉取别的源码,你要有个远程地址的账号。
全球最大同志交友平台-GitHub:https://www.github.com
国内最知名-码云(没错是这个名字):https://www.gitee.com
- 本地Git安装-给你要用的电脑用
你都要使用git了,我相信你至少会安装吧。
Windows平台: 官网下载:
Mac平台: 因为有XCode
原因,自带Git
。
敲命令工具推荐:
- windows: GitBush(git安装自带)
- mac: Item2
- 在远程
git
上创建一个新的仓库
跟着教程一步步做就好,每个平台大差不差,创建好后的界面一般会显示如下的内容:
Git 全局设置
这个在本地安装完成后,如果是第一次安装git
,需要给电脑的git
设置一个用户的邮箱,方便给远程了解到是哪个电脑对远程进行了操作步骤。
如果不了解,可以查看是否有账号
git config --global --list
配置个人信息(只在一次做)
git config --global user.name `<名字>`
git config --global user.email `<E-mail>`
创建新版本库
这是从远程拉下来,与咱们情况不符。
git clone `<Git地址(http...xxx.git)>`
cd `<文件夹名>`
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
已存在的文件夹
当然这个是情况了,一般我们都是有本地的东西要推上去用,如果你没有内容要推的话,可以新建一个.txt
文件,随便输入点你喜欢的东西用于测试,当然你这个文件名包括后缀名合起来刚好叫README.MD
的话,那么这里的内容就会显示在仓库主页。哈哈。
初始化git
时,最好在文件的根目录,要不远程git
上只显示一个文件夹会很不专业。
cd `<根文件夹名>` ## 进入根目录或,在根目录文件夹右键选择打开Git Bush
git init ## 初始化Git
## 把本地git与远程git连接在一起
git remote add origin `<Git地址(http...xxx.git)>`
git add . ## 添加要提交文件(.代表所有)
git commit -m "Initial commit" ## 给本地git提交一个节点
git push -u origin master ## 把本地最新节点推到远端,第一次需要输入远端用户名与密码
***注意:***第一次push
需要输入远端用户名与密码
已存在的 Git 版本库
这是修改现在的Git,与咱们情况不符。
cd `<文件夹名>`
git remote rename origin `<老Git地址>`
git remote add origin `<新Git地址>`
git push -u origin --all
git push -u origin --tags
完成后,你就能看到远端有你的本地的内容了,Over~
Git最最最基础知识
什么是git
:一种分布式版本管理工具,可以有多个远程(remote)
什么是github
:就是一个网站,只是这个网站提供git
服务器的功能
有远端,有本地,远端有多个分支,本地也可以有多个分支,两者可以不完全一致,但是互相交集的部分,需要保持一致,如果不一到就会有冲突,需要合并后处理不同,最后达到保持一致。
配置个人信息
主要方便Git识别身份。
git config user.name "你的名字"
git config user.email "你的@邮箱.com"
- 格式:
git
命令
属性
值
- 查看配置信息:
git config --list
-
初始化:在某个要用Git的文件夹初始化一个Git(人称仓库)
-
配置个人信息(只在一次做)
-
分叉:
- 拉下来内容
- 推上去内容
-
初始化
- 命令:
git init
- 就会创建一个 .get 隐藏文件夹
- 命令:
走出新手村
学习完基础知识后,就要进出新手村了,提下来就是要实战了。
把修改的文件装箱里-添加文件(add)
先把文件添加到暂存区
# git add `<文件路径>`
git add ./README.md # 添加一个文件
git add . #添加"修改过的"所有文件
打包拍照留存记录-提交节点(commit)
把暂存区的文件提交仓库里,生成一个节点,这时的命令会在本地多一个新的节点。
# git commit -m "注释"
git commit -m "我们添加了一个新的功能"
-m 表示指定一个字符串,作为提交的说明(相当于注释);
当然前两步可以一起执行,合并add
与commit
命令
git commit -a -m "这是使用合并添加与提交的操作";
发送快递-推送节点(push)
写快递单号喽
# git push [远程服务器地址] [远程服务器的分支]
git push https://github.com/xxxxxxx.git master
每次都要写太麻烦了,将远程服务器地址写成变量
的形式记录下来,约定俗成的大家都会起名origin
,除非有特殊需要。
# git remote add [变量名] [远程服务器地址]
git remote add origin https://github.com/xxxxxxxxx.git
# 可以快乐的偷懒了
git push origin master
就这我都嫌弃麻烦,如果我就一个远程地址,可以更简单哟
在push
时加上-u
参数,就会默认建立本地当前分支与远程指定分支的关联,下一次push
时就不需要输入分支名了git push
;
# 使用一次-u
git push -u origin master
# 第二次push
git push
看看官方
-u
解释,使用git push -h
查看git push
相关命令
-u, --set-upstream set upstream for git pull/status
这里意思时,给git状态设置默认上游,这样下次直接使用转为上游
收取快递-拉取节点(pull)
如果本地没有.git
目录,需要先初始化一下。或者对地址git clone
# git pull [远程服务器地址] [远程的分支]
git pull https://github.com/xxxxxxxxx.git master
其他重要的小细节
查看工作区状态
看哪里文件是什么状态,当然有可视化工具会更方便。
git status
添加忽略文件
在项目中有一些文件是不需要提交的,我们需要把它忽略掉,在根目录创建名为.gitignore
(就这个名字,只有后缀)的文件,写上需要被忽略的文件的路径。
# 使用井号来做注释
/css/a.css
/css/*.css
/a.html
查看提交日志
git log #可以查看每一次提交的日志
git log --oneline #表示使用简洁的形式输出提交日志
比对文件差异
用来比较工作区内容与最近一次提交的内容的区别,如果暂存区没有文件,就会将工作与代码与最近一次提交对比
git diff
git diff --cached #比较暂存区的文件和仓库中文件的区别
# 对比之前某两次提交的文件的差异
# git diff [版本号1] [版本号2] [想比较的文件路径]
使用软件对比,效率会更高哟
精英的战斗(中级篇)
第一次冲突
当远程(remote)的节点会其他人推上(push)一个新的节点而这些,我们没有拉下(pull)来时,在本地又推了(push)另一个节点到远程(remote),这时就会发生冲突。
如果这两个节点中修改的文件不同,或者同一文件中修改的地方不同,那么git会我们自动处理合并。
如果不能自动合并分支,就会有冲突,我们需要手动解决冲突,然后再次提交。
[TODO]
注意:把代码push到服务器时需要先pull一下
后悔药
不管是因为产生了不可返回的错误,还是因为(本地)最新的几次提交(commit)不满意,当我们想返回之前的几个版本时。
需要处理好本地的提交路径然后推到远端
# git reset --hard 版本号
# git reset --hard Head~数字,0代表上一次
# 通过每次提交时生成的版本号来回退版本
git reset --hard Head~1 # 退到上上一次版本
查看每次提交的版本号
git reflog
这个命令也可以查看之前所有版本切换的操作记录
平行宇宙-新的分支
新建好的代码库有且仅有一个主分支master,它是自动建立的。
如果要建立分支,会根据当前分支的commit
的最新节点来创建,所以当前在编辑中的内容,没有add
,没有commit
的内容,不会复制过去。
一般开发者会建立一个专门用来开发的分支,比如
新建一个叫develop
的分支,基于master
分支:
git branch develop master
切换到这个分支:
git checkout develop
上边两个步骤可以合并,可以新建一个分支develop2
,同时切换到这个分支
git checkout -b develop2 develop # 从develop复制过来
现在在develop
分支上进行了一些工作需要提交,并推送的远程。
push
能力的升级
- 因为这时远程上还没有这个分支,可以直接:
git push -u origin develop
这样远程新分支也同时创建好了
- 当远端有多个分支时,要推送的远端名字与本地不一定要一一致,提交时可以用这样的格式:
# git push -u origin 本地名:远程名
git push -u origin develop:master
如果左边不写为空,将会删除远程的右边分支。
git push -u origin :master # 删除远端master分支
查看分支
可以查看所有的分支
git branch # 查看本地分支
git branch -r # --remote 查看远程分支
git branch -a # --all 查看本地及远程分支
删除分支
将删除本地develop2
分支,远端不影响
git branch -d develop2
复制武功秘籍-克隆
对于网上公有的git
地址,我们是可以通过clone
的方式得到的。
git clone https://github.com/xxxxxxxxx.git
这个方法只会拉取项目默认master
分支,如果需要其他分支,可以这样操作。
git branch -r # 先看有哪些分支
比如有个dev
分支, 这时候可以新建一个基于远程的dev
分支的本地dev
分支,
git checkout -b dev origin/dev
这时就会下载远端分支dev
并生成为本地dev
分支
添加时空跳跃节点-加tag
对于有些节点,我们可以添加一个tag
标签,方便随时跳转到这个节点,可以使用git tag
,其中两个参数,一是标签名称,另一个是分支名,取这个分支的最新节点。
git tag tagname develop
平行宇宙探索-合并分支
当我们在develop
分支上开发测试完后,需要将这个分支内容合并到master
分支上。
git checkout master # 先转到主分支
git merge --no-ff develop # 然后把develop分支merge过来:
注意:
git merge develop
,不带参数的默认情况是执行快进式合并。- 而使用参数
--no-ff
则会执行正常合并,它会在master
分支上生成一个新节点。 merge
的时候有冲突,需手动解决完后,重新add
及commit
后即可。
开个小差(番外篇)
Github上-搭建博客
将自已博客的网页代码文件,上传到Github
上的gh-pages
分支, 使用[github用户名].github.io/[仓库的名字]/[具体的页面]
的方式来访问查看。
git使用ssh方式上传代码与github
- git生成公钥和私钥
- 命令:
ssh-keygen -t rsa
生成的公钥与私钥文件会在当用户目录的.ssh目录下.
- 命令:
未完待续。。。
- sourceTree
- tortoiseGit
评论