0.提交本地项目到gitlab初始化仓库
解释:本地项目建立和服务器端项目的关联关系
#初始化本地仓库
git init
#关联项目地址(最后表示项目地址)
git remote add origin git@gitlab.xxx.com:xxx/xxx.git
#查看 git 远程仓库的信息
git remote show origin
#拉取项目
git clone git@gitlab.xxx.com:xxx/xxx.git
#如果本地要推送远端,先拉下项目
git pull origin master
#移除缓存的用户信息
git config --system --unset credential.helper
解释:用于当前项目的用户名设置,后续代码的提交会展示提交人信息展示。
#先配置当前的用户和邮箱(全局就是把global换local,不建议使用)
git config --local user.name "xxx"
git config --local user.email "xxx@163.com"
#配置完检查下
git config --list --local
#添加所有文件至暂存区
git add .
#添加提交注释
git commit -m "Initial commit"
#推送到git
git push -u origin master
解释:这步就是要把项目推送到git上,先暂存本地再推送
2.Git代码提交
#先查看状态
git status
#提交到缓存区(建议不要使用git add. 除非你全部要提交)
git add
#推送代码到本地git库
git commit -m '注释'
#拉取远端代码(我这里是拉取最新的dev代码)
git pull origin dev
#推送到远端(如果本地分支和远端分支名字一样直接push)
git push origin 本地分支名:远端分支名
小结:idea界面化用多了,碰到问题就不会解决。所以都使用手动推送,先查看文件状态,再用add命令添加进缓存区,然后再提交到本地库,这里要注意提交完要拉取下你未来要合并的分支,避免分支落后,然后最后才是push。
2.Git代码写错分支,还未提交的情况(暂存需求处理紧急bug)
#将修改的代码暂存到stash,
git stash
#暂存内容并添加提示信息
git stash save "message"
解释:git stash会把所有未push的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录。
#切换到正确的分支
git checkout targetbranch
解释:用于切换分支,假如我的分支叫yeapt,这段代码就改为 git checkout yeapt
#查看整个暂存区
git stash list
#从stash中取出最近一个暂存代码(取出就会被移除)
git stash pop
#取出不会被移除
git stash apply
#取出指定一次的暂存代码
git stash apply stash@{2}
#清除所有暂存部分
git stash clear
#清空第一个队列内容
git stash drop stash@{0}
#最新保存的stash和当前母录的差异
git stash show
注意:在powershell的命令行里{}花括号,代表代码块执行标识符,这个命令会失效,直接替换idea的命令行为cmd
解释:用于把stash暂存区的代码取出,并将它移除出暂存区列表
小结:写代码前还是观察下分支是否正确,要不然还是比较麻烦的,完成上述操作后就可以进行正常的commit和push。个人感觉最常用的还是你在写一个需求,然后线上紧急bug插队了,那你只能停下手中的活儿去改bug,这个时候就可以暂存你的代码。
3.本地拉取不到最新的代码
git fetch --all
git reset --hard origin/dev
git pull origin:dev dev
解释:fetch先远程获取代码库,然后用reset将本地的状态回退到和远程的一样,最后重新拉取下代码。
小结:我这边检查的时候发现git里的origin的代码是最新的,但是local是缺失的。
4.本地分支关联远端分支
git checkout -b localBrach origin/dev
解释:localBrach表示将要创建的本地分支名字,origin/dev表示要关联的远端分支名字
git branch -d localBrach
小结:如果本地分支已存在,可以执行这个命令进行删除,删除前要切换到别的分支。
5.更新本地分支为最新代码
git pull
git merge origin/dev
git push
解释:pull表示拉取代码,merge合并分支,push提交代码
小结:如果本地分支不是最新代码,并且已经编写了代码,则使用这个命令更新分支。
6.合并多个提交
#查看近10次的提交
git log --oneline -10
#回退到指定版本
git reset --haed fce604f41
解释:10表示近多少次提交,要想退出查看提交状态,按Q即可。
#合并前5个提交
git rebase -i HEAD~5
#合并到指定提交
git rebase -i 0b26a0f775
解释:0b26a0f775表示提交的编码,回车后就是vim的编辑。规则:pick表示使用【commit】,s表示【使用commit,但合并到上一个commit中】。
本来squash的地方都是pick,我们改成squash就好了,编辑完成,esc,再:wq保存并退出即可。
#推送(有风险)
git push --force
小结:如果不慎提交了过多次无用代码,可以直接用这个方法进行合并。
7.分支落后处理
#拉取远端分支
git fetch
#和远端分支合并
git rebase origin/dev
#强制推送
git push -f
8.gitignore忽略文件问题
“/”开头表示整个目录;
星号“*”通配多个字符;
问号“?”通配单个字符;
*.log
xp.wlt
zh/
git rm -r --cached .
git add .
git commit -m '描述'
git push
小结:如果之前已经追踪的代码,要记得用上面的命令执行,要不然git ignore文件会不生效。
#react+springboot
/.idea/
target/
dist/
node_modules/
package-lock.json
常用指令
#拉取远程指定分支到本地指定分支
git pull origin <远程分支名>:<本地分支名>
#将本地分支关联远程同名分支
git push --set-upstream origin <本地分支名>
#更换关联的远端分支
git branch --set-upstream-to=origin/<远端分支名> <本地分支名>
#已有git仓库,本地代码推送异常时先执行命令再push
git pull origin master --allow-unrelated-histories
#在写忽略文件前被纳入版本管理的软件,用以下三个命令来消除但是要提交一次
git rm -r --cached .
git add .
git commit -m '移除在 .gitignore 创建之前被纳入版本管理的文件'
#从远程更新分支
git remote update origin --prune
#修改远端分支名称(本地分支重命名,删除远端旧名称分支,推送新名称分支到远端)
git branch -m oldName newName
git push origin :oldName
git push origin newName:newName
#创建新的本地分支并推送
git checkout -b 本地分支名 origin/远程分支名
git push origin 本地分支名:远程分支名
#强制推送
git push origin HEAD:强推分支名 --force
#回到指定版本(hard:不保留内容,soft:保留内容)
git reset --hard 提交的id
#修改远程仓库地址
git remote rm origin
git remote add origin [new-repo-url]
git push --set-upstream origin master