1 创建git项目
远程仓库创建项目
gitlib/github 创建项目,本地通过 http/ssh 两种地址拉取代码 + git clone http地址 提供本人邮箱给仓库管理员,创建账号并添加相应权限 + ssh clone ssh地址 + mac 生成ssh 使用ssh拉取代码 + win 生成ssh 使用ssh拉取代码
将本地已有项目推送至远端仓库
完整流程:
$ cd yourproject
$ git init
$ git remote add origin gitUrl地址
$ git add .
$ git commit -m 'init project'
$ git push -u origin master
上述操作解析
进入项目
$ cd yourproject
(关键步骤1)=> 初始化git项目
$ git init
(关键步骤2)=>远端仓库建立连接
$ git remote add origin gitUrl地址
$ git add .
$ git commit -m 'init peoject'
(关键步骤3)=>首次提交到远端仓库
首次提交远端仓库需在 origin 前边添加 -u
$ git push -u origin master
如果此步骤提交报错 根据终端提示添加 -f 参数 即:
$ git push -u origin master -f
扩展部分-一个本地项目关联多个远程仓库
多次、分别提交各自远端仓库
远程地址A:'giturlA' //默认 'origin'
远程地址B:'giturlB' //默认 'originB' 这里的名字 'originB'
(关键步骤2)=>操作追加远程地址B
$ git remote add origin giturlA
$ git remote add originB giturlB
$ git remote -v
查看本地对应的远程仓库
(关键步骤3)=>操作追加远程推送B
$ git push origin master:master
$ git push originB master:master
删除远程关联
取消本地目录下关联的远程库:
$ git remote remove origin // origin默认名字,根据自己仓库情况更改
2 拉取/提交代码(团队合作,uat分支/sit测试分支/同事分支/bug分支=>多分支情况下)
- 拉取代码(只拉取自己的分支)
$ git pull origin your_branch_name
- 提交代码 (只推送自己的分支)
$ git push origin your_branch_name
3 git 分支命令
查看本地分支
$ git branch
终端显示:
* br-2.1.2.2
master
查看远端分支
$ git branch -r
终端显示:
* br-2.1.2.2
master
remotes/origin/HEAD -> origin/master
remotes/origin/br-2.1.2.1
remotes/origin/br-2.1.2.2
remotes/origin/br-2.1.3
remotes/origin/master
查看所有分支
$ git branch -a
终端显示:
* br-2.1.2.2
master
remotes/origin/HEAD -> origin/master
remotes/origin/br-2.1.2.1
remotes/origin/br-2.1.2.2
remotes/origin/br-2.1.3
remotes/origin/master
切换分支
$ git branch develop origin/develop
$ git checkout -b develop origin/develop
本地创建分支并于远端关联
- 步骤1 本地创建分支
$ git checkout -b new-branch
查看一下现在的分支状态:
$ git branch
终端显示:
* new-branch
master
release
星号(*)表示当前所在分支。现在的状态是成功创建的新的分支并且已经切换到新分支上。
- 步骤2 本地分支推送至远程分支
$ git push origin 本地分支名:远程分支名
这里以 new-branch 为例
$ git push origin new-branch:new-branch
- 步骤3 将本地与远程分支关联
$ git branch --set-upstream-to=origin/remote_branch your_branch
remote_branch 远程分支名 | your_branch 本地分支名
比如dev关联:
$ git branch --set-upstream-to=origin/dev dev
查看本地分支与远程分支连接状态
$ git branch -vv
默认分支指向
origin/HEAD -> origin/master
可删除 git remote set-head origin -d
删除远程分支
$ git push origin :new-branch
or
$ git push origin --delete new-branch
删除本地分支
$ git branch -D new-branch
github/gitlab创建了分支本地看不到,解决方案
$ git checkout master //首先切到master分支
$ git pull //同步下master // 或者 git fetch --all
$ git branch -a //查看所有本地查库分支
git删除远程分支,本地仍可以看到
$ git branch -a
- 命令可以查看所有本地分支和远程分支,发现很多在远程仓库已经删除的分支在本地依然可以看到。
$ git remote show origin
-
可以查看remote地址,远程分支,还有本地分支与之相对应关系等信息。
此时我们可以看到哪些远程仓库已经不存在的分支
$ git remote prune origin
- 这样就能成功在本地删除远程不存在的分支
4 撤回操作
撤回 git add . 操作
$ git reset HEAD //上一次add 里面的全部撤销了
单文件操作
$ git reset HEAD XXX/XXX/XXX.js // 对某个文件进行撤销
撤回git commit 操作
$ git reset --mixed HEAD^ // 撤销了commit,写的代码仍然保留(常用)
$ git reset --hard sdlfkjsdlfwe
注意:
HEAD^ 的意思是上一个版本,也可以写成HEAD~1
如果你进行了2次commit,想都撤回,可以使用HEAD~2
参数说明:
--mixed
意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
--soft
不删除工作空间改动代码,撤销commit,不撤销git add .
--hard
删除工作空间改动代码,撤销commit,撤销git add .
'注意完成这个操作后,就恢复到了撤退版本的commit状态,之后的commit记录也会消失'
撤回git push 操作
$ git revert HEAD^
$ git revert sdlfkjsdlfwe
新增一条新的commit,它和倒数第三次提交的(最后正确提交的一次)相同,
与倒数第一次('提交错误那次操作相反,抵消错误的那次')达到撤销效果
'revert 与 reset 最主要的区别:
revert 只是被「反转」了,并没有在历史中消失掉,你的历史中会存在两条commit:
(一个原始 commit ,一个对它的反转 commit。)'
git reset会删除commit的记录
5 暂存使用
开发需求时,突然来一个紧急BUG修复任务,使用暂存:
添加缓存栈:git stash
查看缓存栈:git stash list
推出缓存栈:git stash pop
取出特定缓存内容:git stash apply stash@{1}
'未被add. 添加的文件使用stash: git stash -u'
'注意':没有被 track 的文件(即从来没有被 add 过的文件不会被 stash 起来,
因为 Git 会忽略它们。如果想把这些文件也一起 stash,
可以加上 -u 参数,它是 --include-untracked 的简写。就像这样:git stash -u
6 git修改注释
$ git commit --amend
// commit注释写错了,只是想改一下注释
此时会进入默认vim编辑器,修改注释完毕后保存就好了。
7 git 用户名密码
// 设置查看 git 用户名和邮箱
git config list
git config user.name --查看git当前配置用户名
git config user.email --查看git当前配置的邮箱
git config user.name 名称 设置用户名
git config user.email 邮箱 设置git邮箱
全局命令设置
git config --global user.name 你的目标用户名;
git config --global user.email 你的目标邮箱名;
在项目中也可以查看这些信息
vi ~/.gitconfig;
8 git 提交规范
这里只列举我常用的提交格式类型
feat:新功能(feature)
fix:修补bug
docs:文档(documentation)
style:格式(不影响代码运行的变动)
refactor:重构(即不是新增功能,也不是修改bug的代码变动)
test:增加测试
chore:其他修改,比如构建过程或辅助工具的变动
持续更新 TODO...