目录
1.特点
git是分布式版本控制工具,它没有中央服务器,每一台开发人员的电脑就是一台服务器,再断网情况下,依旧可以使用commit提交版本至本地库,再远程共享服务器磁盘损毁时,可以使用开发人员电脑恢复版本,这里就体现了分布式。
与git相对应的集中式版本控制工具svn,它是有一台中央服务器来管理版本,必须联网才能工作,一旦中央服务器出现损坏,版本控制代码难以恢复。最直观的体现就是git可以在断网环境下使用commit,应该提交的时本地仓库,联网情况再使用push推送至远程共享服务器中,而svn的commit即是提交代码到中央服务器,在断网情况下无法使用!
2.下载安装
3.基本设置和说明
Git GUI:Git提供的图形界面工具
Git Bash:Git提供的命令行工具
设置用户信息:
git config --global user.name "itcast"
git config --global user.email "email@..."
查看配置信息:
git config --global user.name
git config --global user.email
配置常用指令别名(可选)
在用户目录下创建 .bashrc文件,可用touch ~/.bashrc
输入以下内容:
#用于输入git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
#用户输入当前目录所有文件及基本信息
alias ll='ls -al'
解决GitBash乱码问题(可选)
1.在Git Bash下执行该命令
git config --global core.quotepath false
2.在${git_home}/etc/bash.bashrc文件后追加
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
4.基本命令
4.1 初始化本地仓库
在一个文件夹下,使用Git Bash命令框执行一下命令:
git init
ps:文件夹下出现.git文件夹则初始化成功
4.2 Git常用命令
git分为3个区 工作区(unstaged未暂存 untracked未跟踪) -> 暂存区(staged) -> 仓库
ps:工作区值除.git文件夹外的该文件夹下所有文件。所有新增或修改的文件都处于暂存区
git add .
ps:将工作区内所有的文件都加入到暂存区
git status
ps:查看未暂存和暂存区的状态
git commit -m "提交信息"
ps:将暂存区的文件提交至仓库
git log
ps:查看提交记录,后面可加参数
--all 查看所有分支
--pretty=oneline 将提交信息显示为一行
--abbrev-commit 使得输出的commitId更加简单
--graph 以图的形式显示
一般使用:
git log --pretty=oneline --all --graph --abbrev-commit
git reset --hard [commitId]
ps:配合git log使得代码回退至指定版本
回退后,我又想回到新版本,又找不到新版本的commitId,怎么办?
git reflog
ps:查看所有记录,找到commitId,使用git reset回退
如果存在不想给git管理的文件,可以在.git平级目录下创建.gitignore文件,配置好要忽略的文件。如:*.a(忽略所有以.a结尾的文件)
4.3 Git分支
//查看所有分支
git branch
//创建分支
git branch [分支名]
//切换分支
git checkout [分支名]
//创建并切换分支
git checkout -b [分支名]
//合并分支 将一个分支合并至本分支
git merge [分支名]
//删除分支
git branch -d [分支名] (删除时需要各种检查)
git branch -D [分支名] (强制删除,无需检查)
ps:在分支代码没有合并至master情况下,-d会删除失败,这时候需要-D来删除
//合并冲突
冲突的话,找到冲突文件,人工处理,然后git add . git commit 就可以了,有冲突的时候-m不加,git会自动生成
4.4远程仓库
在git bash here下
ssh-keygen -t rsa //成功密匙 (一路回车)
cat ~/.ssh/id_rsa.pub //查看生成的密钥
复制到gitee->设备->ssh公匙
ssh -T git@gitee.com //测试是否成功
建立和远程仓库的连接并push
git remote add [远端名称] [仓库路径ssh]
ps:建立本地和远程仓库的连接,远端名称一般使用origin
git remote
ps:查看已经连接的仓库
git push orgin master
ps:推送本地代码至远程仓库
git push [-f] [--set-upstream] [远端名称] [本地分支名]:[远程分支名]
-f:强制推送,会覆盖远程仓库代码,不推荐使用
--set-upstream:建立远程分支和本地分支的关系,一般是第一次使用
ps:第一次无法使用git push,应该git找不到对应的关系
git branch -vv
ps:可以查看远程分支和本地的关系
一般第一次会使用git push --set-upstream origin master:master,完成后,可以直接使用git push推送代码
git克隆
git clone [仓库地址ssh] [本地文件夹名称]
ps:不写名称,会默认为仓库名称
git抓取和拉取
git fetch [远端名称] [分支名]
ps:将仓库的更新抓到本地,不会进去合并,通常配合merge命令git pull [远端名称] [分支名]
ps:仓库的更新抓到本地并自动合并,相当于fetch+merge
4.5 Idea使用Git(略,需要自己动手操作)
1.在Setting至搜索git,确认idea是否可能识别git,如识别不了,手动配置路径
2.在VCS目录下,选择create git repertory
3.commit代码
4.push代码的时候,填写ssh地址
git clone
在File->new->project from version control后,填写ssh