0、安装Git
在windows
上安装Git只需要到这个网站即可。
1、配置Git
由于Git是分布式管理系统,安装完成后需要打开Git Bash输入主机的用户名以及email地址
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
2、新建Git仓库
初始化:创建一个git仓库,创建之后就会在当前目录生成一个.git的文件夹(不可见)
git init
3、增加/删除/更改文件
这里所有的增加操作都是把文件增加到暂存区
增加指定文件
git add [filename] [filename2]
增加指定目录
git add [dir]
增加所有文件(加all可以添加被手动删除的文件,而加“.”不行)
git add .
git add --all
删除工作区的文件,并将删除操作提交至暂存区
git rm [filename]
更改文件名
git mv old_filename new_filename
4、代码提交
提交暂存区的修改操作(注意,没有被add的修改操作不会被提交)
message可以是提交的说明
git commit -m "message"
如果没有输入-m “message”
,则会进入提交说明的窗口。此时需要先按i
进入输入状态,输入完说明后,按Esc
退出输入状态。此时输入冒号:
,再输入wq
即可返回原始界面。
git commit
5、查看信息
显示当前分支的版本历史
git log
简化显示当前分支的版本历史
git log --pretty=oneline
查看命令历史:查看仓库的操作历史(便于回退版本后无法找回回退前的版本)
git reflog
查看文件修改前后的差异
需要是没有被add过的文件,如果进入了暂存区,则无法显示
git diff [filename]
查看git库的状态,显示文件修改后没有被add的文件以及add过但没有被commit的文件
git status
查看远程库的信息
git remote
// 显示更详细信息
git remote -v
6、版本回退
回退到上一个版本(HEAD是当前版本,^是上一个版本)
–hard命令会同时重置工作区(实际的文件夹区域)和暂存区,如不加则不会重置工作区
git reset --hard HEAD^
回退到某一个版本
git reset --hard [某版本号的前几位数字]
撤销工作区修改的文件到上一次git commit
或上一次git add
的状态
git checkout -- [filename]
撤销暂存区的文件,返回到工作区中(即撤销add操作)
可以配合上一个命令完整删除掉自己误输入的信息
git reset HEAD [filename]
7、添加SSH连接github
如果用户主目录下没有.ssh
的文件夹,则先需要在Git Bash中创建SSH KEY
$ ssh-keygen -t rsa -C "youremail@example.com"
成功后即可在用户主目录下看到.ssh
文件夹,其中有两个文件分别是id_rsa
和id_rsa.pub
,有pub的是公钥可以公开,没有pub的是私钥,不可以泄露给任何人。
在GitHub个人账户"Settings"的"SSH KEYs"中可以添加SSH信息,Tile可以任意填写,内容则复制id_rsa.pub
的信息即可。
8、远程库操作
关联一个GitHub上的远程库
git remote add origin git@server-name:path/repo-name.git
//git remote add origin git@github.com:yanghao1550/learngit.git
第一次推送master的分支内容
git push -u origin master
第一次后的每次推送
git push origin [分支名]
克隆GitHub上的仓库到本地
git clone git@server-name:path/repo-name.git
//git clone git@github.com:yanghao1550/learngit.git
9、分支管理
查看分支情况
git branch
创建分支
git branch [分支名]
创建并切换到指定分支
git checkout -b [分支名]
git switch -c [分支名] //最新的git才可用
创建远程端的分支到本地
git checkout -b dev origin/[分支名]
把远程端的最新提交pull到本地
git pull
// 如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建
// 用命令git branch --set-upstream-to <branch-name> origin/<branch-name>
切换到指定分支
git checkout [分支名]
git switch [分支名] //最新的git才可用
合并指定分支的内容到当前分支
两个分支修改同一个文件再合并时会产生冲突,需手动修改
git merge [分支名]
// 默认使用fast forward,会丢掉分支合并信息
git merge --no-ff -m "message" [分支名]
// 使用--no-ff可以保留分支合并信息
删除分支
git branch -d [分支名]
// 强行删除未合并的分支
git branch -D [分支名]
查看分支合并图
git log --graph
git log --graph --pretty=oneline --abbrev-commit
如果需要在其余分支工作的时候修复主分支bug,则需要保护其余分支不被顺带提交
git stash
显示stash的分支
git stash list
恢复stash的分支
// 全部恢复
git stash pop
// 单个恢复
git stash apply stash@{0}
10、标签
标签不同于分支的指针,一旦打上,就不会移动。
打上标签(需先切换到指定分支上)
git tag <tag name>
查看所有标签
git tag
对某次commit打上标签
git tag <tag name> <commit id>
查看标签详细信息
git show <tagname>
推送标签到远程
git push origin <tagname>
git push origin --tags
删除本地标签
git tag -d <tag name>
删除远程标签
// 先删除本地标签
git tag -d <tag name>
git push origin :refs/tags/<tag name>
11、中文文件标题乱码
在git bash中输入
git config --global core.quotepath false