git 一般用于开源项目,并且可以把开源项目发布到github中
git -> github/码云(gitee)
本地仓库 远程仓库
1. 安装git
2. 测试
> git --version
3. 使用
1) 初始化本地仓库
> git init
当前目录就成为了git的本地仓库,在当前目录中会产生一个隐藏目录 git
2) 查看状态
> git status
3) 将新建文件、修改添加到git中
> git add *
4) 将改变提交为一个版本
> git commit -m '[licy]初始化版本'
请你告诉git你是谁
> git config --global user.name="pluslicy"
> git config --global user.email="licy@briup.com"
5) 查看历史版本
> git log
> git reflog
6) 时光穿梭
> git reset --hard 74ca8
7) .gitignore
让git不去管理指定的文件或目录
src
node_modules 第三方依赖,git
package.json
8) 本地仓库与远程仓库绑定
1. 在github/gitee中新建远程仓库
public 任何人都可以查看代码,协作者才可以提交
private 只有自己和协作者才可以查看,提交代码
2. 绑定
> git remote add origin https://github.com/pluslicy/git_web1902.git
3. 更新,将远程的主分支值更新到本地
> git pull origin master
4. 推送,将本地的仓库推送到远程
> git push origin master
需要输入用户名和密码
9) 多人协作
1. 添加协作者
2. 协作者同意后协作者就可以进行提交
1) 先将远程仓库克隆到本地(下载github上的文件)
> git clone https://github.com/pluslicy/git_web1902.git
2) 操作
先更新,再提交
> git pull origin master
> git push origin master
10) 注意:
提交之前先更新
尽量不要多人同时操作一个文件
空目录不会直接提交
git本地仓库远程地址更改
1、如果远程地址错误,fatal:remote origin already exists
先输入 git remote rm origin
,在输入git remote add origin 地址
2、将代码由本地仓库上传到github远程仓库
1)获取远程仓库与本地同步合并(如果远程库不为空必须做这一步,否则后面的提交会失败)
git pull --rebase origin master
//不加这句可能报错,原因是 github 中的 README.md 文件不在本地仓库中
//可以通过该命令进行代码合并
2)把当前分支master推送到远程
git push -u origin master
git中删除指定文件
1、拉取远程仓库的文件到本地git clone xxx
2、git的删除命令为rm,可以通过如下命令获取rm相关说明git rm -h
$ git rm -h
用法:git rm [<选项>] [--] <文件>...
-n, --dry-run 演习
-q, --quiet 不列出删除的文件
--cached 只从索引区删除
-f, --force 忽略文件更新状态检查
-r 允许递归删除
--ignore-unmatch 即使没有匹配,也以零状态退出
在本地文件夹中删除不需要的文件
通过上面操作,已经将远程仓库的文件下载到本地文件夹,删除文件后,通过以下命令查看文件状态
3、提交修改后的文件到远程仓库
git add *
git commit -m '提交信息'
git push origin master
Git创建Develop分支的命令:
git checkout -b develop master
将Develop分支发布到Master分支的命令:
# 切换到Master分支
git checkout master
# 对Develop分支进行合并
git merge --no-ff develop
4、分支
# 列出所有本地分支
$ git branch
# 列出所有远程分支
$ git branch -r
# 列出所有本地分支和远程分支
$ git branch -a
# 新建一个分支,但依然停留在当前分支
$ git branch [branch-name]
# 新建一个分支,并切换到该分支
$ git checkout -b [branch]
# 新建一个分支,指向指定commit
$ git branch [branch] [commit]
# 新建一个分支,与指定的远程分支建立追踪关系
$ git branch --track [branch] [remote-branch]
# 切换到指定分支,并更新工作区
$ git checkout [branch-name]
# 切换到上一个分支
$ git checkout -
# 建立追踪关系,在现有分支与指定的远程分支之间
$ git branch --set-upstream [branch] [remote-branch]
# 合并指定分支到当前分支
$ git merge [branch]
# 选择一个commit,合并进当前分支
$ git cherry-pick [commit]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
5、标签
# 列出所有tag
$ git tag
# 新建一个tag在当前commit
$ git tag [tag]
# 新建一个tag在指定commit
$ git tag [tag] [commit]
# 删除本地tag
$ git tag -d [tag]
# 删除远程tag
$ git push origin :refs/tags/[tagName]
# 查看tag信息
$ git show [tag]
# 提交指定tag
$ git push [remote] [tag]
# 提交所有tag
$ git push [remote] --tags
# 新建一个分支,指向某个tag
$ git checkout -b [branch] [tag]
6、配置https和ssh推送时保存用户名和密码
# https提交保存用户名和密码
$ git config --global credential.helper store
# 生成公钥私钥,将公钥配置到GitHub,ssh提交就可以免输入用户名密码
# 三次回车即可生成 ssh key
$ ssh-keygen -t rsa
# 查看已生成的公钥
$ cat ~/.ssh/id_rsa.pub
7、撤销
# 恢复暂存区的指定文件到工作区
$ git checkout [file]
# 恢复某个commit的指定文件到暂存区和工作区
$ git checkout [commit] [file]
# 恢复暂存区的所有文件到工作区
$ git checkout .
# 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
$ git reset [file]
# 重置暂存区与工作区,与上一次commit保持一致
$ git reset --hard
# 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
$ git reset [commit]
# 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
$ git reset --hard [commit]
# 重置当前HEAD为指定commit,但保持暂存区和工作区不变
$ git reset --keep [commit]
# 新建一个commit,用来撤销指定commit
# 后者的所有变化都将被前者抵消,并且应用到当前分支
$ git revert [commit]
# 暂时将未提交的变化移除,稍后再移入
$ git stash
$ git stash pop
使用git时,出现的问题
问题一: fatal: unable to access ‘https://github.com/xxx’: OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
回答:
git config --global --add remote.origin.proxy “127.0.0.1:(proxy http port number)”