git&&sourceTree操作学习
基本操作
- commit 提交
- pull 更新代码
- push 推送代码
- fetch 抓取代码
- Branch 新建分支
- merge 合并代码
- Stash 暂存代码状态
- log 输出历史提交
- reset --hard 回退版本
- reflog 输出git命令的历史
git add 文件名
- 把文件添加到仓库
git commit -m "说明",提交本次修改
git status 用于查看工作区状态
git diff ,用于查看被更改的文件修改前后的区别
git log ,命令可以查看提交历史
git log --pretty=oneline ,在一行内打印log
git reset --hard HEAD^,回退到上一个版本
- 回退一个版本 HEAD/两个版本HEAD^/指定版本HEAD~n
- --hard 版本号,可以用于到达任意版本
- 注:~n与^为寻根操作
git reflog ,用于输出git的历史命令
- 通过历史命令可以防止因关闭命令行导致忘记git版本号
工作区和暂存区
-
工作区
电脑里能够看到的目录一般指工作区,.git文件夹不算,它是git的版本库
-
Git版本库(.git一般为隐藏文件夹)
-
stage(或者叫index)的暂存区
-
master分支,以及指向master的一个HEAD指针(git版本回退就是根据HEAD指针操作)
-
工作区-->add操作-->stage暂存区-->commit操作-->(当前)master版本库
-
git管理的文件修改后/新增文件后都需要先将文件添加到暂存区,然后将暂存区的文件commit提交到当前分支
-
Changes not staged for commit
表示git中的文件被改变了
-
unTracked files
新建的文件,未被追踪
-
-
管理修改
-
为什么git比其他版本管理工具优秀?
- git管理并跟踪的是修改,而非文件
-
撤销修改
- 撤销工作区的修改
- git checkout -- 文件名,可以放弃工作区的修改,如果暂存区有内容则跟暂存区的内容相同,暂存区为空则跟版本库中的当前分支相同
- 撤销暂存区的修改
- git reset head
撤销暂存区的修改再撤销工作区的修改
- git reset head
- 撤销工作区的修改
分支修改
- git checkout -b dev
- 创建新的名为dev的分支,相当于,git branch dev+git checkout dev,
- Git branch可以创建新的分支,git checkout可以切换分支
- git branch
- 可以查看分支的情况,当前分支前面会有一个*号
- git merge dev
- merge用于分支合并,可以将后续分支合并到当前分支,一般用的是fast_forward,直接把master指向当前dev的提交,快速合并
- git branch -d dev
- 删除dev分支
- git switch -c dev
- 也可以用于创建分支并切换
- git switch 用于切换分支,作用和git checkout一样
SourceTree常见操作
1. 在SourceTree中追踪分支
- 用于联系本地分支和远程分支,如果在追踪分支上进行pull和push操作,它会自动拉取或者推送到相关联的远程分支上
2. 在SourceTree中放弃更改
- 放弃工作区的更改
- 当对原文件进行修改后,可以在工作区(workspace)选中修改过的文件,右键重置,即可放弃更改,恢复到和本地master分支相同的状态
- 也可以右击重置到提交,可以选择重置到提交,使被更改的文件重置到某个提交的版本
- 注意:在SourceTree里面的
- 修改git分支的名称
- git branch -m oldName newName
3.在SourceTree中合并分支
- 根据日志合并
- 选中某个提交->选中立即提交合并(如果没有冲突的情况下)->确定,如果有冲突则解决冲突,没有冲突则合并完成
- 合并已抓取
- 合并某个已经被抓取到分支的全部内容,用于较多内容的合并
4.解决合并冲突
- 打开外部合并工具
- 使用我的内容解决冲突
- 使用他的内容解决冲突
5.分支的回退
- 命令行下直接使用 git reset --hard commit版本号
- SourceTree模式下,右击某个提交->将分支重置到这次提交
- 软合并
- 混合合并
- 强行合并
- 一般使用软合并与混合合并,强行合并的话会导致本地的修改全部被丢失