背景
之前使用了多年的SVN,后来中间也用过一段时间的Git。但后面工作中因为打包拉分支等一系列问题,有位同事坚持用Git来替换SVN,就开始实验了,也算是一点实践。
一、Git安装
安装挺简单的,对于Windows来讲博客也是很多。下载地址:Git。
二、IDEA使用Git
IDEA中使用Git时,先配置安装的Git目录中cmd文件夹下的git.exe。如下图,然后点击“Apply”和“OK”。
若出现下面的图标,说明在IDEA中可以直接使用Git了,可不通过命令来操作。从左到右依次是Update、Commit、Compare、Show History、Rollback。
还可以直接右键单击项目的目录,选择Git的相关操作。如下图。
下面是一些IDEA中常见的Git操作。为了方便,我一般会将常用的工具如Maven、FindBugs等工具在IDEA窗口的边缘显示出来。下面就是IDEA中关于版本控制的一个窗口,点开可以显示与Git相关操作的一记日志、历史等。
如何在IDEA中切换分支呢?下面看下IDEA中显示分支的地方,如下图。
点击上图中红色标记的地方,弹出如下图所示的窗口。有Local Branches(本地分支)和Remote Branches(远程分支)。不管是切换本地分支还是远程分支,都可以直接操作。
右下角显示为“Git:dev”,表示当前是dev的分支而不是master。如要切换到master。则选择master并点击后,会出现下图中左侧的一些按钮(如Checkout、Delete、Compare with Current等),点击Checkout就会切换过来了。
三、使用说明
3.1 GUI和命令行区别
还是先说下Git GUI Here和Git Bash Here的区别。前者是Git的图形化操作入口,即点击后会打开Git的图形化操作界面;而后者是Git的命令行操作入口。
点击Git GUI Here,打开图形化界面。如下图:
点击Git Bash Here,打开命令行操作界面。如下图:
3.2 账号与权限
配置用户名和用户的邮箱。命令如下:
-- 设置用户名
git config --global user.name "name"
-- 设置用户邮箱
git config --global user.email "11@qq.com"
-- 以用户名登陆
git config --global user.name 'username'
-- 以邮箱登陆
git config --global user.email 'email'
如果数据保存在远端服务器,服务器需要对用户的身份进行识别。所以这里先配置权限。可以在Git的访问页面或打开GUI进行配置。如果没有设置,在Push时可能会导致失败。
打开Git的访问页面进行配置,如下图:
打开GUI进行配置,如下图:
如果使用命令,则输入如下命令:
ssh-keygen -t rsa -C "邮箱"
生成key时会弹出选项,回车选择默认。
3.3 推送新项目到git
首先在本地建立项目,然后进行项目所在的文件夹:cd projectFolder;
将项目目录变成git 可以管理的仓库:git init;
将项目关联到远程仓库:git remote add origin git@xxx:xx/xx.git
将文件添加到库中(注意是git add后面还有一个空格和一个点号):git add .
将项目提交:git commit -m '说明'
将项目推送到仓库:git push -u origin master
3.4 仓储(新建/克隆/打开)
刚开始打开GUI界面时,需要仓储的信息,如下图。一般是已经有地址了,需要克隆地址,下载代码进行开发,所有选择克隆,并选择克隆到电脑中的文件夹。
如果已经克隆了,那下次打开时Git会自动记录,以方便直接进入。
在Git Bash Here界面操作时,先进入电脑的磁盘,比如D盘的Work目录,点击右击选择Git Bash Here,然后输入命令:git clone url,其中url是网上的仓库地址。在命令界面中会显示克隆后文件所在的目录。
git clone url
3.5 GUI界面
曾经有中文,后面发现没办法选择语言,于是将GUI的界面翻译,如下图:
Remote中,Fetch from:从...获取;Prune from:从...清除。
3.6 提交上传撤消删除
将代码克隆下来后,如果改动了其中的文件,点击Rescan,会扫描出改动的文件,然后填写提交信息提交。其中红色表示原来的代码,绿色表示现在的代码。如下图:
删除已提交的文件或文件夹的话,使用命令:
-- 在本地仓库中删除文件
git rm 文件
-- 在本地仓库中删除文件夹(如果是空的文件夹,可以不用带上-r)
git rm -r 文件夹
-- 提交代码
git commit -m 说明
-- 推送到远程仓库
git push origin xxx
使用命令操作时,命令如下所述:
说明 | 命令 |
将本地仓库内容提交至远程库 | git push origin master |
将远程库的内容更新至本地 | git pull |
撤消工作区的修改 | git checkout --文件名 |
撤销暂存区的修改 | git reset HEAD 文件名 |
回退到历史版本 | git reset --hard 该版本 |
回退到上个版本 | git reset --hard HEAD^ |
回退到上上个版本 | git reset --hard HEAD^^,也可写成HEAD~2,以此类推 |
3.7 查看历史和对比
在操作之前,先配置编码Encoding。选择Edit——>Options,如下图:
将File Contends Encoding的编码改变为UTF-8,否则在查看时,汉字会乱码。
选择Repository——>Visualize master's History,会列出历史,可查看或对比。如下图:
当对比代码时,红色表示原来的代码,绿色表示现在的代码。
-- 比较暂存区和工作区的差异
git diff
-- 比较暂存区和历史区的差异
git diff
-- 比较历史区和工作区的差异
git diff master
-- 比较文件差异,在git add前使用
git diff 文件名
-- 查看仓库历史详细记录
git log
-- 查看仓库历史的单行记录
git log --pretty=online 或 git log --online
-- 查看所有版本的commit ID
git reflog
3.8 (远程)仓储
选择Remote——>Add...,打开如下截面,填写名称和地址,点击Add。
使用命令行时,如下所述:
说明 | 命令 |
关联本地仓库与GitHub库 | git remote add origin 网站对应的仓库地址 |
第一次本地仓库内容推送到GitHub上 | git push -u origin master |
连接远程仓库 | git remote add origin 仓库地址 |
查看远程仓库 | git remote -v |
删除远程仓库 | git remote rm origin |
查看仓库状态 | git status |
3.9 分支
-- 创建分支dev
git branch dev
-- 切换分支
git checkout dev
-- 创建并切换分支
git checkout -b dev
-- 删除分支
git branch -d dev
-- 在分支上提交新的版本
git commit -a -m 'dev new'
-- 合并分支
git merge dev
-- 分支合并后显示日志
git log --oneline --graph -- decorate
-- 在分支开发的过程中遇到其他其他问题需要切换到其他分支,保留写好的内容,再切换到主干
git stash -- 保留内容
-- 再次切换分支后,需要应用保留的内容
git stash apply
-- 丢掉保留的内容
git stash drop
-- 使用并丢掉
git stash pop
-- 合并分支,把树权掰到主干上
git rebase
3.10 其它常用命令
-- 查看git版本信息
git --version
-- 初始化git
git init
-- 查看版本
git log --oneline
-- 回滚最近的一个版本
git reset
-- 回滚到后来
git reflog
-- 创建文件夹
mkdir nodejs
-- 切换到nodejs目录下
cd nodejs
-- 查看目录
ls -al
-- 查看文件内容,比如查看hello.txt文件
cat hello.txt
-- 删除本地文件
rm filename
-- 为当前版本打上标签
git tag 标签名
-- 为历史版本打标签
git tag 标签名 版本ID
-- 指标标签说明
git tag -a 标签名 -m "标签说明" [版本ID] ([]中的内容可选,可要可不要)
-- 查看所有标签
git log
-- 查看某一个标签
git show 标签名
-- 删除某一个标签
git tag -d 标签名
-- 查看目录
dir
-- 查看当前用户名
git config --global user.name
-- 查看当前用户的邮箱
git config --global user.email
-- 切换用户名
git config --global user.name "xx"
-- 切换用户邮箱
git config --global user.email "xx@qq.com"
-- 查看用户信息
git config --list
3.11 fatal: Authentication failed for问题
在git Bash Here中输入以下命令:
git config --system --unset credential.helper
如果还是不行,重新设置用户名用户邮箱,命令如下:
-- 切换用户名
git config --global user.name "xx"
-- 切换用户邮箱
git config --global user.email "xx@qq.com"