GIT笔记

作者: output | 来源:发表于2017-02-12 03:52 被阅读9次

Git教程-廖雪峰

Git简介

分布式vs集中式

git是版本控制系统,与svn不同的是git是分布式,svn是集中式

Paste_Image.png
Paste_Image.png

安装

简单设置

配置文件
.git/config 当前仓库的配置文件
~/.gitconfig 全局配置

设置别名
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"

设置用户名和邮箱
git config --global user.name "xxx"
git config --blobal user.email "xxx@xxx.com"

创建版本库

创建版本库

cd learngit
git init
# 在某目录下执行命令 git init 后
# 该目录会生成一个.git的隐藏文件夹,这个目录就是一个版本库了
# 所有版本控制系统只能跟踪文本文件的发动(如TXT文件中删除了第4行,而二进制文件作为一个整体)
# 统一用UTF-8编码

添加一个文件到暂存区(Stage)

vi readme.txt
git add readme.txt

将文件提交给HEAD

git commit -m 'my first commit'

时光穿梭

工作区与版本库

当前文件夹是工作区
.git文件夹是版本库
创建版本库是,自动创建了一个master分支
工作区--暂存区(stage/index)--当前分支(master)--远程库

Paste_Image.png

查看仓库中文件的状态

git status
# 通过该命令可以清楚的了解当前版本库中的文件处于什么状态

文件的比较(只能比较工作区/Stage中的文件与Head中的不同)

git diff readme.txt
# 比较的是工作区与Stage中readme.txt的差异

git diff HEAD -- readme.txt
# 比较的是工作区与版本库(HEAD)中的readme.txt的差异
# HEAD 当前版本
# HEAD^ 上一版本
# HEAD^^ 上上版本
# HEAD~100 往上100个版本

查看提交历史

git log
git log --pretty=oneline

git reflog
# 查看执行的每一条命令

版本回退

git reset --hard HEAD^
git reset --hard comment_id(ID号,前7位就可以)

撤销修改

工作区----暂存区----当前分支
git checkout -- readme.txt
# 撤销工作区的修改
# 暂存区的内容覆盖工作区(丢弃工作区的修改)
# 没有--,该命令就是切换分支的命令了

git reset HEAD readme.txt
# 撤销暂存区的修改
# 版本库的内容覆盖暂存区(丢弃暂存区的修改)

git reset --hard HEAD^
# 撤销版本库的修改,版本回退

暂存区修改

# 这样一种场景:工作区,暂存区,版本库里内容一样,类似.project类似这种eclipse的项目配置文件也存在于版本控制中,现在把.project这类文件加入到忽略名单后

git rm --cached .project
# 这个命令是把.project从暂存区中删除
git commit -m "delete .project"
# 提交暂存区

删除文件

git rm readme.txt
# 与如下两个命令等价
rm readme.txt
git add readme.txt

git commit -m "delete"

远程仓库

免登录操作

Windows下生成ssh-keygen
1.安装Git
2.打开Git Bash
3.输入 ssh-keygen -t rsa -C "demo@gmail.com"

Linux下生成ssh-key
ssh-keygen -t rsa -C "demo@gmail.com"
cat ~/.ssh/id_rsa.pub
~/.ssh/id_rsa  这是私钥
~/.ssh/id_rea.pub  这是公钥
验证
ssh -T git@git.oschina.net

关联远程库

git remote add origin git@github.com:demo/learngit.git
# 把本地仓库与远程仓库相关联
# demo:github账户名
# origin:远程库的名字

查看远程库

git remote
git remote -v

推送到远程库

git push -u origin master
# 把本地所有内容推送到远程库上
# -u参数,不但会把本地master分支推送到远程master分支,还会把本地master分支与远程master分支相关联
# 第一次推送用-u,以后用就可以不用了
git push origin master

从远程库抓取

git pull origin master

从远程库克隆

git clone git@github.com:demo/gitskills.git        ssh协议,速度快
git clone https://github.com/demo/gitskills.git    https协议

分支管理

分支操作

git branch   // 查看当前分支
git branch dev  // 创建分支dev
git checkout dev // 切换到分支dev
git checkout -b dev // 创建并切换到分支dev
git merge dev // 合并指定分支(dev)到当前分支

删除分支dev
git merge -d dev // 如果分支有未提交的这样删除不了
git merge -D dev // 强制删除

查看分支合并情况
git log --pretty=oneline --graph --abbrev-commit

master转gh-pages
创建一个没有父节点的分支gh-pages
git checkout --orphan gh-pages


标签管理

使用GitHub

自定义Git

# 如果一个jar文件已经加到忽略文件里边了
# 想把一个jar文件添加到版本库
git add -f aaa.jar

相关文章

网友评论

      本文标题:GIT笔记

      本文链接:https://www.haomeiwen.com/subject/pytaittx.html