git创设一个项目用到的关键命令
1、先装个git吧。
此处略去1万字。
2、配置git。如果你没配置过
# 检查已有配置信息 $ git config --list # 配置信息设置 $ git config --global user.name "Your Name" $ git config --global user.email "email@example.com" $ git config --global color.ui "always"
3、初始化
就是告知天下这个目录是我git的地盘啦
$ git init # 初始化,创建一个.git文件
4、添加文件到版本库
想加入组织,得先是临时工(这样出问题了也好推责任,我git组织没有这样的,他是临时工。哈哈。。)
$ git add somefile.txt # 添加单个文件到本地版本库 $ git add *.txt # 添加所有的txt文件到本地版本库 $ git add . # 添加所有的子目录(不包含空目录)到本地版本库
5、提交文件
临时工通过考验了,那就正式入编吧。
# 提交 $ git commit -m "msg" somefile.txt # 提交 单个文件 $ git commit -m "msg" -a # 提交 所有修改文件 $ git commit -C head -a -amend # 增补提交,不会产生新的提交历史
6、远程库添加
改革开放一下
$ git remote add <origin> <URL> #添加远程版本库origin
7、push到远程库
世界人民一家亲,把你的信息上报给联合国,现在是世界公民了
$ git push <远程主机名> <本地分支名>:<远程分支名>
注意,分支推送顺序的写法是<来源地>:<目的地>,所以git pull是<远程分支>:<本地分支>,而git push是<本地分支>:<远程分支>。
如果省略远程分支名,则表示将本地分支推送与之存在”追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。
$ git push origin master
如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。
git push origin
上面命令表示,将当前分支推送到origin主机的对应分支。
如果当前分支只有一个追踪分支,那么主机名都可以省略。
$ git push
如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push。
$ git push -u origin master
上面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。
不带任何参数的git push,默认只推送当前分支,这叫做simple方式。此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。如果要修改这个设置,可以采用git config命令。
$ git config --global push.default matching # 或者 $ git config --global push.default simple
还有一种情况,就是不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要使用–all选项。
$ git push --all origin
上面命令表示,将所有本地分支都推送到origin主机。
如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做git pull合并差异,然后再推送到远程主机。这时,如果你一定要推送,可以使用–force选项。
如果有错Non-fast-forward,你的地盘你说了算,那就来硬的吧,强推:
git push -f
温柔点可以这样
$ git fetch $ git merge #这2句命令等价于 $ git pull
其他命令
# 撤销未提交的文件 $ git checkout head a.txt b.txt # 撤销单个文件 $ git checkout head *.txt # 撤销所有txt文件 $ git checkout head . # 撤销所有文件 # 撤销已提交的文件 $ git revert --no-commit head <filename> # 撤销最近一次的提交 $ git branch # 列出本地分支 $ git branch -a # 列出本地所有分支 $ git checkout <branchName> # 签出分支 $ git branch <branchName> # 基于当前分支创建新的分支 $ git checkout -b <branchName> # 基于当前分支创建新的分支并签出 $ git branch -m <branchName> <newName> # 不会覆盖已存在的同名分支 $ git branch -M <branchName> <newName> # 会覆盖已存在的同名分支 $ git branch -d <newName> # 如果分支未合并会删除失败 $ git branch -D <newName> # 强制删除分支 $ git branch -r -d origin/<branchName> #删除远程分支1 $ git push origin :<branchName> #删除远程分支2 $ git branch -r # 列出所有远程库分支 $ git remote prune origin # 删除远程库不存在的分支 $ git merge –no–ff <branchName> # 快速合并分支 $ git tag # 显示所有标签列表 $ git tag <tagName> # 当前最后一次提交后的分支上创建标签 $ git tag <tagName> <branchName> # 为特定分支最后一次提交后的状态创建标签 $ git tag <tagName> <version> # 为历史版本提交创建标签 $ git checkout <tagName> # 签出标签(快速查看基于某个标签下的断面,但不能提交) $ git tag -d <tagName> # 删除标签 $ ssh-keygen -t rsa -C "youremail@example.com" #cat ~/.ssh/id_rsa.pub 上传公钥 $ git clone <URL> #克隆版本库 $ git remote add <origin> <URL> #添加远程版本库origin $ git remote rm <origin> #删除远程版本库origin $ git fetch <origin> #获取但不合并 $ git pull = git pull <origin> #获取并合并到本地分支 $ git push <origin> master #推送远程库origin 第一次加上 -u $ git status #当前状态 $ git log #历史日志 /.gitignore #忽略特殊文件,添加到版库中,也支持版本管理 #简化命令行配置 $ git config --global alias.st status #输入git st = git status; 其他命令同理
先到这吧。