本地库操作
基本命令
- 初始化本地库 git init
- 设置签名:区分不同开发人员的身份 ,仓库级别/项目级别:
git config user.name feng
git config user.email feng@aaa
系统用户级别,采用就近原则,项目级别优于项目级别
git config --global user.name feng
git config --global user.email feng@123
查看状态,查看工作区,暂存区的状态:git status
加入暂存区[新建或修改的文件]: git add a.txt
从暂存区撤回【暂存区可以撤回,前提是要add操作后,如果修改的文件,没有执行add不行】:git rm --cached a.txt
从暂存区提交到本地库:git -m '注释' commit a.txt
版本的前进、后退:
查看历史记录
git log 看起来很乱,可以格式化:git log --pretty=oneline,每次提交以一行显示。
git log --oneline 简化显示
git reflog 多一些显示内容,显示回退到每个版本要移动的步骤
执行版本前进后退
- 基于索引【指针】
git reset --hard 索引值
reset有三个参数:在本地库移动head,重置暂存区,重置工作区
hard,
soft:静静在本地库移动指针,不会动暂存区和工作区
mixed【混合】:会在本地库移动head指针,也会重置暂存区 - 基于~符合:
- 基于^符号:只能往后,不能往前
删除文件并找回【文件存在时的状态提交到了本地库】
- rm命令删除了已经提交到本地库的一个文件,删除后,需要git add 文件 到暂存区,然后在执行git commit 删除文件即可。
- 恢复1:执行git reflog,找到删除前的一个提交版本id,执行geit reset --hard xxxx即可找回
- 恢复2:【删除操作未提交到本地库】如果文件纳入了本地库管理【即,执行了git commit操作】,然后又执行了rm 文件,又再执行了git add 文件,此时如果想恢复文件,可以执行git rest --hard HEAD命令即可
- 【文件存在时的状态没有提交到了本地库】
- rm 文件后,执行git status查看状态,执行git rm 文件 ,即可删除,无须git commit,因为此时还为纳入版本管理
- git rm 命令,不能直接删除文件,是删除暂存区的,或者是执行了rm 文件后,可以用git rm 文件从暂存区删除
2.git reset --hard [指针位置] :
指针位置指向历史记录;
指针位置使用 HEAD;
比较文件差异
- git diff [文件名] 将工作区中的文件和暂存区进行比较
- git diff [本地库中历史版本] [文件名]:将工作区中的文件和本地库历史记录比较
分支管理
分支操作
- 创建分支:git branch 分支名
- 查看分支:git branch -v
- 切换分支:git checkout 分支名
- 合并分支:
- 进入要合并的分支(如开发分支合并到master,则进入master目录)
git checkout master
git pull - 查看所有分支是否都pull下来了
git branch -a - 使用merge合并开发分支
git merge 分支名 - 查看合并之后的状态
git status - 有冲突的话,通过IDE解决冲突;
- 解决冲突之后,将冲突文件提交暂存区
git add 冲突文件 - 提交merge之后的结果
git commit
如果不是使用git commit -m "备注" ,那么git会自动将合并的结果作为备注,提交本地仓库; - 本地仓库代码提交远程仓库
git push
git将分支合并到分支,将master合并到分支的操作步骤是一样的。
远程库操作
查看远程库信息
- git remote -v 查看当前所有远程地址别名
- eg:origin https://git.test.net/test/test-server.git (fetch)
- origin https://git.test.net/test/test-server.git (push)
- 添加远程库别名:git remote add [别名] [远程地址]
- git remote add origin https://git.test.net/test/test-server.git
- 推送:git push [别名] [分支名]
- git push origin dev
- git push origin dev:dev
- 克隆 git clone 远程地址
- 完整的把远程库下载到本地
- 创建 origin 远程地址别名
- 初始化本地库
- 拉取相关操作
- pull=fetch+merge
-
fetch是把远程库的内容抓取到本地库,并没有更新到工作区里面,如果想看抓取下来的内容,可以使用
git checkout origin/master 命令后,然后可以使用cat等命令查看本地库内容:
查看完后,可以在使用git checkout dev切换回来
-
合并本地库的内容到自己的工作区【本地库的master到本地的dev分支(当前分支)】:
- git fetch [远程库地址别名] [远程分支名]
- git merge [远程库地址别名/远程分支名]
- git pull [远程库地址别名] [远程分支名]
- 冲突解决
- 如果不是基于 GitHub 远程库的最新版所做的修改,不能推送,必须先拉
取 - 拉取下来后如果进入冲突状态,则按照“分支冲突解决”操作解决即可