git学习使用和命令总结
1.克隆仓库
https git clone与ssh git clone之间的区别
- https用443端口,可以对repo根据权限进行读写,只要有账号密码就可进行操作。
- ssh则用的是22端口,也可以对repo根据权限进行读写,但是需要SSH Keys授权,这个key是通过ssh key生成器生成的,然后放在github上,作为授权的证据,这样的话就不需要用户名和密码进行授权了。
git - 生成 ssh 公钥
通过执行ssh-keygen -o命令来创建公钥,创建完成后使用cat命令查看公钥:
cat ~/.ssh/id_rsa.pub,如下图所示:
2.本地项目git初始化并提交远程仓库
- 初始化本地仓库
git init
- 添加文件到版本控制
git add .
- 提交文件
git commit -m “first commit”
- 添加远程仓库地址到本地仓库
git remote add origin {远程仓库地址}
- push到远程仓库
git push -u origin master {远程仓库地址}
其中远程仓库地址可以绑定多个,使用命令如下:
查看远程仓库地址列表:git remote -v
添加远程仓库地址:git remote add {远程仓库地址} {别名}
移除远程仓库地址:git remote remove {别名}
重命名远程仓库地址:git remote rename {原别名} {新别名}
可以使用git push {别名} 指定提交到哪个远程仓库,不指定默认使用origin
3.git创建新分支并提交远程仓库
- 从已有的分支创建新的分支(如从master分支),创建一个dev分支
git checkout -b dev
- 代码提交
git add .&&git commit -m “first commit dev”
- push到远程仓库
git push --set-upstream origin dev
补充:–set-upstream这个参数的作用是将当前默认提交的远程仓库名和分支名绑定到后面的orgin和dev上,这样我们以后继续push代码时,只需要执行git push就可以了,不用再指定远程仓库名和分支名
4.常用git命令
- 查看本地分支
git branch
- 查看远程分支
git branch -r或git branch -a
- 删除本地分支
git branch -d {分支名}
- 删除远程分支
git push origin --delete {分支名}
- 切换分支
git checkout {分支名}或者gco {分支名}
- 查看提交日志
git log
- 恢复到某次提交
git reset --hard HEAD^ 回退到上个版本
git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前
git reset --hard {commit_id} 退到/进到 指定commit的id
- 提交回滚
git revert HEAD 撤销倒数第一次提交
git revert HEAD^ 撤销倒数第二次提交
git revert HEAD~2 撤销倒数第三次提交
git revert {commit_id} 撤销指定的版本
5.git提交代码步骤
每次提交代码前,先git pull一下,在本地解决冲突,以免提交代码时发生冲突,被其它人拉取到,如果不小心拉取到了冲突的代码,可以执行命令git reset --hard回到拉取之前的状态。
解决冲突可以使用IDE自带的版本控制工具,或者Sourcetree之类的可视化界面工具,可以选择接受你的版本或者别人的版本,也可以综合两者。
冲突一定要解决后再提交,切忌使用git push -f进行强制提交,进行代码覆盖。
6.git merge和git rebase的区别
git merge:将两个分支,合并提交为一个新提交,并且新提交有两个parent。
git rebase:会取消分支中的每个提交,并把他们临时存放,然后把当前分支更新到最新的origin分支,最后再把所有提交应用到分支上。
如果开发一个新功能,在本地进行了多次提交,可以使用git rebase -i head~提交次数,合并成一次,如下图所示:
保留第一个pick,后面的pick改成s,融合成一次提交,保留一个注释后保存退出。
在变基过程中如果遇到什么问题,可以使用命令git rebase --abort随时停止变基,变基过程遇到冲突解决后,使用git add .将文件添加到版本控制,然后执行git rebase --continue继续变基,直到完成。
在某一个分支进行开发后合并到主分支,为了避免对他人造成冲突,先在当前分支rebase一下主分支,然后再去主分支上merge过去就不会有冲突了。
7.git忽略文件.gitignore
在项目中我们经常会看到有一个.gitignore的文件,可以配置用于忽略哪些文件不添加到git的版本控制当中,如下图所示:
8.其它
在git命令使用熟练之后,有一些使用的小技巧
- git命令连用
git add .&&git commit -m “first commit”&&git push
- git命令简写
gco 等同于 git checkout
没有commit时,gp等同于git pull,有commit时,gp等同于git push