一. 新拉取远程仓库中的代码
- 本地新建文件夹
- 在该文件夹下执行如下命令,创建本地git仓库
git init - 连接远程仓库
git remote add origin http://host:port/xxxxx.git - 拉取远程master分支代码
git pull origin master - 查看本地分支
git branch - 查看本地及远程所有分支
git branch -a - 更新分支状态
git fetch - 拉取远程另外一个分支到本地
git checkout -b dev2 origin/dev2 - 重置远程仓库地址
git remote set-url origin http://host:port/…
二. git diff命令
- 直接输入git diff
查看尚未暂存的文件更新了哪些部分;
三. git stash命令
- git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
- git stash save ‘message’:备份工作区内容,同时添加备注信息。
- git stash save -a “messeag” :没有加 -a 这个option选项,代码开发可能是在原代码上进行修改的。而对于在项目里加入了代码新文件的开发来说,-a选项才会将新加入的代码文件同时放入暂存区。
- git stash apply: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。但是不会将该stash记录删除
- git stash drop: 把最近的一条stash记录删除。
- git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复,同时会删除这条stash记录,相当于git stash apply和git stash drop一起执行了。
- git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
- git stash clear: 清空Git栈,原来存储的所以stash的节点都消失了。
应用场景:
使用git的时候,我们往往使用branch解决任务切换问题,例如,我们往往会建一个自己的分支去修改和调试代码, 如果别人或者自己发现原有的分支上有个不得不修改的bug,我们往往会把完成一半的代码 commit提交到本地仓库,然后切换分支去修改bug,改好之后再切换回来。这样的话往往log上会有大量不必要的记录。其实如果我们不想提交完成一半或者不完善的代码,但是却不得不去修改一个紧急Bug,那么使用’git stash’就可以将你当前未提交到本地(和服务器)的代码推入到Git的栈中,这个时候stash命令就大有用处了,前提是我们的代码没有进行commit,哪怕你执行了add也没关系,我们先执行git stash命令,什么意思呢?意思就是把当前分支所有没有commit 的代码先暂存起来,这个时候你再执行git status你会发现当前分支很干净,几乎看不到任何改动,你的代码改动也看不见了,但其实是暂存起来了。执行git stash list你会发现此时暂存区已经有了一条记录。这个时候你可以切换会其他分支,赶紧把bug修复好,然后发布。之后一切都解决了,你再切换回来继续做你之前没做完的功能,但是之前的代码怎么还原呢?git stash apply你会发现你之前的代码全部又回来了,就好像一切都没发生过一样,紧接着你最好需要把暂存区的这次stash记录删除,执行:git stash drop就把最近一条的stash记录删除了,是不是很方便?其实还有更方便的,你可以使用:git stash pop来代替apply命令,pop跟apply的唯一区别就是pop不但会帮你把代码还原,还自动帮你把这条stash记录删除,省的自己再drop一次了,为了验证你可以紧接着执行git stash list命令来确认是不是已经没有记录了。而且我们可以多次将未提交的代码压入到栈中,当你多次使用’git stash’命令后,你的栈里将充满了未提交的代码,这时候你会对将哪个版本应用回来有些困惑,'git stash list’命令可以将当前的Git栈信息打印出来,你只需要将找到对应的版本号,例如使用’git stash apply stash@{1}'就可以将你指定版本号为stash@{1}的工作取出来,当你将所有的栈都应用回来的时候,可以使用’git stash clear’来将栈清空。
四. 撤销&回滚操作(git reset、git revert、tag回滚)
- git reset和git revert回滚方式,见博文:https://blog.csdn.net/asoar/article/details/84111841
- 更推荐的一篇博文:https://blog.csdn.net/yxlshk/article/details/79944535
- tag回滚:
(1)切换分支到master
git checkout master
(2)查看标签tag
$ git tag
qstesttag1
qstesttag2
qstesttag3
(3)查看某个标签tag的详情
$ git show qstesttag1
commit bb0ee590b0d05b8ebb0ef04f44fc2f151ea3ba73
(4)通过commit id回退
git reset --hard bb0ee590b0d05b8ebb0ef04f44fc2f151ea3ba73
(5)此时需要强制推送到远程仓库中(注意需要暂时去掉gitlab中master分支的protected,否则push会失败)(此命令一定谨慎使用!)
git push -f origin master
(6)push成功后,gitlab中记住修改回protected。
五. 其它操作命令
- 本地创建分支
git checkout -b 新分支名
执行该指令后,会在本地创建一个新分支,该分支是从当前分支上检出的,所以所有文件内容都和当前分支一模一样
2. 删除本地分支(先切换到别的分支上)
git branch -d 要删除的本地分支名
git branch -D 要删除的本地分支名(强制删除)
- 删除远程分支(有必要的情况下执行)
git push origin --delete 远程分支名
- 查看git的提交记录
git log
- 本地分支和远程分支建立联系 (使用git branch -vv 可以查看本地分支和远程分支的关联关系)
git branch --set-upstream-to=origin/远程分支的名字 本地分支的名字
- 查看git版本号
git tag
- 创建tag版本(在commit之后,push之前执行)
git tag 1.0.2
默认情况下,git push 并不会把标签传送到远端服务器上,只有通过显式命令才能分享标签到远端仓库。其命令格式如同推送分支,运行 git push origin [tagname] 即可
1)push单个标签到远程分支
git push origin v2019
2)push 本地所有的标签到远程分支
git push origin --tags
- 拉取本地不存在的远程分支到本地,并切换
git checkout -b dev(本地分支名称) origin/dev(远程分支名称)