git笔记

来源:互联网 发布:淘宝买东西怎么评价 编辑:程序博客网 时间:2024/06/11 06:37


1、安装
$ git config --global user.name "Your Name"
$ git config --global user.email email@example.com  //廖雪峰教程加了双引号,实际操作中带双引号配置失败


2、创建版本库
空目录——>git init
版本库指的的.git 
添加文件到git仓库:git add <file>——>git commit -m “example comment”


3、变更
查看状态:
git status,git diff <file>
版本回退:
提交历史:git log [--pretty=oneline]
命令历史:git reflog
保存的一个快照为一个commit,每个commit有一个ID,HEAD 表示当前版本,HEAD^,HEAD^^,...,HEAD~n 往前1,2,...,n个版本
回退到上个版本:git reset --hard HEAD^
到达某一个版本:git reset --hard <commit id>
工作区和暂存区:
工作区是 git init 的目录,其中的隐藏目录.git 是版本库除外
版本库中暂存区(stage/index)和Git自动创建的第一个分支master及指针HEAD
撤销修改:
工作区:git checkout --<file>
暂存区:git reset HEAD <file>
删除文件:
git rm <file> ——>git commit


4、远程仓库
ssh-keygen -t rsa -C "email@example"
本地与远程关联:
git remote add origin <address> ——>git push -u origin master(首次,之后git push origin master)
克隆远程:
git clone <address>


5、分支管理
创建:
git brach <branchname> 创建
git checkout <branchname>切换
git checkout -b <branchname>创建并切换
git branch 列出所有分支,当前分支前加“*”
git merge <branchname> 合并<branchname>到当前分支(默认fast forward 模式)
git branch -d <branchname> 删除分支
分支管理策略:
强制禁用Fast forward模式,Git就会在merge时生成一个新的commit
git merge --no-ff
master 分支保持稳定,利用其他分支进行项目的开发
bug 分支:
通过新的临时分支修复bug
git stash 保存当前工作现场
git stash apply <stash@{digital}>恢复现场,但不删除stash内容,删除需git stash drop
git stash pop 恢复现场 并删除stash 内容
git stash list 查看stash 
feature 分支:
添加新功能
多人协作:
git remote[-v]远程库信息
工作模式为
1)首先,可以试图用git push origin branch-name推送自己的修改;
2)如果推送失败,则因为远程分支比你的本地更新,需要先用git如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
3)如果合并有冲突,则解决冲突,并在本地提交;
4)没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
5)如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,
   用命令git branch --set-upstream branch-name origin/branch-name


6、标签管理
一个标签是指向一个commit的指针
创建标签:
git tag <tag name> [commit id] 默认标签打在最新提交的commit
git tag 查看标签
git show <tag name> 查看标签详细信息
操作标签:
git tag -d <tag name> 删除标签
git push origin <tag name>/--tags  标签存储在本地,不会自动推送到远程,需命令手动推送
git push origin :refs/tags/<tag name> 删除远程标签


7、自定义
忽略特殊文件:
编写.gitignore文件
配置别名:
git config --global alias.x "y" 用y表示x