持续更新中。。。
1.Git是作为第三方应用代码托管平台,提供付费和免费两种服务
2.Git常用命令
2.1使用Git前准备 需要配置的用户名和密码
git config --global user.name "user.name"
git config --global user.email "user.email"
git config --global --unset user.name "username" #移除用户
git config --global --unset user.email "email" #移除邮箱
eg:
user.name=username #账户号
user.email=xxxxx #密码
git config -l 查看当前电脑配置的用户信息``
2.2 clone一个远程库
1).git clone URL
2).查看Git地址 git remote -v
3).替换Git地址 git remote set-url origin URL
库的URL地址一般有两种形式 SSH 和 HTTPS
HTTPS:不管是谁,拿到url随便clone,但是在push的时候需要验证用户名和密码;
SSH:clone的项目你必须是拥有者或者管理员,而且需要在clone前添加SSH Key。SSH 在push的时候,是不需要输入用户名的,如果配置SSH key的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的。
创建SSH Key
$ssh-keygen -t rsa -C "${YourEmail}" # "-t rsa"表示使用密钥的加密类型,还可以为dsa;-C设置注释文字,比如你的邮箱“YourEmail”,不一定要是github注册邮箱
敲入ls命令可以看到ssh-keygen在~/.ssh目录下生成的public/private key pair,其中id_rsa为密钥对中的私钥,需妥善保管;id_rsa.pub为密钥对中的公钥,可任意公开。
RSA是一种支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的。DSA(Digital Signature Algorithm,数字签名算法)是一种标准的DSS(数字签名标准)
通过cat命令可以查看id_rsa.pub内容然后在git账户下添加新的SSHKey
注意:添加时key添加id_rsa.pubz中的内容
参考:
1.http://blog.csdn.net/phunxm/article/details/45083335
2.http://www.tuicool.com/articles/mEvaq2
使用Mac 生成ssh key 的流程
1).查看本地是否存在 ~/.ssh/路径
如果不存在 则需要创建 mkdir ~/.ssh
2).如果文件路径存在 则查看 id_rsa(私钥) id_rsa.pub(公钥) 是否成对出现 如是 则直接进入下一步
创建ssh key
ssh-keygen -t rsa -C "15560028009@163.com"
之后输入密码 一般推荐滤过
注:
ssh-keygen命令用于为“ssh”生成、管理和转换认证密钥,它支持RSA和DSA两种认证密钥。
-b:指定密钥长度;
-e:读取openssh的私钥或者公钥文件;
-C:添加注释;
-f:指定用来保存密钥的文件名;
-i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;
-l:显示公钥文件的指纹数据;
-P:提供(旧)密语;
-q:静默模式;
-t:指定要创建的密钥类型。
3).添加SSH key 将生成的公钥到相应的库目录### ## ###下
cat ~/.ssh/id_rsa.pub
2.3 添加忽略文件 .ignore
创建库的时候 最好提前添加的配置文件(不然协作开发后边提交代码会遇到很多问题)
1.首先在文件夹目录下 创建 .ignore 文件 vim .ignore / touch .ignore
2.常见的文件命令
参照:
[ignore常见忽略文件]([ignore参考文件](https://github.com/github/gitignore/blob/master/Objective-C.gitignore))
2.4 Git查看本地文件常用命令
1.)查看本地状态 git status
2.) 查看本地分支 git branch
3.) 查看远程分支 git branch -a
4.) 查看本地某一个文件的更改 git diff -HEAD 文件名
创建分支
git branch new branch
git checkout -b new branch 创建并切换到新分支
git push origin new branch 将本地新创建的分支推送到远程 同步创建新分支
删除分支
git branch -d branch
2.5 版本管理
每次提交先stash,pull,stashpop 然后再commit,push
添加更改
git add . 添加全部的修改
git add -f 添加修改的文件
git log 显示提交的日志
注:
git add 的几种参数区别:
git add -A 保存所有的修改
git add . 保存新的添加和修改,但是不包括删除
git add -u 保存修改和删除,但是不包括新建文件。
上边的说法有待确认,git add -A 和 git add .测试之后是相同的效果 都是保存所有的修改
如果只想提交某个文件,可以使用git add 路径/文件名 或者 git add 路径/
git checkout filename 该文件回退到上一个版本
git checkout branch 切换分支
git checkout commit_id 回退到commit_id提交版本 原来的提交并没有被还原 这时branch 提示 HEAD detached at xxxx
版本回滚的方法:
1.如果提交的修改没有提交到暂存区
git checkout .
git checkout filepath
2.已经提交到版本库回滚到到某个版本
git reflog 显示项目全部操作的日志
git reset --hard commit_id 强制回滚到某一版本
git push -f branch 强制提交到远程
用上方法 log 日志也会被还原
注:log和reflog的区别
log 提交的日志
rflog 本地操作日志
撤销/重置部分修改
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库
如果没有提交工作区 可以使用git checkout .撤销所有的更改
合并分支
git merge branch1 将分支branch1合并到当前分支
git rebase
merge合并的策略:
解决(Resolve)
递归(Recursive)
章鱼(Octopus)
我们的(Ours)
子树(Subtree)
参考:
状态:Untracked
工作区(workspace) 和 暂存区(stage)
通过git add 将所有的修改添加到暂存区
git commit 将暂存区的修改添加到工作区
git add -i 进入交互式shell模式
1: status 2: update 3: revert(恢复) 4: add untracked
5: patch(补丁:针对一个文件上传部分修改) 6: diff(区别) 7: quit 8: help
Fast-Forward 模式
--no-ff
[git-merge完全解析](https://www.jianshu.com/p/58a166f24c81)
当对提交的commit 不满意 需要重新编辑的时候 可以尝试该命令
git commit --amend
git log --oneline 显示提交日志 且每次提交都一行显示
git patch
git tag
#如果已经提交到远程仓库
git revert 撤销 某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销
作为一次最新的提交
* git revert HEAD 撤销前一次 commit
* git revert HEAD^ 撤销前前一次 commit
* git revert commit (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤销指定的版本,撤销也会作为一次提交进行保存。
git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容
git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。
git revert -m xxx commit_id
git reset/git reset --mixed commit_id 默认的方式 回退之前的版本 并保留之前的改动
git reset -–soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
git reset -–hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容Git进阶
git diff 查看版本的改动
git diff HEAD 查看当前版本的改动
git diff HEAD^ 相对上一个版本的改动
git diff fileName 查看file相对当前版本的改动
git diff HEAD fileName 同上
另一种写法 git diff HEAD~n fileName
当版本没有改动 还可查看两个版本改动的
网友评论