git 查看系统是否安装Git
git init 把当前目录变成Git可以管理的目录
git add file 把(新增,修改)文件添加到版本库 把要提交的所有文件都放在暂存区(Stage),
git commit -m "msg" 一次性把暂存区的所有文件提交到分支上
git status 显示当前仓库状态
git diff 查看文件差异
git log
git log --pretty=oneline
git reset --hard HEAD^ 回滚到上一个版本
HEAD 指针指向当前版本 HEAD~5 往上5个版本
git reset --hard commitID 回到后面的版本
git checkout -- file 撤销文件的修改(包括删除) 本质上是用版本库中的文件替换工作区中的文件
1) 修改的文件未add到暂存区,文件恢复成修改前
2) 修改的在修改之前文件已经放在暂存区中,撤销修改就回到文件添加进暂存区时的状态
git reset HEAD file 把 add 到暂存区的文件unstage , 现在工作区的文件是修改的
rm file 删除工作区的文件
git rm file 删除版本库中的文件
origin git默认远程库的名字 可变
git remote add origin https://github.com/shiyingdong/learngit.git -- 把本地仓库和远程仓库关联
git remote add origin git@github.com:shiyingdong/learngit.git
-u 在第一次推送master分支时,git不但是把分支master推送到远程仓库新的master分支,还会把本地master和远程master关联起来
git push -u origin master -- 把本地仓库内容推送到远程仓库
git remote 查看远程库的信息
git remote -v 详细信息
git clone https://github.com/shiyingdong/gitclone.git
git clone git@github.com:shiyingdong/gitclone.git // ssh协议
git 本地分支合并,指针指向提交点
git checkout -b dev 创建和切换到dev分支
git branch dev
git checkout dev
git branch 列出所有分支,当前分支前面会加上一个*
git checkout master 切换到master分支
git merge dev 把dev的成果合并到master
git branch -d dev 删除dev分支
git branch -D feature 强行删除分支
git冲突本质上是 一条线上产生了多个分支,解决冲突就是把冲突内容修改成相同的内容,
git log --graph --pretty=oneline --abbrev-commit 查看分支合并情况
提交远程库冲突, git pull 把最新的提交抓取下来,本地解决冲突在推送
通常,合并分支时,默认使用 Fast forward 模式,在删除分支后,会丢掉部分分支信息。强制禁用 Fast forward 后,
git 会在merge时生成一个新的 commit 。
git merge --no-ff -m "msg" dev
git stash 把当前工作收藏起来,包括工作区的修改和暂存区的数据
git apply + git drop
或者
git pop
git branch --set-upstream dev origin/dev 设置本地 dev 和远程 origin/dev 的链接
工作区(Working Directory) 电脑上能看到的目录
版本库(Repository) .git文件夹
stage(index) 暂存区
把文件添加到Git版本库,是分两步执行的
① add 把文件添加到stage
② 把stage 的所有内容提交到当前分支
git如何跟踪修改:
每次修改,如果不add到暂存区(不论是否是同一文件),就不会加入到commit中
标签管理
git的标签就是版本库的快照,其实就是指向某个commit的指针。创建和删除标签是很快的
git checkout master
git tag 查看标签 标签按照字母排序
git tag v1.0 打标签
git tag v1.1 commitID 给指定提交打标签
git show tagname 查看标签信息
git tag -a v1.2 -m "msg" [commitid]
删除本地标签
git tag -d tagname
推送某个标签到远程库
git push origin tagname
一次性推送全部尚未推送到远程库的标签
git push origin --tags
删除远程库标签
git tag -d tagname git push origin :refs/tags/tagname
忽略提交某些文件
在git的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名或者包名写在里面
配置别名
git config --global alias.st status
git status ------ git st