Git
修改个人信息
$ git config --global user.name "YyykStudy"
$ git config --global user.email "YyykStudy@163.com"
初始化仓库
创建文件夹
$ mkdir learngit
$ cd learngit
$ pwd ---显示当前文件夹的位置
/c/Users/10747/learngit
将文件夹作为仓库
$ git init
Initialized empty Git repository in C:/Users/10747/learngit/.git/
添加上传文件
- 在文件夹下创建文件,并将此文件添加到暂存区,若文件添加后再进行修改时,需要再次添加到暂存区,否则暂存区存放的是上个版本的文件
$ git add readme.txt $ git add LICENSE.txt or $ git add readme.txt LICENSE.txt
-
将暂存区的文件提交至版本库
git commit -m "wrote a readme file" -m命令:上传文件说明
查看暂存区(stage)的状态
$ git status
- 文件已修改但没添加
- 文件已添加到暂存区但没有提交到仓库
- 文件已提交
查看文件修改的内容
$ git diff readme.txt ---暂存区与工作区的文件不同
$ git diff HEAD -- readme.txt ---版本库与工作区的不同
版本回溯
-
查看历史版本
$ git log or $ git log --pretty=oneline ---简洁版
-
回溯
$ git reset --hard HEAD~1 ---1代表回到之前第1个版本
-
通过id号回到未来
$ git reset --hard 2da2a HEAD is now at 2da2a2c append GPL
-
通过命令记录查找id号
$ git reflog
撤销修改
-
文件未放到暂存区
$ git checkout -- readme.txt git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
-
文件放到暂存区但未提交到版本库
$ git reset HEAD readme.txt git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。
-
已提交到版本库:参考版本回溯
删除文件
-
工作区删除文件
$ rm LICENSE.txt 恢复: $ git checkout -- LICENSE.txt
-
暂存区删除文件
$ git rm LICENSE.txt $ git commit -m "remove LICENSE.txt" ---提交,类似add 恢复:参考版本回溯 $ git reset --hard HEAD^
连接远程库
添加远程连接
$ git remote add origin git@gitee.com:yyykstudy/learngit.git ---git@...为SSH远程连接
查询远程连接
$ git remote -v
删除远程连接
$ git remote rm origin
把本地的版本库推送到远程库中
第一次:$ git push -u origin master ---origin为连接名
更新:$ git push origin master
远程库克隆
$ git clone git@gitee.com:yyykstudy/learngit.git
注意:克隆之后的文件夹下的远程连接名默认为origin
创建合并分支
创建分支
$ git switch -c dev
or
$ git checkout -b dev
or
$ git branch dev
$ git checkout dev
切换分支
$ git switch master
or
$ git checkout master
合并分支
$ git merge dev
删除分支
$ git branch -d dev
分支冲突
原因:若dev分支与master分支对README.md文件都进行了修改提交,并将master与dev合并,会出现分支冲突,此时需要手动修改所需要的README.md文件,再进行提交
查看分支图
$ git log --graph
$ git log --graph --pretty=oneline --abbrev-commit
Bug修改
当前分支没有未提交的工作
- 创建一个分支
- 修改Bug,add,commit
- 切换分支、合并、删除分支
当前分支还有未提交的工作
- 将此工作先储存起来,因为只有一个暂存区,直接切换不会分区保存
$ git stash ---会将暂存区的内容清空,恢复后也为空的
- 切换到需要修改bug的分支,创建bug分支,修改bug,add,commit
- 切换到需要修改bug的分支,合并bug分支
- 切换到原工作分支,查看储存表
$ git stash list
- 恢复现场
$ git stash pop ---取出内容并删除 or git stash apply ---只取出内容 git stash drop ---将内容删除
修改其他分支中这样的bug
$ git cherry-pick 4c805e2 ---4c805e2为bug分支的文件提交号
多人协作
- 先克隆项目 :
$ git clone git@gitee.com:yyykstudy/learngit.git
- 创建远程origin的dev分支到本地
$ git checkout -b dev origin/dev
若已有dev分支,可使用此命令:$ git branch --set-upstream-to=origin/dev dev
- 对项目进行修改,添加提交到本地库中,然后push到远程库内
- 若其他人已经对远程库中进行了修改,则会发生冲突,解决方法与本地分支冲突解决方法类似:
- 先将远程库中内容pull到本地库中
$ git pull
- 处理冲突,然后add,commit,再push到远程库中就ok了
- 先将远程库中内容pull到本地库中