常用命令
设置账号和邮箱
1
2git config --global user.name "xxx"
git config --global user.email "xx@xx.com"git init
在当前目录创建一个版本库git add <path>
主要用于把我们要提交的文件的信息添加到暂存区(stage)中,当我们使用git commit
时,git将依暂存区中的内容来进行文件的提交git commit
把修改(暂存区)提交到版本库中。一般使用git commit -m "message"
。如果你的文件之前已经提交过,但这次的改动还没有进stage,可以使用git commit -am "message"
和先add再commit的效果一样git log
查看HEAD指向的分支的log,--pretty=oneline
简略查看git reflog
可以查看所有分支的所有操作记录git reset
在本地仓库中回退到某个commit-
git reset –mixed
此为默认方式,不带任何参数的git reset
,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息 -
git reset –soft
回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可 -
git reset –hard
彻底回退到某个版本,本地的源码也会变为上一个版本的内容
-
git checkout
把文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。git rm
从版本库删除文件git clone <url>
从远程仓库克隆一个项目
一次 Git 克隆会建立你自己的本地分支 master 和远程分支 origin/master,并且将它们都指向 origin 上的 master 分支。git remote add origin <url>
把本地项目与远程项目关联git push origin master
把本地master分支推动到远端的origin(相当于本地的HEAD)git pull
从远端抓取并试图合并git branch <name>
创建一个分支git checkout <name>
切换到某个分支,git checkout -b <name>
创建同时切换到分支git branch
列出所有分支,当前分支前面会标一个*号git merge <name>
把某个分支合并到当前分支,默认是快速合并,有时候要解决冲突
Git 默认使用快进式合并(fast-farward merge),只是将 master 分支指针指向 bugfix-0.1分支,而使用git merge --no-ff name
了则会创建一条合并日志,保证分支删除时不丢失历史日志
对应的tortoisegit合并分支选项是非Fast Forwordgit branch -d branchName
删除分支,有时候完成合并后,不需要了就可以删除了因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。git tag tagName
创建标签,默认标签是打在最新提交的commit上的git tag -d tagName
删除标签git push origin v1.0
推送标签
分支管理策略
- 主分支Master
首先,代码库应该有一个、且仅有一个主分支。所有提供给用户使用的正式版本,都在这个主分支上发布。
Git主分支的名字,默认叫做Master。它是自动建立的,版本库初始化以后,默认就是在主分支在进行开发。 - 开发分支Develop
主分支只用来分布重大版本,日常开发应该在另一条分支上完成。我们把开发用的分支,叫做Develop。
如果想正式对外发布,就在Master分支上,对Develop分支进行”合并”(merge) - 临时性分支
用于日常开发- 功能(feature)分支
- 预发布(release)分支
- 修补bug(fixbug)分支
- 功能(feature)分支
GitHub
配置ss登陆
多人协作
有三种方法
- 把别人的公钥加到你项目的公钥
- 建一个组织,这样组织中的所有人都有提交权限
- 别人fork你的项目,然后给你发 pull request