Git常用命令
廖雪峰老师Git教程学习笔记: https://www.liaoxuefeng.com/wiki/896043488029600
Git是什么?
Git是先进的分布式版本控制系统。
Git的诞生
Linux为了管理Linux代码而使用C语言开发的版本控制系统
Git安装
-
Linux安装(Ubuntu版本)
apt install git
-
Windows安装
下载安装软件安装:https://git-scm.com/downloads
安装完成之后需要进行配置:
git config --global user.name "Your name"
git config --global user.email "Your email"
版本库
版本库又名仓库,英文名repository,可以理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
创建版本库
git init
把文件添加到版本库(添加到暂存区Stage)
git add filename1 filename2 ...
把文件提交到仓库中(添加到版本仓库(branch))
git commit -m "Your commit"
查看当前仓库目录下是否有未管理的新文件
git status
查看提交的版本
git log
# 或者
git log --pretty=oneline
版本回退
# HEAD表示当前版本,回退到上一版本则写为HEAD^,上上一版本为HEAD^^
git reset --hard HAED^^
# 可以使用~简写多版本回退
git reset --hard HEAD~2
# 实际上可以通过commit的版本号来指定回退(或者前进)的具体版本
git reset --hard commit-id
查看以往log命令
git reflog
将版本库文件替换工作区文件
git checkout --filename
删除版本库中的文件
git rm filename
本地仓库同步到Github
-
生成ssh key
ssh-keygen -t rsa -C "Your email"
接下来全部回车,然后会在当前目录下生成两个文件:
id_rsa
和id_rsa.pub
-
添加
id_rsa.pub
的内容到你的Github账号:# 依次展开: Settings > SSH and GPG keys >New SSH key
随便起个Title,然后复制Key点击添加SSH key即可完成!
-
新建Github仓库
-
将本地仓库关联到远程仓库
git remote add origin git@github.com:yourname/your-repository.git
-
将本地库的内容推送到远程库
# 第一次推送使用 -u参数,以后每次推送都不必用此参数 git push -u origin master
远程仓库克隆到本地
git clone git@github.com:yourname/your-repository.git
创建分支
# checkout命令用来切换分支,-b参数表示创建分支
git checkout -b branch-name
# 可以通过branch命令创建分支而不切换
git branch branch-name
# 可以通过checkout 命令切换分支
git checkout branch-name
查看分支
git branch
切换分支
git checkout branch-name
合并分支
git merge branch-name
删除分支
git branch -d branch-name
解决分支冲突
需要将冲突的文件手动修改后再进行合并
查看分支合并图
git log --graph
使用普通模式合并(区别于快速合并:fast-forward)
Fast-forward模式合并看不出曾经做过合并操作,为了能看出曾经做过合并操作,可以带参数合并:
git merge --no-ff -m "Your commit content" branch-name
分支策略
稳定版本使用master分支,开发版本使用dev分支
bug分支
当出现bug需要修复时,需要先保存当前分支的工作现场再切换到新分支进行修复:
git stash
查看stash保存的内容:
git stash list
恢复stash中的内容
# 恢复而不删除stash list中的内容
git stash apply
## 恢复并删除stash中的内容
git stash pop
feature分支
当有新功能要添加时,可以使用创建新的feature分支方法;开发完成后合并到主分支并删除该分支即可;当有冲突需要强制删除分支时使用D
参数:
git branch -D feature-branch
查看远程分支
git remote
##或者
git remote -v
推送分支到远程
一般来说,需要推送到远程的分支往往是需要共同开发的分支,比如master和dev分支,而bug分支和feature分支一般只有本地需要
git push origin master
git push origin dev
克隆dev分支到本地
克隆远程分支到本地时,默认只克隆了master分支,如果需要克隆dev分支,需要指定远程分支:
git checkout -b dev origin/dev
当推送到远程分支产生冲突时,需要先将远程分支最新的版本拉取下来:git pull
当拉取出错时,需要指定本地dev分支跟远程分支的关联关系
git branch --set-upstream-to=origin/dev dev
git 分支操作合并
git rebase
git 添加标签
可以为某次commit添加标签:
# 默认标签位于当前最新的commit
git tag tag-name
# 使用commit指定标签位置
git tag tag-name commit-id
# 使用git tag命令查看标签
git tag
# 使用show命令查看标签信息
git show tag-name
删除标签
git tag -d tag-name
标签推送到远程
git push origin tag-name
# 或者全部推送
git push origin --tags
远程标签删除
git push origin :refs/tags/tag-name
参与到开源项目的贡献中
在github上Fork其他作者的项目并做修改,可向作者提交pull request
让git配置显示颜色
git config --global color.ui true
版本库忽略某些文件
定义一个.gitignore
文件写入忽略的文件名
此时仍旧可以通过f
参数来强制添加
git命令设置别名
git config --global alias.new-command origin-command
搭建Git服务器
https://www.liaoxuefeng.com/wiki/896043488029600/899998870925664