一、Git的工作流程
相关说明:
版本库:.git隐藏文件夹就是版本库,存储了很多配置信息、日志文件和文件版本信息
工作区:包含.git文件夹的目录就是工作目录,主要用于存放开发的代码
暂存区:.git文件夹有很多文件,其中有一个index文件就是暂存区,也叫做stage,暂存区是一个临时保存修改文件的地方。
基本流程:
1、从远程仓库中克隆代码到本地仓库
2、从本地仓库中checkout代码然后进行代码修改
3、将代码提交到本地的暂存区
4、从暂存区提交到本地仓库
5、将代码推送到远程仓库
二、相关下载地址
Git 下载地址:https://git-scm.com/download
TortoiseGit下载地址: https://tortoisegit.org/download/
三、git常用操作命令
1、设置用户信息
git config --global user.name "gonghua"
git config --global user.email "1617671154@qq.com"
2、查看配置信息
git config --list
git config user.name
上面的命令设置的信息会保存在~/.gitconfig文件中
3、获取git仓库的两种方式
(1)在本地初始化一个git仓库
比如我要建一个名为gitrepo的仓库,建立一个gitrepo文件夹,进入文件夹,
执行git init命令,会在这个目录下生成一个.git隐藏的文件夹。
(2)从远程仓库克隆
git clone 远程git仓库地址。
4、git工作目录下的文件存在两种状态:
(1)untracked未跟踪(未被纳入版本控制)
(2)tracked已跟踪(被纳入版本控制)
Unmodified 未修改状态
Modified 已修改状态
Staged已暂存状态
5、本地仓库操作
(1)查看文件状态
git status 或 git status -s
(2)将未跟踪的文件加入到暂存区
git add aaa.txt
(3)从暂存区取消该状态操作
git reset HEAD aaa.txt
(4)将暂存区的文件提交到本地版本库:
git commit -m "注释说明" aaa.txt
或 git commit -m "注释说明" 提交所有暂存区的文件。
(5)删除文件:
git rm aaa.txt 删除工作区的文件并把暂存区的也删了
git commit -m "删除了aaa.txt文件" 把删除的文件也提交到本地版本库
(6)将文件添加到忽略列表:(如:日志文件、class文件等)可以
在工作目录创建一个名为.gitignore文件(文件名称固定)
(7)查看日志记录:
git log 退出输入q即可
6、远程仓库操作
(1)查看远程仓库
git remote 或 git remote -v 或git remote -v origin
(2)添加远程仓库
git remote add origin(仓库别名) 仓库地址
(3)从远程仓库克隆
git clone url地址
(4)移除无效的远程仓库
git remote rm origin(仓库别名)
此命令只是从本地移除远程仓库的记录,并不会真正影响到远程仓库
(5)从远程仓库中抓取与拉取
git fetch 从远程仓库获取最新版本到本地仓库,不会自动merge(合并)。
git pull 从远程仓库获取最新版本并merge(合并)到本地仓库。
git fetch origin master (origin:远程仓库地址别名,master:分支名称),存放在.git/objects里。
git merge origin/master 手动去合并。
git pull origin master (origin:远程仓库地址别名,master:分支名称),直接拉取到工作区。
注意:如果当前版本仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程
仓库拉去文件的时候会报错(fatal:refusing to merge unrelated histories),解决其问题可以在
git pull 命令后加入参数 --allow-unrelate-histories。
(6)推送到远程仓库
git push origin master (把我本地的master分支推送到远程仓库的master分支上去)。
针对修改的文件操作步骤:先把修改后的文件加入到暂存区和本地仓库,再推送到远程仓库,
git add aaa.txt 然后 git commit aaa.txt 这两步替换成一步为:git commit -a aaa.txt
7、git分支操作
(1)查看分支
列出所有本地分支:git branch
列出所有远程分支:git branch -r
列出所有本地分支和远程分支:git branch -a
(2)创建分支
git branch 分支名
(3)切换分支
git checkout 分支名
(4)推送至远程仓库分支
git push origin localbranch(origin是远程的分支名,localbranch是本地的分支名)
(5)合并分支
git merge 分支名
如果两个不同的分支中,对同一个部分进行了不同的修改,git就没办法合并它们,同时会提示文件冲突,
此时需要打开冲突的文件并修复冲突内容,最后执行git add 命令来标识冲突已解决。
(6)删除分支
git branch -d 本地分支名 如果本地改了,但并没有提交到远程分支或没有合并到其他分支里去,
则使用git branch -D 本地分支名
删除远程仓库中的分支:git push origin -d 远程分支名
8、git标签操作
(1)列出所有标签git tag , git show tagname查看tag信息
(2)创建新标签 git tag tagname
(3)将标签推送至远程仓库 git push origin tagname
(4)检出标签
新建一个分支,指向某个tag,git checkout -b 分支名 tagname
(5)删除标签
删除本地标签: git tag -d tagname
删除远程标签:git push origin :refs/tags/tagname
四、Idea中Git的使用
(1)创建工程并将工程添加至git
VCS--import into Version Control -- Create Git repository --找到项目 点击ok
(2)将文件添加到暂存区
工程右键--Git--Add
(3)提交文件
1) 工程右键--Git --Commit Directory
2) 选中工程--VCS--Commit
(4)将代码推送到远程仓库
工程右键--Git --Repository -- Push
(5)从远程仓库克隆工程到本地
File -- New -- Project from Version Control -- 填写远程工程的仓库地址
(6)从远程拉取代码
1) 工程右键--Git --Repository -- Pull
2) 选中工程--VCS--Git -- Pull
(7)版本对比
选中文件右键--Git -- Compare with
(8)创建分支
工程右键--Git --Repository -- Branches -- new Branches
(9)切换分支
工程右键--Git --Repository -- Branches -- local Branches 下进行分支选择然后checkout
(10)分支合并
工程右键--Git --Repository -- Merge Changes--选择要合并的分支
五、Git图形工具TortoiseGit的使用
(1)创建仓库
文件夹中右键--Git Create repository here
(2)克隆仓库
文件夹中右键 -- Git Clone --填写远程仓库的url
(3)将文件添加到暂存区
新添加文件--右键--TortoiseGit -- Add
(4)提交文件
右键 -- Git Commit --选择要提交的分支
(5)推送本地仓库至远程仓库
1)本地库是从远程克隆的:右键--TortoiseGit -- Push -- 选择本地分支和远程仓库的分支
2)本地库是自己创建的: 右键--TortoiseGit -- Push -- manage--填写远程仓库的地址--选择远程仓库进行推送
(6)拉取代码
右键--TortoiseGit -- Pull --选择分支进行拉取
(7)创建分支
右键--TortoiseGit -- Create Branch--写入分支名称
(8)切换分支
右键--TortoiseGit -- Switch/Checkout --选择要切换的分支
(9)合并分支
回到master分支 -- 右键 -- TortoiseGit --Merge -- 选择要合并的分支
(10)推送分支到远程仓库
右键 --TortoiseGit -- Push -- 选择本地分支 -- remote处填写分支名 -- 选择仓库