常用命令
整体思路:先把文件提交至本地仓库暂存,然后再推送到远程仓库。
每个想要提交的文件都要先有.git文件才能与远程仓库进行连接,所以,要先初始化
git init
然后关联远程仓库
git remote add origin <远程仓库地址>
连接上以后可以查看当前远程仓库地址
git remote -v
也可以移除当前地址
git remote remove origin
开发时,会有多个开发人员同时提交,为了区别身份,可以设置自己的user.name和user.email来区别不同的人
git config --global user.name "xxx"
git config --global user.email "xxx"
查看自己的用户名和邮箱地址
git config user.name
git config user.email
每次修改文件,git就会提示有文件改动
git status
git status
查看查看仓库当前状态后,如果此时要提交添加的文件到本地仓库 就要
git add <某个文件名字> / git add .
git commit -m <message> //message为对文件改动的简单描述
推送最新修改
git push -u origin master --第一次推送master分支的所有内容
git push 或 git push origin master
显示提交日志
git log 显示所有提交过的版本信息,但是内容太过繁琐,并且看不出被删除的commitid
git reflog 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
查看文件具体修改的内容
git diff <filename>
回退到前3次提交之前
git reset --hard HEAD~3 以此类推,回退到n次提交之前
版本号 回退到指定版本
git reset --hard
推送至其他
git branch --查看分支
git branch [查看本地分支]
git branch --all [查看所有分支]
git branch <name> [创建分支]
git checkout <name> [切换分支]
git push origin <name>:<name> 发布分支
git push origin :<name> 删除远程分支
git branch -d <name> 删除本地分支
备份
git stash 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git stash pop 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
git reset --soft HEAD^ 撤回commit操作 HEAD^的意思是上一个版本
git commit --amend commit注释写错了,只是想改一下注释
分支的使用
1、查看分支
$ git branch --all
* master
remotes/origin/master
2、创建本地分支
$ git branch dev 本地分支可以不同步到远程仓库,我们可以在dev开发,然后merge到master,使用master同步代码,当然也可以同步
- 发布dev分支
发布dev分支指的是同步dev分支的代码到远程服务器
$ git push origin dev:dev
$ git branch --all
dev
* master
remotes/origin/dev
remotes/origin/master
这样远程仓库也有一个dev分支了
- 在dev分支开发代码
切换到dev分支进行开发
$ git checkout dev
Switched to branch 'dev'
$ git branch
* dev
master
开发代码之后,我们有两个选择
第一个:如果功能开发完成了,可以合并主分支
git checkout master # 切换到主分支
git merge dev # 把dev分支的更改和master合并
git push # 提交主分支代码远程
git checkout dev # 切换到dev远程分支
git push # 提交dev分支到远程
第二个:如果功能没有完成,可以直接推送
git push # 提交到dev远程分支
注意:在分支切换之前最好先commit全部的改变,除非你真的知道自己在做什么
- 删除分支
git push origin :dev # 删除远程dev分支,危险命令哦
# 下面两条是删除本地分支
git checkout master # 切换到master分支
git branch -d dev # 删除本地dev分支
7.在远程仓库新建项目没配置.gitignore文件,导致node_modules文件上传到了git仓库
下面是解决方法,可以删除仓库已上传的node_modules文件:
git rm -r --cached node_modules
git commit -m 'delete node_modules file'
git push origin master
在.gitignore文件配置,使后面的操作不会将node_modules提交到git仓库。
附录:gitignore文件-不提交node_modules文件
// .gitignore文件
node_modules/
dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
*.lock
yarn.lock
package.lock.json
gitignore的配置语法:
- 以斜杠“/”开头表示目录;
- 以星号“*”通配多个字符;
- 以问号“?”通配单个字符
- 以方括号“[]”包含单个字符的匹配列表;
- 以叹号“!”表示不忽略(跟踪)匹配到的文件或目录
git 设置代理
查看当前代理
git config --global --get http.proxy
git config --global --get https.proxy
设置当前代理
git config --global http.proxy http://xxxx
git config --global https.proxy http://xxxx
取消当前代理
git config --unset http.proxy
取消全局代理
git config --global --unset http.proxy
设置socks5代理
git config http.proxy socks5:xxxx
Q:git下载东西老超时,试试设置全局的代理
git 本地分支要与远程仓库的分支对应,以免出现问题
记Git报错
1:refusing to merge unrelated histories 拒绝合并不相关的历史
出现这个问题的最主要原因还是在于本地仓库和远程仓库实际上是独立的两个仓库。假如我之前是直接clone的方式在本地建立起远程github仓库的克隆本地仓库就不会有这问题了。
查阅了一下资料,发现可以在pull命令后紧接着使用--allow-unrelated-history
选项来解决问题(该选项可以合并两个独立启动仓库的历史)。
git pull origin master --allow-unrelated-histories
标签的使用(Tag)
1、创建标签
git tag <tagName> //创建本地tag
git push origin <tagName> //推送到远程仓库
若存在很多未推送的本地标签,你想一次全部推送的话:
git push origin --tags
2、查看标签
查看本地某个 tag 的详细信息:
git show <tagName>
查看本地所有 tag:
git tag 或者 git tag -l
查看远程所有 tag:
git ls-remote --tags origin
3、删除标签
本地 tag 的删除:
git tag -d <tagName>
远程 tag 的删除:
git push origin :<tagName>
4、检出标签
git checkout -b <branchName> <tagName>
因为 tag 本身指向的就是一个 commit,所以和根据commit id 检出分支是一个道理。
其它
命令git tag -a <tagname> -m "XXX..." 可以指定标签信息。
命令git tag -a v0.1.0 -m "release 0.1.0 version" 创建附注标签。
命令git checkout [tagname] 切换标签。