0%

Git复习

日复一日,必有精进

官方手册https:#git-scm.com/docs

创建

1
2
3
4
5
git init  #初始化
git init gitDicName #指定初始化文件夹

git clone https:#github.com/.git #从现有仓库中拷贝项目
git clone https:#github.com/.git gitDicName

配置

1
2
3
4
5
6
7
8
#提交时会记录信息
git config --global user.name "myUserName" #设置用户名
git config --global user.email "myEmail@Email.com" #设置邮箱

#配置简写
git config --global alias.logg "log --oneline --graph"

git config -l #查看配置

基础使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
git init #初始化仓库
git add . #添加文件置暂存区
git commit -m "repoInit and add files" #提交到本地仓库
git commit --amend #合并两次提交为一次(第一次commit漏掉某个文件后add完执行amend进行合并提交)

#Commit规范
#<type>(<scope>): <subject>
#如 feat(miniprogram): 增加了小程序模板消息相关功能
#type
#feat - 新功能 feature
#fix - 修复 bug
#docs - 文档注释
#style - 代码格式(不影响代码运行的变动)
#refactor - 重构、优化(既不增加新功能,也不是修复bug)
#perf - 性能优化
#test - 增加测试
#chore - 构建过程或辅助工具的变动
#revert - 回退
#build - 打包

git push #上传到远程仓库

git status #参看仓库状态, 显示文件变更等信息
git status -s #参看仓库状态, for short
git diff #比较暂存区和工作区文件区别
git diff branch1 branch2 --stat

git log #查看记录
git log --oneline #查看记录,简短
git log --oneline --graph #线性记录简短
git log --oneline --graph --all -5 #查看所有分支的图形记录的前5条
git blame README #查看文件修改记录

git rm #从工作区和暂存区中删除文件

ls #列出文件

分支

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
git branch branchName #创建分支branchName
git checkout branchName #切换当亲分支到branchName分支

git checkout -b branchName #创建并切换到branchName分支

git branch #查看本地分支
git branch -r #查看远程分支
git branch -a #查看本地和远程分支

git checkout master
git merge branchName #合并branchName分支到master分支

git branch -d branchName #删除branchName分支
git branch -d -r branchName #删除远程branchName分支

git tag #查看tag
git tag v1.0.0 #创建tag
git tag -a v1.0.0 -m "Release version 1.0.0" HEAD

#tag标签需要主动推送
git push origin {标签名}
git push origin --tags #推送所有tag

git tag -d {标签名} #删除tag
git push origin :refs/tags/{标签名} #删除远程tag

Remote

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
git remote add origin git@gitee.com:silencejql/git-practice-repo.git #添加远程仓库并起名为origin
git push 远程主机名 远程分支名:本地分支名 #如果本地分支名与远程分支名相同,则可以省略冒号
git push --force origin master #如果本地版本与远程版本有差异,但又要强制推送可以使用 --force 参数
git push -u origin master #提交到远程仓库origin的master分支

git remote #查看远程仓库
git remote -v #查看远程仓库细节

git fatch #从远程仓库下载到本地(并不合并至本地仓库)
git merge #从远程仓库提取并合并到当前分支

git pull = git fetch + git merge
git pull 远程主机名 远程分支名:本地分支名 #如果本地分支名与远程分支名相同,则可以省略冒号

git fetch origin
git fetch origin master #从远程的origin仓库的master分支下载代码到本地的origin/master Repository中(不可修改)
git chechout -b tmp origion/master #新建分支指向拉取的master分支
git merge origin/master #把远程下载下来的代码合并到本地仓库,远程的和本地的合并

git merge -Xignore-space-change whitespace #忽略空白符
git merge --abort #退出合并模式(进入git merge后必须解决冲突后才可执行其他操作)

git fetch origin master:temp #从远程的origin仓库的master分支下载到本地并新建一个分支temp
git diff temp #比较master分支和temp分支的不同

git branch -d temp #删除temp

版本回退

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#git stash 若不保存就不可以执行切换分支等操作 
#stash执行后下次切换到当前分支后不包含所保存的修改
#stash pop后才会恢复修改后的内容
git stash #对没有提交到版本库的,位于工作区或暂存区中游离的修改进行保存,在需要时可进行恢复
git stash list #查看该分支上被stash保存的修改

git stash pop #恢复并删除stash中存储的最新修改
git stash apply #恢复但不删除stash中存储的最新修改
git stash apply stash@{0} #恢复但不删除stash中存储的特定提交

git log #查看版本日志(版本号)

git reset --soft HEAD^:将最近一次提交节点的提交记录回退到暂存区
git reset --mixed HEAD^:将最近一次提交节点的提交记录回退到工作区
git reset --hard HEAD^:将最近一次提交节点的提交记录全部清除

git reset --hard HEAD #当前版本
git reset --hard HEAD^ #上一个版本
git reset --hard HEAD^^ #上上个版本--以此类推^^^

git reset --hard HEAD~1 #上一个版本git
git reset --hard HEAD~n #上n个版本

git reset --hard 8b416 #退回git log中指定的版本号(前几位即可)

git revert 8b416 #版本回滚创建新的提交来舍弃不要的提交--会保留所有记录--用法同reset

git rebase -i HEAD~n #rebase可精简commit

git rebase -i starthash endhash #合并后生成一个临时分支
git checkout -b tmp #生成分支后续rebase或者直接用临时分支hashcode
git checkout master
git rebase tmp #重新rebase


git push -f #合并后强制推送到Remote

清空Commit

1
2
3
4
5
6
7
git checkout --orphan  new_branch #基于当前分支创建一个独立的分支new_branch
git add -A
git commit -am "commit message"
git branch -D master #删除master分支
git branch -m master #重新命名当前独立分支为 master

git push -f origin master #推送到远端分支,强制覆盖