记录自己学习廖雪峰 Git 教程的笔记,网上找了几个教程,正如他所说令人失望,他的教程很容易懂,其他的不多介绍推荐去直接他网站看,现在进入主题。
安装
直接傻瓜式安装,从Git官网下载自己电脑对应的版本,双击运行就 OK 了。
安装好git,创建一个空文件夹作为项目文件夹,进入项目文件夹点击右键打开git bash hrere,自动进入命令行。
创建版本库
初始化一个仓库,使用 git init 命令。手动创建一个file.txt文本文件放在项目文件夹内。
添加文件到git仓库,分为两步,第一步,使用命令行 git add
查看状态
使用 git status 命令查看状态,如修改过文件名会显示红色,查看工作区和版本库最新版本的区别,使用 git diff HEAD
提交到仓库
分为两步,第一步,git add
查看更新日志
命令行 git log回车后,显示更新记录。
回退版本
使用 git reset --hard HEAD^ 命令行,可回退到上一个版本,HEAD ^^回退到上上个版本。HEAD后输入的是版本号会跳到指定版本号的版本。可只写前面几位。(版本号commit ID)。
暂存区
git add
管理修改
暂存区没有内容的情况下,当文件修改之后,git add 到暂存区,再次修改文件,然后提交,此时查看状态会发现第二次的修改没有被提交,因为没有git add 到暂存区。说明每次修改,如果没有add到暂存区,就不会加入到commit中。
撤销修改
场景1:改乱了工作区某个文件的内容,想要丢弃工作区的修改,使用命令 git checkout -- file ,当然一般我们是手动删除改乱的内容。
场景2:改乱了工作区的内容,还添加到了暂存区,想丢弃修改,分两步,第一步git reset HEAD
场景3:改乱的已经提交到本地版本库时,前提是没有推送到远程库,想要撤销,git reset --hard HEAD^ ,参照回退版本步骤。
删除文件
git rm
添加远程仓库
关联一个远程仓库,使用命令git remote add origin git@server-name: path/repo-name.git ;
关联后,使用git push -u origin master 第一次推送master分支的所有内容;
此后,每次版本提交后,只要有必要,就可以使用命令 git push origin master 推送最新修改。
从远程仓库克隆
要克隆一个仓库,首先要知道仓库的地址,然后使用git clone url 命令克隆。支持多种协议,通过ssh支持的原生git协议最快。
分支管理
创建并切换分支:git checkout -b
查看分支:git branch ,当前分支前会有一个*号。
合并分支: git merge
删除分支: 合并分支后,另一个分支也就没用了,可以放心的删除了,git branch -d
分支冲突:当git无法自动合成的时候,就必须首先解决冲突,解决冲突后,再提交,合并完成,用git log --graph 命令可以查看到分支合并图。
分支策略:
master主线分支是稳定的,是用来发布新版本的,平时不在上面干活;
干活都在 fenzhi 分支上干活,也就是说fenzhi分支是不稳定的,
不使用Fast forward 模式,使用 --no-ff 参数就可以使用普通模式合并,合并后会有历史。输入命令行git merge --no-ff -m "merge with no-ff" fenzhi
分支修改bug
当你在一个分支gongzuo上进行工作的时候,工作进行到一半还没法提交,还需要一天的时间,但是需要在2个小时内修改这个bug,此时git提供的一个隐藏stash功能,可以先把工作区的git stash 隐藏起来,此时用git status查看工作区是干净的,可以放心的创建分支修改bug了。
第一步:切换到需要修改bug的分支mater,并创建临时分支linshi;
第二步:修复bug,git add
第三步:切换到master,合并分支git merge --no-ff -m "merged bug fix 101" linshi ;
第四步:删除linshi分支 git branch -d linshi;
第五步:回到原来的工作分支干活git checkout gongzuo,使用git stash list 查看工作分支的隐藏;
第六步:恢复并删除隐藏,git stash pop ,可多次stash,恢复的时候需要git stash list查看,让然后恢复指定stash,git stash apply stash@{0} 。
强行删除提交了但没有合并的分支
情况:需要添加一个新功能,此时你创建一个分支进行添加,开发完成后提交,准备合并的时候说不需要了,此时需要强行删除git branch -D
多人协作
查看远程仓库:git remote ,更详细信息 git remote -v ;
推送分支:git push origin master ,master为需要推送的分支名称 master主分支时刻需要远程同步;
多人协作工作模式:
首先,可以试图用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
标签管理
创建标签:先切换到需要打标签的分支,git tag
标签说明:git tag -a
PGP签名标签: git tag -s
查看标签状态:git tag
操作标签
删除标签:git tag -d
推送标签至远程:git push origin
忽略特殊文件
在git根目录创建.gitignore文件,windows下会提示文件名不可用,打开文本另存为.gitignore 保存就可以了。添加需要忽略的文件使用 .文件名
配置别名
git config --global alias 别名 原名 比如git config --global st status 查看状态只需要输入命令行 git st就可以了
git常用命令行
master: 默认开发分支 HEAD:默认开发分支 origin:默认远程版本库 HEAD^:Head的父提交
创建版本库
$ git clone #克隆远程版本库
$ git init #初始化本地版本库
修改和提交
$ git status #查看状态
$ git diff #查看变更内容
$ git add . #跟踪所以改动过的文件
$ git add #跟踪指定的文件
$ git mv #文件改名
$ git rm #删除文件
$ git rm --cached #停止更新文件但不删除
$ git commit -m "commit message" #提交所有更新过的文件
$ git commit --amend #修改最后一次提交
查看提交历史
$ git log #查看提交历史
$ git log -p #查看指定文件提交历史
$ git blame #以列表方式查看指定文件的提交历史
撤销
$ git reset --hard HEAD #撤销工作目录所有未提交文件的修改
$ git checkout HEAD #撤销指定的未提交文件的修改内容
$ git revert #撤销指定的提交
分支与标签
$ git branch # 显示所有的本地分支
$ git checkout #切换到指定分支或标签
$ git branch #创建新的分支
$ git branch -d #删除本地分支
$ git tag #列出所有本地标签
$ git tag #基于最新提交创建标签
$ git tag -d #删除标签
合并与衍合
$ git merge #合并指定分支到当前分支
$ git rebase #衍合指定分支到当前分支
远程操作
$ git remote -v #查看远程版本库信息
$ git remote show # 查看指定远程版本库信息
$ git remote add #添加远程版本库
$ git fetch #从远程库获取代码
$ git pull #下载代码及快速合并
$ git push #上传代码及快速合并 (git push origin master 将文件给推到服务器上 )
$ git push : #删除远程分支或标签
$ git push --tags #上传所有标签