导图社区 git简单使用
git基础命令,安装,操作,仓库,分支,版本管理
编辑于2020-01-03 10:44:20git
git安装
下载网址:https://git-scm.com/downloads
系统安装
Linux
Debian或Ubuntu Linux
sudo apt-get install git
老Debian或Ubuntu Linux
sudo apt-get install git-core
其他Linux
先从Git官网下载源码,然后解压,依次输入:./config,make,sudo make install这几个命令安装就好了
Mac OS
homebrew
http://brew.sh/
AppStore
安装xcode
Xcode集成了Git,不过默认没有安装,你需要运行Xcode,选择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了。
windows
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
添加全局用户
命令行输入
$ git config --global user.name "Your Name" $ git config --global user.email "email@example.com"
代码仓库
本地工作区
电脑里能看到的目录
.git隐藏目录
版本库(repository)
创建版本库
创建空目录
windows系统保证目录没有中文
git init
保存git有关信息
暂存区(stage)
第一个分支master
指向master的指针HEAD
远程仓库
连接远程仓库(以github为例)
创建SSH Key
在用户主目录下,如果有.ssh目录并且有id_rsa和id_rsa.pub这两个文件则无需创建
ssh-keygen -t rsa -C "邮箱名"
id_rsa
id_rsa.pub
登陆github
打开“Account settings”
“SSH Keys”页面
点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容
查看远程库
git remote
git remote -v
显示更详细信息
连接
先有本地库
本地库连接远程库
git remote add origin 远程库连接url
远程库的名字就是origin,这是Git默认的叫法,也可以改成别的
本地库的所有内容推送到远程库
git push -u origin master
实际上是把当前分支master推送到远程
第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来
以后提交
git push origin 分支名
先有远程库
克隆远程库
git clone 远程库连接url
标签
版本库快照,指向某个commit
如果commit出现在多个分支,那么多个分支都可以看到这个标签
打标签
切换到要打标签的分支
git tag 标签名
默认打在最新commit
git tag 标签名 commit id
打在对应的commit上
git tag -a 标签号 -m "标签说明" commit id
创建带有说明的标签,用-a指定标签名,-m指定说明文字
查看标签
git tag
标签不是按时间顺序列出,而是按字母排序的
查看标签信息
git show 标签名
删除标签
没推送到远程
git tag -d 标签名
推送到远程
删除本地
git tag -d 标签名
删除远程
git push origin :refs/tags/标签名
分两步,先删本地再删远程
推送到远程
git push origin 标签名
一次性推送全部尚未推送到远程的本地标签
git push origin --tags
版本管理
查看当前状态
git status
查看文件差异
git diff
文件提交
git add 文件名
git commit -m "提交说明"
提交到分支
撤销修改
git checkout -- 文件名
查看提交历史
git log
显示从最近到最远的提交日志
如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数
记录每一次命令
git reflog
回退版本
git reset --hard HEAD^
^表示上一个版本,有几个^就表示上几个版本
~+数字 代替^
数字是X就表示上X个版本
git reset --hard 版本号
版本号(commit id)是通过git log查看
版本号不需要写全,提供让git找到的唯一位数即可
git reset HEAD 文件名
把暂存区的修改撤销掉(unstage),重新放回工作区
查看一个文件内容
cat 文件名
删除文件
git rm 文件名
文件未改变
方式
认为文件未改变
git update-index --assume-unchanged
取消认为文件未改变
git update-index --no-assume-unchanged
用途
在文件commit到仓库以后,gitignore不再生效,如果不想本地文件的变化提交到仓库,那么可以手工指定该文件未改变,这样当该文件发生变化的时候,git不会认为文件变化而要提交到仓库。这种方式只适合单个文件
分支
每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支
HEAD指向分支
master指向提交
创建分支
git checkout -b 分支名
git branch 分支名
git checkout 分支名
相当于这两个命令
创建远程分支到本地
git checkout -b 分支名 origin/分支名
本地分支绑定远程分支
git branch --set-upstream-to=origin/<branch> 本地分支名
查看分支
git branch
删除分支
git branch -d 分支名
强行删除
git branch -D 分支名
切换分支
git checkout 分支名
合并分支
合并某分支到当前分支
git merge 分支名
Fast forward模式
直接把当前分支指向合并分支的当前提交
看不出来曾经做过合并
普通模式
git merge --no-ff -m "提交描述" 分支名
禁用Fast forward模式会生成新的commit,因此要加上-m
合并后的历史有分支,能看出来曾经做过合并
查看分支合并图
git log --graph
保护当前工作现场
git stash
查看保护的工作现场
git stash list
恢复保护的工作现场
git stash apply
恢复后,stash内容并不删除,需要用git stash drop来删除
git stash pop
恢复的同时把stash内容也删了
多个工作现场恢复
git stash apply stash@{0}
根据查看出来的工作现场填写
远程分支
拉取远程分支
git pull
提示no tracking information,则说明本地分支和远程分支的链接关系没有创建
git branch --set-upstream-to 分支名 origin/分支名
推送本地分支
git push origin 分支名
本地分支不推送,别人就无法查看