文章目录

  • 前言
  • 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:文件->首选项->设置,然后点击图中红圈里的按钮:

vscode gitlab workflow 使用_暂存区


  在设置里添加以下两句,其中第一句添加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")