git功能强大无容置疑,建议掌握git命令,因为不同的工单位使用的git 客户端都不一样,然而git命令亘古不变,不管UI工具怎么变,掌握命令,走遍天下。
一, 创建分支
- 定位至主分支(只有主分支可忽略此步):
git checkout master
- 创建并切换到新分支:
git checkout -b newbranch
注:-b 不要遗漏了。git branch
可以查看到刚创建的分支,但当前分支是在本地。 - 把工作区所有文件变化存在本地暂存区:
git add .
- 提交至本地仓库:
git commit -m "init newbranch"
- 推送到远程库:
git push origin newbranch
.结束
二,分支合并
(一),dev合到master
- 确保分支在dev上:
git checkout dev
。
注:checkout 后面没有-b,这里是切换分支,不是创建分支。 - 更新并合并到本地dev分支:
git pull
- 切换到master分支:
git checkout master
- 合并:
git merge dev
10.推送至远程:git push -u origin master
(二),master合并到dev
- 确保分支在master上:
git checkout master
。 - 更新并合并到本地master分支:
git pull
- 切换到dev分支:
git checkout dev
- 合并:
git merge master
- 推送至远程:
git push -u origin dev
三,分支修改相关
- 刷新分支
git remote update origin --prune
- 查看所有分去
git branch -a
- 查看远程分支
git branch -r
- 查看本地分支所关联的远程分支
git branch -vv
- 修改本地分支名称
git branch -m old_branch_name new_branch_name
- 删除远程旧分支
git push origin :old_branch
注:":"紧跟着old_branch - 将新分支推送到远程仓库
git push --set-upstream origin new_branch_name
四,新工程推送至远程
git init
: 进入项目文件夹,通过命令 git init 把这个目录变成git可以管理的仓库git add .
: 把文件添加到版本库中,使用命令git add .
添加到暂存区里面去,不要忘记后面的小数点“.”,意为添加 当前目录 下的所有文件 。git commit -m 'init commit'
:把文件提交到仓库,引号内为提交说明。git remote add origin
远程库地址: 关联到远程库 。例如:git remote add origin https://github.com/myfirst/abc.git
git checkout -b dev
(见一): 新建一个本地分支,这里如果直接与master打交道,这一步可以省 。git pull --rebase origin dev
: 获取远程库与本地同步合并(如果远程库不为空必须做这一步,否则后面的提交会失败),此步取决于第5步,第5步没有,则不用。git push -u origin dev
: 把本地库的内容推送到远程,使用git push
命令,实际上是把当前分支dev推送到远程。执行此命令后会要求输入用户名、密码,验证通过后即开始上传。若第5步没有,则直接git push -u 。
五,撤销(reset)操作
经常操作命令时,会有一些误操作。例如不小心将没必要的文件add到暂存区,执行了pull命令发现需要返回到上一个版本等等。这些情况就需要 reset 。在细讲之前,务必会使用git status
查看本地当前分支的状态,此命令可以显示本地当前分支的任何操作(增删改)。
- git pull 撤销
一般习惯每天都会拉一下远程的代码,但有时当前版本还有些其他未完成的工作,以下是完整的pull和reset步骤:
a. 查看远程库是否有更新,执行命令:git fetch
, 发现有更新,如下图所示:
b. 执行拉取操作,git pull
c. 这时发现拉取错了,不应该拉取,执行命令:git reflog
,查看所有的head号:
d. 发现刚才本地处于HEAD@{1},执行命令:git reset --hard 2d20346
- git 修改撤销
当前内容修改了,但还没有add.
如果撤销某个一个文件的修改:git checkout filename
如果撤销所有文件的修改:git checkout .
- git add 撤销
当前修改的内容add了,但还没有commit
如果撤销某个一个文件的add:git reset head filename
如果撤销所有文件的add:git reset head
- git commit 撤销
当前修改的内容commit了,但还没有push
不删除工作空间改动代码,撤销commit,并且撤销git add . 操作:git reset --mixed head^
不删除工作空间改动代码,撤销commit,不撤销git add . :git reset --soft head^
删除工作空间改动代码,撤销commit,撤销git add . :git reset --hard head^
注: HEAD^的意思是上一个版本,也可以写成HEAD~ 1,如果你进行了2次commit,想都撤回,可以使用HEAD~2
六,stash操作
- 存储
git stash save "save message"
注 : 执行存储时,最好添加备注,方便查找。 - 查看存储
git stash list
- 查看改动
git stash show
注 :显示做了哪些改动,默认show第一个存储,从0
开始,如果要显示其他存贮,后面加stash@{num},比如第二个git stash show stash@{1}
。另外一种用法是使用 -p 命令。例如:git stash show -p
, 显示第一个存储的改动;如果想显示其他存存储,命令:git stash show stash@{num} -p
,比如第二个:git stash show stash@{1} -p
- 应用存储
git stash apply
注:使用apply时不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{num}
, 比如第二个:git stash apply stash@{1}
- 恢复缓存
git stash pop
注:使用pop时会将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,git stash pop stash@{num}
,比如应用并删除第二个:git stash pop stash@{1}
- 丢弃存储
git stash drop stash@{num}
删除所有存储
git stash clear
未完待续。。。