主要参考:菜鸟教程
一、Git实战
1. 基本术语
1.1 相关术语概念
远程/本地仓库:remote/local repository
工作区workspace
暂存区stage/index
分支branch
标签tag
默认远程仓库名origin
默认分支master
1.2 Git工作区、暂存区和版本库
- 工作区:就是你在电脑里能看到的目录。
- 暂存区:英文叫stage, 或index。一般存放在 “.git目录下” 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
- 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
- 需要注意的几个点:
- 图中的 objects 标识的区域为 Git 的对象库,实际位于 “.git/objects” 目录下,里面包含了创建的各种对象及内容。
- git commit暂存区的目录写到版本库中,master分支会做相应的更新
- git reset HEAD:暂存区的目录树会被重写,被master分支所替换,但工作区(本地)不受影响
- git rm --cached:从暂存区删除文件,工作区不做改变
- git checkout . 或者 git checkout – 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。
- git checkout HEAD . 或者 git checkout HEAD 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。
1.3 基本操作流程
**********************************************************************************************************************
1. 从远程仓库clone代码至本地代码
git clone https://github.com/hp-liangXW/git_in_action.git
2. coding(本地编程VScode)
3. 提交
git add XXX (将代码放入暂存区stage/index,先在本地仓库中加入文件,再add匹配)
git commit -m 'add file XXX'(提交所有改动到本地仓库,并添加注释'')
git push(提交到远程仓库)
4. 拉取
git pull(远程拉取到本地)
1.4 分支操作
1. 查看分支
git branch
2. 查看本地分支
git branch -a
3. 创建分支
git branch BRANCH_NAME
4. 切换分支
git checkout BRANCH_NAME
5. 切换分支时,暂停操作
git stash
git stash pop
1.5 撤销与回退
1. revert和reset的区别
2. 撤销某次提交
git revert –n COMMIT_ID(通过创建新的分支,回退到该次提交后的状态)
3. 回退至某个提交后
git reset --hard COMMIT_ID
git push -f
4. git checkout -- filename:放弃工作区的修改,回到最新git commit/add状态)尚未提交到缓存区)
5. git reset HEAD filename:撤销缓存区修改,放回工作区,再用git checkout -- filename放弃工作区的修改
1.6 cherry pick
1. 使用场景
仅将Branch_2上的某个commit,合并到分支Branch_1上。
2. 使用方法
git checkout Branch_1:进入branch1
git log Branch_2 :找到Branch_2上需要待合并的commit的id值: COMMIT_ID
git cherry-pick COMMIT_ID :执行合并
1.7 冲突处理与设置忽略规则
场景:项目文件中demo文件用于存放图片文件。在进行代码上传时,不想上传demo文件夹中的图片。
- 首先在原文件夹下建立".gitignore"
- 在该文件中建立规则(demo/*:demo文件夹下的都不上传)
1.8 常用命令
-
git status:查看项目的当前状态
-
git log --pretty=oneline:用一行显示提交信息
-
git reflog:记录每一次命令
-
打开、修改、保存文件
- touch + filename:创建文件
- cat + filename:查看文件内容
- vim + filename:进入编辑模式
- 在命令模式下按i,进入编辑模式;编辑模式下按下ESC键,回退到命令模式
- 保存文件":w",保存并退出":wq"/"ZZ"
- 放弃文件修改:按下ESC键->":q!"->回车->放弃修改并退出vim
- 关于删除操作
- git rm filename:直接执行删除操作,再commit、push可以同步远程仓库
- git rm -f filename:强制删除已放入缓存区的文件(程度较浅)
- git rm --cached:只删除缓存区的文件(程度更浅)
-
git merge branchname:与branchname合并相关内容
-
git branch -d (branchname):删除分支
-
常用命令速查表