【git教程】
http://www.liaoxuefeng.com/ (廖雪峰博客)
http://rogerdudler.github.io/git-guide/index.zh.html (Git简明教程)
【常用命令】
PS:在MacOS系统环境下的git命令。
工作流
你的本地仓库由 git 维护的三棵“树”组成。
> 工作区,它持有实际文件夹。
> 暂存区(Stage),它像个缓存区域,临时保存你的改动。
> HEAD,它指向你最后一次提交的结果。
配置本机git的用户名和邮箱 | config
git config --global user.name "shahdza"
git config --global user.email @.com
初始化git仓库 | init
# 创建文件夹,并进入 Demo 目录
mkdir Demo
cd Demo
# 初始化git仓库(将 Demo 文件夹变成git仓库)
git init
添加并提交 | add、commit
# 添加文件到仓库(放在暂存区)
git add readme.txt
git add *
# 提交添加到暂存区的文件到仓库
git commit -m "提交信息"
克隆仓库 | clone
远程推送 | remote、push
git remote add origin https://github.com/shahdza/Demo.git
# 第一次推送master分支的所有内容
git push -u origin master
# 推送最新修改内容到master分支(也可以推送其它分支)
git push origin master
查看提交信息 | status、diff、log、reflog
git status
# 查看文件被修改过的内容(在还未commit时,工作区和本地git仓库的差异)
git diff readme.txt
# 查看从最近到最远的提交历史
注意:比如有100个版本,通过reset回退到了第50个版本,那么log只会显示1~50的提交日志
会显示版本号、提交日期、提交信息
git log
git log --pretty=oneline
# 查看操作命令的历史(记录了每一次的操作命令)
git reflog
版本回退 | reset --hard
git reset --hard HEAD^
git reset --hard HEAD^^
git reset --hard HEAD~100
# 回退到指定版本(通过版本号)
git reset --hard
丢弃工作区的修改 | checkout --
# 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
# 一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
# 总之,就是让这个文件回到最近一次[git commit]或[git add]时的状态。
git checkout -- readme.txt
撤销暂存区的修改(unstage),重新放回工作区 | reset HEAD
git reset HEAD readme.txt
删除仓库中的某个文件(工作区文件也会删除) | rm
# 删除文件会放入暂存区,可以使用[git reset HEAD file]和[git checkout -- file]撤销删除
git rm readme.txt
分支管理 | branch
# 创建分支
git branch <name>
# 切换分支
git checkout <name>
# 创建+切换分支
git checkout -b <name>
# 合并某分支到当前分支
git merge <name>
# 删除分支
git branch -d <name>
# 强行删除
git branch -D <name>
# 查看分支
git branch
# 查看分支合并图
git log --graph --pretty=oneline
标签管理 | tag
# 给分支打上标签
当前版本打上标签
git tag v1.0
某个版本打上标签
git tag v0.9
# 推送标签到远程仓库
推送某个标签
git push origin <tagname>
推送所有标签
git push origin --tag
# 删除标签
git tag -d v0.1
# 删除远程标签
需要先本地删除,然后再远程删除
git tag -d v0.9
git push origin :refs/tags/v0.9
# 查看所有标签
git tag
# 查看某个标签信息
git show <tagname>
忽略特殊文件 | .gitignore
1、在 Git工作区的根目录创建一个特殊的 .gitignore 文件。
2、在 .gitignore 文件中,添加需要忽略的文件。
3、特殊文件大全:https://github.com/github/gitignore
例如:编写Unity3D项目的 .gitignore 文件
=============== Unity generated =============== Temp/ Library/ ===================================== Visual Studio / MonoDevelop generated ===================================== ExportedObj/ obj/ *.svd *.userprefs /*.csproj *.pidb *.suo /*.sln *.user *.unityproj *.booproj ============ OS generated ============ .DS_Store .DS_Store? ._* .Spotlight-V100 .Trashes ehthumbs.db Thumbs.db
多人协作
master分支:用于管理正式版本。
dev分支:用于管理正在开发版本。
bob分支:bob自己创建的分支,bob在这个分支下工作,然后合并到dev分支上。
michael分支:michael自己创建的分支,在这个分支下工作,然后合并到dev分支上。
# 抓取分支
从远程库clone时,默认情况下,只能看到本地的master分支。
git clone https://github.com/shahdza/Demo.git
# 在本地创建和远程分支对应的dev分支
git checkout -b dev origin/dev
# 建立本地dev分支和远程dev分支的关联
git branch --set-upstream dev origin/dev
# 更新分支
当小伙伴已经向origin/dev分支推送了他的提交。
而碰巧你也对同样的文件作了修改,并试图推送。
推送失败,因为小伙伴的最新提交和你试图推送的提交有冲突
需要把最新的提交从origin/dev抓下来
然后,在本地合并,解决冲突,再推送
git pull
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/do-yfwjc/37716.html