Git相关概念:
Git是目前世界上最先进的分布式版本控制系统!!!
开发语言:C
Git是分布式版本控制系统:分布式版本控制系统,每个人都是一个完整的版本库
SVN是集中式版本控制系统:集中式版本控制系统,版本库集中放在中央服务器
工作区和暂存区:
工作区就是我们项目下面新建的那个空文件夹,然后我们会通过git init生成Git的版本库,Git版本库里存了很多内容,其中最重要的就是暂存区(stage),还有Git为我们自动创建第一个分支master,以及指向master的一个指针HEAD
Git在Mac OS X上的安装:
1.通过homebrew,然后通过homebrew安装Git
2.通过下载Xcode,Xcode集成了Git
安装成功后,设置用户名和Email地址
git config --global user.name "username"
git config --global user.email "email@example.com"
本地Git库的建立:
一创建空目录
mkdir xxx --新建文件
cd xxx
pwd --显示当前目录
二将目录变成Git可以管理的仓库
git init
1.添加文件,需要两步
git add xxx
git commit -m "提交描述”
2.查看当前仓库的状态,查看哪些文件有改动
git status
3.查看改动文件的具体改动内容
git diff xxx 比较的是工作区与暂存区的区别
git diff --cached xxx 比较的是暂存区与Git版本库的区别
git diff HEAD -- xxx 比较的是工作区与Git版本库的区别
4.提交改动内容,与提交新文件命令相同,见1
5.历史记录的查看
git log 日志过多时,使用enter向下看 q退出
嫌输出日志太多:git log --pretty=oneline
6.版本回退
回退到上一个版本: git reset --hard HEAD^
回退到上上个版本: git reset --hard HEAD^^
回退到往上100个版本: git reset --hard HEAD~100
回退到指定Commit id的版本: git reset --hard id前几位
7.查看每次提交的Commit id
git reflog
8.撤销修改
工作区的修改撤销有两种情况
一种是修改没有提到暂存区,则撤销回版本库的状态;
另一种是修改已经被提交到了暂存区,则撤销回暂存区的状态
git checkout — xxx
将暂存区的内容回退到版本库的状态
git reset HEAD xxx
9.文件通过文件管理器或者rm指令被删除
真的需要删除,则使用指令将git rm xxx 并git commit -m 删除版本库的文件
如果误删,则使用git checkout — xxx恢复文件
使用GitHub作为远程仓库
1.申请github账号
2.创建SSH Key 在用户主目录,看看有没有.ssh目录,如果有,再看看这个目录下吗有没有id_rsa和id_rsa.pub这两个文件
如果没有,创建SSH Key:
ssh-keygen -t rsa -C"email.com"
3.登录github,打开Account setting, SSH Keys页面:然后,点击Add SSH Key,填上任意Title,在Key文本框里粘贴id_rsa.pub里的内容
添加远程库
1.在github上点击Create a new repo创建一个新的仓库
2.关联本地库
git remote add origin git@github.com:github-name/learngit.git
3.本地库内容推送到远程库
git push -u origin master
4.本地做了修改,通过命令远程提交
git push origin master
注:push和pull的时候每次都要输入密码 原因及解决方法:
原因:更新到 10.12.3 后,每次使用 ssh 时都需要输入私钥的密码, ssh-agent 并没有自动解锁私钥
解决方法:ssh-add /Users/xxx/.ssh/id_ras //PS:每次重启都需要进行一次
从远程库克隆
git clone git@github.com:github-name/learngit.git
11.创建与合并分支
git checkout -b dev(分支名) 创建并切换分支
等价于
git branch dev 创建分支
git checkout dev 切换分支
git merge dev 合并指定分支到当前分支
git branch -d dev 删除分支
git branch -D dev1 强行删除未合并的分支
git branch 查看分支 *指向当前分支
git log —graph —pretty=oneline —abbrev-commit 查看分支的合并情况
git merge —no-ff -m '分支合并’ dev —no-ff表示禁用Fast forward
12.多人协作
git remote -v 查看远程库信息
git push origin branch-name 推送失败,先用git pull抓取远程的新提交,如果git pull提示no tracking information,则说明本地分支与远程分支的链接关系没有建立;通过该指令可以将本地已有分支创建远程的分支
git checkout -b branch-name origin/branch-name 本地创建和远程分支(远程分支已存在)对应,名称最好一致
git branch —set-upstream-to branch-name origin/branch-name|git branch —set-upstream-to=origin/branch-name branch-name 建立本地分支和远程分支的关联
创建远程没有的分支,并进行关联
git checkout -b branch-name 创建本地分支
git push origin branch-name 提交本地创建分支
本地创建分支(远程分支已存在),再与远程关联
git checkout -b branch-name
git branch —set-upstream-to=origin/branch-name branch-name
git pull
本地创建git库与远程进行关联 如果远程库有文件,需要在关联后首次git pull时 进行额外处理
git remote add origin git@github.com:/github-name/LearnGit.git
git pull origin master —allow-unrelated-histories
13.标签管理
git tag v1.0 打一个新标签
git tag 查看标签
git tag v1.0 commit-id 指定commit-id打标签
git tag -a tag-name -m tag-description commit-id 通过指定commit-id指定标签名并添加描述打标签
git show v1.0 查看标签具体信息
git tag -d v1.0 删除本地标签
git push origin v1.0 推送某个标签到远程
删除远程标签
git tag -d v1.0 先删除本地标签
git push origin :refs/tags/v1.0 再删除远程标签
14.自定义Git
忽略特殊文件,在工作区的根目录添加.gitignore
git add xxx报错 — The following paths are ignore by one of your .gitignore files
可以通过git add -f xxx 强制添加到Git
git check-ignore -v xxx 命令检查看是不是哪个规则写的有问题
配置别名
git config —global alias.ci commit 为commit设置别名ci
git ci -m 'haha' <=> git commit -m 'haha'
网友评论