Git的使用
获取Git仓库通常有两种方式:
1.在本地初始化一个Git仓库(不常用)
2.从远程仓库克隆(常用)
获取Git仓库-在本地初始化Git仓库
执行步骤如下:
1.在任意目录下创建一个空目录(例如repo1)作为我们的本地Git仓库
2.进入这个目录中,点击右键打开Git bash窗口
3.执行命令git init
获取Git 仓库-从远程仓库克隆
可以通过Git提供的命令从远程仓库进行克隆,将远程仓库克隆到本地
命令形式:git clone
+ 【远程Git仓库地址】
工作区、暂存区、版本库概念
版本库: 前面看到的.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等
工作区: 包含.git文件夹的目录就是工作区,也称为工作目录,主要用于存放开发的代码
暂存区: .git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方
Git工作区中的文件存在两种状态:
untracked未跟踪 (未被纳入版本控制)
tracked已跟踪 (被纳入版本控制)
- Unmodified未修改状态
- Modified已修改状态
Staged已暂存状态
注意:这些文件的状态会随着我们执行Git的命令发生变化文件在没有执行命令
git add
时候,文件处于未跟踪状态Git常用命令
本地仓库常用命令如下:
git status
查看文件状态
git add
将文件的修改加入暂存区
git reset
将暂存区的文件取消暂存或者是切换到指定版本
git commit
将暂存区的文件修改提交到版本库git log
查看日志
远程仓库操作
git remote
查看远程仓库
git remote add
添加远程仓库
添加远程仓库,运行 git remote add <shortname><url>
添加一个新的远程Git仓库,同时指定一个可以引用的简写。
git clone
从远程仓库克隆
如果你想获得一份已经存在了的Git 远程仓库的拷贝,这时就要用到git clone命令。Git克隆的是该Git仓库服务器上的几乎所有数据(包括日志信息、历史记录等),而不仅仅是复制工作所需要的文件。
克隆仓库的命令格式是: git clone [url]
git pull
从远程仓库拉取
将本地仓库内容推送到远程仓库,可以使用命令: git push [remote-name] [branch-name]
先加载到缓存区
这个只是把文件提交到了本地仓库,还没有到远程仓库
git push
推送到远程仓库
远程仓库操作-从远程仓库拉取
git pull
命令的作用是从远程仓库获取最新版本并合并到本地仓库,命令格式: git pull [short-name] [branch-name]
注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,
此时再从远程仓库拉取文
件的时候会报错( fatal: refusing to merge unrelated histories )
解决此问题可以在git pull命令后加入参数--allow-unrelated-histories
分支操作
分支是git使用过程中非常重要的概念。使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。同一个仓库可以有多个分支,各个分支相互独立,互不干扰。git branch
查看分支
分支操作-查看分支
git branch
列出所有本地分支git branch -r
列出所有远程分支git branch -a
列出所有本地分支和远程分支
git branch [name]
创建分支
同时会提示我们在那个分支上(加*号绿色的代表我们在那个分支)
git checkout [name]
切换分支
git push [shortName] [name]
推送至远程仓库分支
同送到分支内容git merge [name]
合并分支
标签操作
Git 中的标签, 指的是某个分支某个特定时间点的状态。通过标签,可以很方便的切换到标记时的状态。比较有代表性的是人们会使用这个功能来标记发布结点(v1.0 、v1.2等)。
git tag
列出已有的标签
git tag [name]
创建标签
git push [shortName] [name]
将标签推送至远程仓库
git checkout -b [branch] [name]
检出标签
{mtitle title="更多命令"/}
一、git安装后-指定名称和邮箱
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
二、创建版本库
$ mkdir learngit //创建
$ cd learngit //使用
$ pwd //查看当前目录
$ git init //初始化,生成.git文件(若该文件隐藏,则使用ls -ah)
三、把文件添加add和提交commit到版本库
$ git add test.txt //添加
$ git commit -m "wrote a test file" //提交
$ git commit -m "add 3 files." //一次性提交多个文件
注意:必须在当前版本库和当前目录下
四、版本控制
$ git log //查看提交历史记录,从最近到最远,可以看到3次
$ git log --pretty=oneline //加参,简洁查看
$ git reflog //查看每一次修改历史
$ cat test.txt //查看文件内容
$ git status //查看工作区中文件当前状态
$ git reset --hard HEAD^(HEAD~100)(commit id) //回退版本
$ git checkout -- test.txt //丢弃工作区的修改,即撤销修改
$ git reset HEAD test.txt //丢弃暂存区的修改(若已提交,则回退)
五、删除文件
$ rm test.txt
//直接删除
$ git rm test.txt
$ git commit -m "remove test.txt"
//删错了,恢复
$ git checkout -- test.txt
六、远程仓库
$ ssh-keygen -t rsa -C "youremail@example.com" //创建SSH Key
$ git remote add origin git@github.com:Daisy/AKgit.git //关联
$ git push -u origin master //将本地内容推送到远程仓库(第一次)
$ git push origin master //将本地内容推送到远程仓库(之后)
$ git remote -v //查看远程仓库信息
$ git remote rm origin //删除远程仓库(解绑)
$ git clone git@github.com: Daisy/AKgit.git //克隆远程仓库
//克隆之后使用和查看
$ cd gitskills
$ ls
$ git remote //查看远程库的信息
$ git remote -v //查看远程库的详细信息
七、多人协作
$ git checkout -b dev //创建并切换到分支dev
//创建并切换到分支dev,同上
$ git branch dev //创建
$ git checkout dev //切换
//新版本
$ git switch -c dev //创建并切换到分支dev
$ git switch master //直接切换分支
$ git branch //查看当前分支
$ git merge dev (--no-ff)(-m)//合并,把dev分支的工作成果合并到master分支上
$ git branch -d dev //删除dev分支
$ git stash //将现场储藏起来
$ git stash list //查看储存的工作现场
//恢复和删除
$ git stash apply
$ git stash drop
//恢复并删除
$ git stash pop
$ git cherry-pick 4c805e2 //复制修改
$ git push origin master(dev) //推送分支
$ git checkout -b dev origin/dev //创建远程origin的dev分支到本地
$ git pull //抓取分支(解决冲突)
$ git branch --set-upstream-to=origin/dev dev//指定本地与远程dev的链接
$ git rebase //把本地未push的分叉提交历史整理成直线
八、标签管理
$ git tag v1.0 //打标签
$ git tag -a v0.1 -m "version 0.1 released" 1094adb //指定标签名和说明文字
$ git tag //查看所有标签
//若是忘记打,则查找历史提交commit id ,再打上
$ git log --pretty=oneline --abbrev-commit
$ git tag v0.9 f52c633
$ git show v0.9 //查看标签详细信息
$ git tag -d v0.1 //删除标签
$ git push origin v1.0 //推送标签到远程
$ git push origin –tags //一次性推送全部本地标签
//删除标签,(若已推送到远程,先从本地删除,从远程删除)
$ git tag -d v0.9
$ git push origin :refs/tags/v0.9
九、自定义git
$ git config --global color.ui true //让git显示颜色
//忽略特殊文件
//.gitignore文件
# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini
# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build
# My configurations:
db.ini
deploy_key_rsa
//把该文件也提交到git
$ git add -f App.class //强制添加被忽略的特殊文件
$ git check-ignore -v App.class //检查哪个规则出错
# 排除所有.开头的隐藏文件:
.*
# 排除所有.class文件:
*.class
# 不排除.gitignore和App.class:
!.gitignore
!App.class
$ git config --global alias.st status //配置别名
$ git config --global alias.unstage 'reset HEAD' //配置操作别名
$ git config --global alias.last 'log -1' //显示最后一次提交信息
$ git last //显示最近一次的提交
$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" //颜色
$ cat .git/config //查看每个仓库的git配置文件
$ cat .gitconfig //查看当前用户的git配置文件