参数解释
- [version] #版本
- [help] #帮助
- [push] #更新远程引用以及关联的对象的代码
- [pull] #从另一个存储库或本地分支获取代码并与之集成 #如果有冲突需要解决冲突继续git pull
- [fetch] #从另一个存储库下载对象和引用
- 发展、标记和调整您的共同历史
- [branch] #列出、创建或删除分支
- [commit] #记录对版本库的修改内容
- [merge] #将两个或多个开发历史合并在一起
- [rebase] #在另一个基本提示之上重新应用提交
- [reset] #将当前 HEAD 重置为指定状态
- [switch] #切换分支
- [tag] #创建、列出、删除或验证使用 GPG 签名的标签对象
- 检查历史和状态
- [bisect] #使用二进制搜索查找引入错误的提交
- [diff] #显示提交、提交和工作树等之间的变化
- [grep] #打印与模式匹配的行
- [log] #显示提交日志
- [show] #显示各种类型的对象
- [status] #显示工作树状态
- 处理当前更改
- [add] #将文件内容添加到索引
- [mv] #移动或重命名文件、目录或符号链接
- [restore] #恢复工作树文件
- [rm] #从工作树和索引中删除文件
- [ sparse-checkout] #初始化和修改稀疏结帐
- 启动一个工作区
- [ clone] #将存储库克隆到新目录中
- [init] #创建一个空的 Git 存储库或重新初始化一个现有的
- 报错:fatal: not a git repository (or any of the parent directories): .git 利用上述指令解决
Git push
在使用git commit命令将修改从暂存区提交到本地版本库后,只剩下最后一步将本地版本库的分支推送到远程服务器上对应的分支了。
git push的一般形式为 git push <远程主机名> <本地分支名> <远程分支名>
eg:git push origin master:refs/for/master ,即是将本地的master分支推送到远程主机origin上的对应master分支, origin 是远程主机名,
第一个master是本地分支名,第二个master是远程分支名。
git push origin master
如果远程分支被省略,如上则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建
git push origin :refs/for/master
如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支,等同于 git push origin --delete master
git push origin
如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,将当前分支推送到origin主机的对应分支
git push
如果当前分支只有一个远程分支,那么主机名都可以省略,形如 git push,可以使用git branch -r ,查看远程的分支名
git push 的其他命令
这几个常见的用法已足以满足我们日常开发的使用了,还有几个扩展的用法,如下:
(1) git push -u origin master 如果当前分支与多个主机存在追踪关系,则可以使用 -u 参数指定一个默认主机,这样后面就可以不加任何参数使用git push,
不带任何参数的git push,默认只推送当前分支,这叫做simple方式,还有一种matching方式,会推送所有有对应的远程分支的本地分支, Git 2.0之前默认使用matching,现在改为simple方式
如果想更改设置,可以使用git config命令。git config --global push.default matching OR git config --global push.default simple;可以使用git config -l 查看配置
(2) git push --all origin 当遇到这种情况就是不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要 -all 选项
(3) git push --force origin git push的时候需要本地先git pull更新到跟服务器版本一致,如果本地版本库比远程服务器上的低,那么一般会提示你git pull更新,如果一定要提交,那么可以使用这个命令。
(4) git push origin --tags //git push 的时候不会推送分支,如果一定要推送标签的话那么可以使用这个命令
(5) refs/for 的意义在于我们提交代码到服务器之后是需要经过code review 之后才能进行merge的,而refs/heads 不需要
设置用户签名
首次安装git需要设置用户签名,用来区分不同操作者身份,邮箱可以用假邮箱。这里设置用户签名和github的账号没有任何关系
git config --global user.name "xx"
git config --global user.email "xx@qq.com"
设置完用户签名后,会在用户名目录C:\Users\Lenovo下生成 .gitconfig文件,文件内容为
git-demo watch -n 1 -d find . /每隔一秒钟刷新当前目录
上传全套指令:
(1)将项目的所有文件添加到仓库中
git add . ##这个命令会把当前路径下的所有文件,添加到待上传的文件列表中。如果想添加某个特定的文件,只需把.换成特定的文件名即可
(2)将add的文件commit到仓库
git commit -m “注释语句”
(3)提交修改
git push
如果在github的remote上已经有了文件,会出现错误。此时应当先pull一下,即:
git pull origin master
然后再进行:
git push origin master
分支处理:
(1)切换分支:
git checkout 分支名 ## git checkout dev_1.3.1
(2) 查看全部分支 ## git branch -a
查看本地分支 ## git branch
创建分支并转到该分支,注意当前分支并不存在 ## git checkout -b dev_1.2.1 origin/dev_1.2.1
(3)push后发现作者名提交错误:
- git commit --amend --author="namexx <邮箱>"
- git push --force
ssh key
生成 SSH Key 并添加到远程仓库服务器。新开发环境更新代码时发现没有更新 SSH Key。每次和远端仓库交互都需输入密码,生成 SSH Key,添加到远端仓库服务器,就可以畅通无阻上传和下载代码啦。
1 问题复现
在代码目录下打开终端,输入命令获取远端分支最新代码:
git fetch origin
会提示无法确定本地主机的真实性。"The authenticity of host '本地' can't be established."
这时我们输入密码(远程仓库服务器的用户登录密码,而非虚拟机密码),也可下载更新远端仓库的最新状态【比较麻烦】。
2 配置用户名和邮箱【远端仓库服务器】
git config --global user.name "用户名"
git config --global user.email "用户邮箱"
git config --global credential.helper store
3 生成SSH Key
ssh-keygen -t rsa -C '用户邮箱'
对生成的 SSH Key 文件进行设置:
(1) 提示秘钥的保存路径,如果不需要更改,直接按回车键;
(2) 提示是否需要对秘钥设置密码,不需要直接按回车键;
(3) 秘钥密码再次确认,不需要直接按回车键;
(4) 提示秘钥文件生成保存路径。
已生成基于我们邮箱和用户名的秘钥了。
4 复制SSH Key
提取秘钥文件中的 SSH Key:
cat ~/.ssh/id_rsa.pub
5 添加SSH Key到远端仓库
将提取的 SSH Key 复制,然后粘贴到远程仓库服务器的 Key 位置。
不同远端仓库服务器,稍有区别,大家找到关于 SSH Key 配置相关的选项,然后添加即可。