git工作区
- 工作区:创建文件,修改,编写
- 暂存区:暂存已经修改的文件最后统一提交到Git仓库中
- Git Repository(Git仓库)最终确定的文件保存到仓库,成为一个新的版本,并对他人可见
git 创建仓库
- 远程clone下来
- 本地库同步到远端
git基础设置
- 设置用户名
git config –-global user.name '这里填写自己的用户名'
- 设置用户名邮箱
git config –-global user.email '这里填写自己的用户名邮箱'
仓库初始化
- 新建文件夹
- 进入当前文件夹
- 用git命令
git init
初始化,初始化成功会出现.git文件夹(隐藏文件夹) - 向仓库添加文件
git远程仓库
- 将远程仓库(github对应的项目)复制到本地:
git clone
仓库地址,仓库地址在clone or download按钮下取得,开启了ssr,克隆失败,设置代理git config --global http.proxy http://127.0.0.1:1080
git config --global https.proxy http://127.0.0.1:1080
- 进行文件增删改查,并添加到Git仓库中
- 将本地仓库同步到远程仓库中 使用命令:
git push
一些需要记住的命令
- git status:确定文件当前所处Git工作区域;这里假设在工作区有文件
HelloWorld.cpp
- 工作区转入暂存区:
git status
git add HelloWorld.cpp;
- 暂存区转入Git 仓库:
git status
git commit –m '提交描述'
- 确定文件是否已在Git仓库中:
git status
- 删除工作区文件:
git rm –f 文件名
- 创建文件:
vi 文件名 #创建文件,如果文件已存在,则直接进行修改
touch 文件名 #创建新文件
mkdir+文件夹名 #创建文件夹
git log前进后退
- 历史log记录查看命令:
git log # 空格键向下翻页,b向上翻页,q退出
git log --oneline #一行显示一条log,只显示当前版本以前的记录
git reflog #显示head,显示所有记录, head所指向的就是当前版本
- 基于索引操作历史版本
git reset --hard 哈希值 #选中哈希值即复制了,滚到哈希值所指向的历史版本
比较文件差异
git diff 文件名 #将工作区和缓存区文件进行比较
git diff 本地库历史版本 文件名 #将工作区文件与历史文件比较
git diff #不指定文件名,比较全部文件差异
分支:并行推进多个功能开发,各个分支开发互不影响
git branch 分支名 #创建分支
git branch -v #查看分支
git checkout 分支名 #切换分支
git merge 分支名 #1、切换到接受合并的分支。2、使用命令merge要被合并的分支
- 分支冲突解决:编辑,删除特殊符号,修改文件至满意,保存退出,add,commit (不带文件名)
- 拉取:pull = fetch +merge
git remote add 远程库别名 远程库地址 #设置远程库别名
git fetch 远程库别名 远程分支名
git merge 远程库别名/远程分支名
git pull 远程库别名 远程分支名
- 冲突解决:如果不是基于github远程库最新版本的修改,不能推送,必须先拉取,拉取下来之后进入冲突状态,然后按照分支冲突解决方式解决
git图解
GitHub搜索技巧
其他命令:
git init #初始化仓库(把这个目录变成Git可以管理的仓库)
git branch #查看当前分支
git checkout -b dev #创建并切换子分支,dev可换成自己的分支名字
git checkout dev #切换分支
git branch dev #创建分支
git branch -d dev #删除分支
git merge 分支名 #合并某分支到当前分支所在分支
git checkout -b dev origin/dev #创建远程origin的dev分支到本地
git merge dev #当前在master分支,git merge是将某指定分支合并到当前分支
git diff #查看这个做过的修改
git clean -f #删除untracked文件
git log #查看历史记录,显示从最近到最远的提交日志
git reset head <filename> #撤销暂存区
git checkout -- filename #撤销暂存区的修改(分为两种,一种是回到和版本库中的一样,一种是回到上次暂存到暂存区的版本。命令中的“--”很重要)
假设当前写的东西进行到一半,有紧急任务,但当前的又不想提交:
**git stash** #将当前的工作储藏起来,以后恢复继续工作
**git stash list** #查看原先的工作
**git stash apply** #恢复储存的工作
**git stash drop** #删除原先储存的工作或者git stash pop #恢复的同时也将stash内容删除
**git stash list** #查看并没有了
参考视频 https://www.bilibili.com/video/BV1pW411A7a5?p=62&spm_id_from=pageDriver