1、初始化一个git项目
git init
2、将添加的文件或修改添加到仓库
git add 文件名
3、查看当前的状态
git status
4、查看修改的不同,比较展示
# 修改文件后,尚未执行git add前执行
git diff
5、将修改提交到仓库
git commit -m "本次提交的描述"
6、查看提交历史
git log
# 简洁显示
git log --pretty=oneline
7、回滚版本
# 回滚到上一个提交的版本
git reset --hard HEAD^
# 注意,如果是Windows下的cmd环境,需执行如下
# 因^是cmd.exe的escape字符,属于特殊字符
git reset --hard HEAD"^"
# 回滚到前n个版本
git reset --hard HEAD~n
8、查看命令历史
git reflog
9、工作区和暂存区的理解
git跟踪并管理的是修改,而非文件
参考https://www.liaoxuefeng.com/wiki/896043488029600/897271968352576
10、放弃工作区的修改
git checkout -- 文件名
11、 关联远程仓库
# 远程仓库使用你自己的地址
git remote add origin git@github.com:susengo/learngit.git
# 查看远程库信息
git remote -v
# 删除已关联的远程库
git remote rm origin
12、 推送分支
# 第一次推送加-u参数,把本地的master分支内容推送的远程新的master分支
# 还会把本地的master分支和远程的master分支关联起来
# 以后的推送或者拉取时就可以简化命令
git push -u origin master
# 以后可直接执行
git push origin master
# 本地新建分支dev,并推送到远端
git checkout -b dev
git push origin dev:dev
13、 多人协作
# 地址使用你需要clone的远程仓库
git clone git@github.com:susengo/gitskills.git
# 查看远程库信息
git remote -v
# 在本地创建和远程分支对应的分支
git checkout -b branch-name origin/branch-name
# 建立本地分支和远程分支的关联
git branch --set-upstream branch-name origin/branch-name
# 从远程抓取分支
git pull
# 把本地未push的分叉提交历史整理成直线
git rebase
14、分支操作
- 创建、切换、删除
# 创建dev,并切换到dev分支
git checkout -b dev
# 在本地创建和远程分支对应的分支
git checkout -b branch-name origin/branch-name
# 查看所有分支
git branch
# 切换到分支master
git checkout master
# 删除指定分支
git branch -d 分支名
# 删除未被合并过的分支
git branch -D 分支名
- 合并
# 合并指定分支到当前分支
git merge dev
# 查看分支合并图
git log --graph --pretty=oneline --abbrev-commit
# 如果merge时提示如下错误:fatal: refusing to merge unrelated histories
# 可强制合并
git merge dev --allow-unrelated-histories
15、工作区
# 储藏工作区
git stash
# 查看已储藏的工作区stash列表
git stash list
# 恢复工作区
git stash apply
# 删除stash内容
git stash drop
# 恢复并删除工作区存档
git stash pop
# 复制一个特定的提交到当前分支
git cherry-pick 4c805e2
16、 标签
# 创建标签
# 默认为HEAD,可跟commit id指定
git tag 标签名 (commit id)
# 创建带有说明的标签
git tag -a 标签名称 -m "标签说明"
# 删除标签
git tag -d 标签名称
# 推送一个本地标签到远程
git push origin 标签名称
# 推送所有标签到远程
git push origin --tags
# 删除一个远程标签
git push origin :refs/tags/标签名称
17、 配置别名
# 比如git status就可以简化为git st
# 加上--global是针对当前用户起作用的
# 如果不加,那只针对当前的仓库起作用
git config --global alias.st status
# 更好的显示log
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 config --global alias.st status
18、 搭建git服务器
搭建git服务器
19、 详细教程
廖雪峰大神的git教程
20、 后续待补充