携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情
前言
- git是代码版本管理工具,大型项目需要多人协作开发,必须使用git,我们需要对其有基本的掌握
- git服务器常见的有
GitLab、coding.net(码云)
推荐
Git教程 - 廖雪峰的官方网站 (liaoxuefeng.com)
常用命令汇总
- git add .
- git checkout xxx(撤回)
- git commit -m "xxx"
- git push origin master
- git pull origin master
- git branch
- git checkout -b xxx
- git merge xxx
- git log
- git config(配置)
- git stash(把当前要改的搁置在一个区域)
- git stash pop(把暂存的修改推出来)
- git reset --soft HEAD^ ( 已经git commit一次提交,但是想撤销commit这次提交,且保留代码不变)
HEAD^的意思是上一个版本,也可以写成HEAD~1
如果你进行了2次commit,想都撤回,可以使用HEAD~2
关于参数:
–mixed
意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
–soft
不删除工作空间改动代码,撤销commit,不撤销git add .
–hard
删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,就恢复到了上一次的commit状态。
VS Code执行git操作
其实,基本的提交代码、拉取代码、合并代码在VS Code中就可以实现
详细命令汇总
- 初始化git仓库:
git init
- 向仓库(暂存区即.git的stage)添加文件:
git add <file>
-f强制添加
后为文件名,” . ”为全部
- 向仓库(分支)提交文件:
git commit –m
修改提示信息
- 查看仓库当前状态:
git status
- 查看修改内容:
git diff
- 查看提交日志:
git log
加上--pretty=oneline参数,只查看修改内容
- 版本回退(暂存区):
git reset --hard HEAD^
HEAD为当前版本,HEAD^为上一版本
- 倒回被回退的版本:
git reset --hard 版本号(不必写全,大概前四位)
- 查看每一次命令:
git reflog(带有版本号)
- 撤销操作(工作区):
git checkout --文件名
- 删除文件:
git rm
- 推送:
git push –u origin master
-u将本地和git上的master关联
- 查看远程库信息
git remote -v
-v更详细信息
- 删除远程库(解除本地与远程之间的联系)
git remote rm origin
- 将本地仓库的内容推送到GitHub仓库
git remote add origin git@github.com:michaelliao/learngit.git
- 将远程库clone到本地
git clone
- 切换当前分支
//git checkout 分支名
//-b参数创建并切换分支
//推荐
git switch
-c参数,创建并切换分支
- 创建分支
git branch 分支名
git branch 查看当前分支
- 合并分支
//先切换到合并的分支
git checkout 分支名(master)
//合并被合并的分支
git merge 分支名
git merge --no-ff -m "merge with no-ff" dev
--no-ff禁用fast forward模式
-m提交一次commit
- 删除分支
git branch -d 分支名
-D强行删除
- 查看分支合并图
git log graph
- 保存当前工作状态
git stash
- 查看stash
git stash list
- 恢复工作现场
git stash apply
//恢复后,stash内容并不删除,你需要用git stash drop来删除;
git stash pop
//恢复的同时把stash内容也删了
- 复制一个特定的提交
cherry pick commit序号
- 合作一起push有冲突时
先git pull,在合并分支,再push
若是git pull时发生错误
git branch --set-upstream-to=origin/dev dev
再pull,再合并,若有问题,手动解决
- 直线提交
git rebase
- 打标签(默认给最近一次的commit打标签)
git tag 标签名 commit id
$ git tag -a v0.1 -m "version 0.1 released" 1094adb
用-a指定标签名,-m指定说明文字
- 查看标签信息
git show 标签名
- 删除标签
git tag -d 标签名
- 推送某个标签到远程
git push origin 标签名
--tags推送全部标签
- 从远程删除标签
//先在本地删除
git tag -d 标签名
//再从远程删除
git push origin :refs/tags/v0.9
- 检查.gitignore文件错误
git check-ignore
- 显示最后一次提交信
git last
- 配置别名
别名在.gitconfig或.git/config文件下
git config --global alias.st status
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:
//假设你已经有sudo权限的用户账号
$ sudo apt-get install git
//第二步,创建一个git用户,用来运行git服务:
$ sudo adduser git
//第三步,创建证书登录:
//收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个
//第四步,初始化Git仓库:
//先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:
$ sudo git init --bare sample.git
$ sudo chown -R git:git sample.git
//第五步,禁用shell登录:
//出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
改为
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
//第六步,克隆远程仓库:
$ git clone git@server:/srv/sample.git
要方便管理公钥,用Gitosis
36. sourceTree的使用
sourceTree是Git图形界面管理工具
- 直接从资源管理器把文件夹拖拽到SourceTree上,就添加了一个本地Git库
- 也可以选择“New”-“Clone from URL”直接从远程克隆到本地
最后
汇总完毕,我个人把这篇当做笔记,各位也可以收藏以备查询(吃灰bushi)。