文章目录
- 前言
- 1.配置git
- 2.创建版本库
- 3.版本回退
- 4.工作区和暂存区
- 5.添加远程仓库
- 6.分支管理
- 处理bug分支
- 多人协作
- 7.标签管理
- 8.自定义git
- 9.VScode中的Git使用
前言
欢迎通过我的个人博客看本篇文章https://sunmengxin.cn/Git-tutorial/ 一直想学git,奈何初学时相关的新名词太多,一直没理解太深,刚好最近有时间把廖雪峰的git教程看了一遍,峰哥的教程写的很通俗易懂有条理就不说了。但细数起来,git的命令还是有点多的,就在学的同时记了些笔记分享一下。
对于新手,非常建议学习git之前,先把GitHub玩一遍,这里也推荐一个GitHub学习相关的网站,写的也很通俗易懂——Git北京。
1.配置git
$ git config --global user.name "Your Name" 配置git全局用户名
$ git config --global user.email "email@example.com" 配置git全局邮箱
$ git config --global credential.helper store 保存登录密码
2.创建版本库
$ mkdir learngit
$ cd learngit
$ pwd
$ git init
$ git add readme.txt
$ git add readme.txt
3.版本回退
$ git status
$ git diff readme.txt
$ git log (--pretty=oneline)
$ git reset --hard HEAD^
$ git reflog 记录git的每次命令
4.工作区和暂存区
Git管理的文件分为:工作区,版本库;版本库又分为暂存区stage和暂存区分支master(仓库)
工作区>>>>暂存区>>>>仓库
git add把文件从工作区>>>>暂存区;
git commit把文件从暂存区>>>>仓库,
git diff查看工作区和暂存区差异,
git diff HEAD -- filename 查看暂存区和仓库差异,
git diff HEAD 查看工作区和仓库的差异,
git checkout类似git add反向命令,指对工作区的操作
git reset HEAD类似git commit反向命令,指对缓存区的操作
$ git diff HEAD -- readme.txt
$ git reset HEAD readme.txt 缓存区的修改撤销放回工作区
$ git checkout -- readme.txt 丢弃工作区的修改
5.添加远程仓库
$ ssh-keygen -t rsa -C "youremail@example.com"
$ git remote add origin git@github.com:michaelliao/learngit.git
$ git push -u origin master 加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来
$ git push origin master
$ git clone git@github.com:michaelliao/gitskills.git
6.分支管理
$ git checkout -b dev
$ git branch dev 创建分支
$ git checkout dev
$ git branch 查看当前分支
$ git checkout master
$ git merge dev
$ git branch -d dev 删除
& git branch -D <name>强行删除。
$ git branch
$ git switch -c dev
$ git switch master
$ git merge --abort 有冲突时放弃merge
$ git log --graph --pretty=oneline --abbrev-commit 按行显示 缩写
强制禁用fast forward,防止删除分支后丢掉分支部分
$ git merge --no-ff -m "merge with no-ff" dev
处理bug分支
$ git stash 压入存储区
$ git stash list 查看存储区
$ git stash apply && $ git stash drop 恢复删除临时区
$ git stash pop 同上
$ git cherry-pick 4c805e2 将master的修改操作复制到当前分支
$ git stash apply stash@{0}
多人协作
$ git remote 查看远程仓库名称
$ git remote -v 查看远程仓库信息
$ git push origin master 推送master分支
$ git push origin dev 推送dev分支
$ git clone git@github.com:michaelliao/learngit.git 抓取分支
$ git checkout -b dev origin/dev 创建远程origin的dev分支到本低
$ git pull 把最新的提交从origin/dev抓下来
$ git branch --set-upstream-to=origin/dev dev 设置dev和origin/dev的链接:
$ git commit -m "fix env conflict"
$ git push origin dev
$ git rebase 原本分叉的提交现在变成一条直线
7.标签管理
$ git tag v1.0 给当前版本打标签
$ git tag 显示已有标签
$ git log --pretty=oneline --abbrev-commit
$ git tag v0.9 f52c633 对历史节点打标签
$ git show v0.9 显示版本信息
$ git tag -a v0.1 -m "version 0.1 released" 1094adb 带说明的标签
$ git tag -d v0.1 删除标签
$ git push origin v1.0 推送某个标签到远程
$ git push origin --tags 一次性推送全部尚未推送到远程的本地标签
$ git tag -d v0.9 >> $ git push origin :refs/tags/v0.9 删除远程标签 $ git push origin --delete tagname
8.自定义git
$ git config --global color.ui true Git显示颜色
忽略文件 .gitignore 文件 https://github.com/github/gitignore
$ git add -f App.class 强制添加
$ git check-ignore -v App.class
$ git config --global alias.st status
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
$ git config --global alias.last 'log -1' 用git last就能显示最近一次的提交
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
每个仓库的Git配置文件都放在.git/config文件中
9.VScode中的Git使用
VScode的安装这里就不多说了,打开VScode:文件->首选项->设置
,然后点击图中红圈
里的按钮:
在设置里添加以下两句,其中第一句添加git安装位置(确保安装git时勾选添加到系统变量),第二局将VScode中的终端换成默认Git Bash
。
"git.path": "C:\\Program Files\\Git\\cmd\\git.exe",
"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",
然后用VScode打开练习Git的文件夹,Ctrl+~打开终端输入git status
:
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: "git\346\200\273\347\273\223.txt"
no changes added to commit (use "git add" and/or "git commit -a")