Git 分布式版本控制工具
安装
- 官网
常用命令
-
设置用户签名
git config --global user.name Sheep 用户 git config --global user.email 2501820747@qq.com 邮箱 // 第一次安装git必须设置 不然提交代码会报错
重复报错
$ git config --global --replace-all user.email “输入你的邮箱”
$ git config --global --replace-all user.name “输入你的用户名” -
初始化本地库
- 新建一个文件夹 然后进入文件夹 右键使用gitBase
- 输入以下代码初始化本地库
git-init
-
创建文件并进入编辑
vim hello.txt
-
查看文件
cat hello.txt
-
修改文件后退出
:wq
-
删除vim的编辑文件
rm -rf .a.txt.swp(文件名)
-
在本地仓库删除指定文件
gitrm 文件名名称
-
在本地仓库删除指定文件夹
gitrm -r 文件夹/
-
强制移除文件夹
git rm -f --cached user2/git-demo(文件夹)
-
复制/粘贴
ctrl + ins shift + ins
-
查看本地库
git status
-
添加暂存区
git add hello.txt
-
从暂存区删除文件
git rm --cached hello.txt // 工作区还是存在的
-
提交到本地库
git commit -m "版本信息" 文件 // git commit -m "1.0" hello.txt
-
查看精简版版本信息
git reflog
-
查看版本详细信息
git log
-
版本穿梭(回退/更新到指定版本)
git reset --hard 8754d43(版本号)
Git分支
查看分支
-
git branch -v
分支创建
-
git branch 分支名
修改分支
切换分支
-
git checkout 分支名
分支转化
分支合并
-
git merge 分支名 // 在当前分支上合并另一个分支名 另一个分支的修改应用到当前分支上 // 合并只会修改当前分支的内容 // 强制合并历史无关的分支 git merge 分支名 --allow-unrelated-histories
分支冲突解决
-
当两个各种对同一个文件的同一个内容都进行了修改,并都提交到了本地库,再执行合并时会发送冲突
-
解决办法是进入到冲突文件 对冲突的代码进行修改 然后再提交到本地库(提交时不指定文件名)
Idea集成
GitHub 远程代码托管
创建远程库
别名
-
查看远程库的所有别名
git remote -v
-
创建别名
git remote add git-demo https://github.com/GodEnd/git-demo.git(远程库地址) // git-demo 就是这个远程库的别名
-
代码推送Push
-
git push 别名/链接 分支
-
然后可能有一个弹窗,需要登录一下github
代码拉取Pull
-
git pull 别名/链接 分支
代码克隆 Clone
-
git clone 链接
- 代码克隆会执行以下操作:
- 1.如果为另一个账号,一台计算机只能有一个git凭据,在凭据管理器里面删除git用户凭据
- 2.拉取代码
- 3.初始化本地仓库
- 4.创建别名 origin(默认)
SSH免密登录
-
找到windows用户文件夹
-
先找有没有.ssh文件夹 没有的话右键git-base
-
输入ssh-keygen -t rsa -C “your_email@youremail.com”
-
然后敲三下空格,.ssh就创建成功了
-
然后打开.ssh 打开id_rsa.pub文件
-
复制里面的公钥
-
在github上 ssh功能上 粘贴上去
-
然后就可以不通过http链接,而是通过ssh来push和pull了
Idea集成
Gitee码云 国内的远程代码托管
码云创建远程库
- 命令行和git一致
连接GitHub实现代码复制和迁移
本地库代码上传到远程库步骤
-
本地项目文件打开命令终端
-
登录用户
git config --global user.name Sheep 用户 git config --global user.email 2501820747@qq.com 邮箱
-
克隆远程库代码
git clone http...
-
把本地库文件添加到克隆的分支中
-
然后添加到暂存区和提交到本地
git add .... git commit -m "1.0" hello.txt // 可以使用ide自带的添加和提交功能
-
最后推送到远程库
git push http.... master(分支)