Git介绍
个人学习Git笔记,没有任何参考价值,所有记录全是个人理解加习惯
liunx大神的意外之作
去中心化?搞比特币?
Git安装
下载适合自己的版本,一直下一步就可以
Git结构
本地仓库
工作区:也就是你写代码的地方
暂存区:打算提交,还没提交,临时存储的区域
本地库:存储的历史版本库区域
工作区——>git add——>暂存区——>git commit——>本地库
创建本地仓库流程
1、创建本地文件夹
2、初始化本地仓库
前提条件:设置好签名——用户名和邮箱
打开“Git Bash Here”
执行“git init”
查看“ll -la”
3、创建一个示例文件
4、提交到暂存区
git add 文件名或者文件夹名
5、提交到本地仓库
git commit -m “描述信息” 文件名
远程仓库
局域网环境下:可以自己搭建GitLab服务器作为代码托管中心
外网环境下:可以基于GitHub或者Gitee作为代码托管中心
分支
介绍
在版本控制过程中,使用多条线同时推进多个任务。这个时候就可以使用不同的分支进行代码管理推进。
通过不同的分支,我们可以更好地管理代码的版本回溯;防止主分支代码污染;互不干扰,提交开发效率。
分支操作
创建分支
git branch [分支名]
查看分支
git branch -v # 前面的*表示当前你在哪个分支
切换分支
git checkout [分支名]
分支开发
在对应的分支下进行commit即可
在不同的分支下可以看到不同的代码,通过切换可以看到效果
合并分支
将其他分支合并到主分支(如果是合并到其他分支就进入需要合入的分支)
1、进入主分支
2、将需要合并的分支与主分支合并
git merge [分支名]
3、如果合并有冲突
-
删除不想要的,留下想要的
操作文件保留想要的
-
git add
-
git commit -m “”(不可以带文件名)
演示操作:
- 切换到其他分支,对文件进行操作
- 提交到本地仓
-
切换到需要合入的仓库,并修改该文件,提交到本地仓
-
合入
- 重新修改文件提交
提交分支
将本地创建的分支提交到远程仓库
sun@SUNZHINAN MINGW64 /e/item/demo (master)
$ git checkout dev # 切换分支
Switched to branch 'dev'
sun@SUNZHINAN MINGW64 /e/item/demo (dev)
$ git remote -v # 查看别名和远程仓库地址
origin git@github.com:sunzhinan/demo.git (fetch)
origin git@github.com:sunzhinan/demo.git (push)
sun@SUNZHINAN MINGW64 /e/item/demo (dev)
$ git push origin dev # 提交分支
Total 0 (delta 0), reused 0 (delta 0)
remote:
remote: Create a pull request for 'dev' on GitHub by visiting:
remote: https://github.com/sunzhinan/demo/pull/new/dev
remote:
To github.com:sunzhinan/demo.git
* [new branch] dev -> dev
# 完成!
GitHub
将本地代码推送到远程仓库
1、注册账号
2、创建GitHub远程仓库
new repository
3、本地仓已创建
可以通过remote先设置远程仓库的别名
4、执行git push [.git地址] [分支]
克隆代码
git clone [.git地址]
推送代码
git push [.git地址] [分支]
其他用户需要邀请加入团队
添加用户,复制邀请链接,登录该用户账号将链接输入地址栏接受邀请
拉取代码
git pull [远程仓地址或者别名] [分支]
或者使用
git fetch + git merge
GitLab
冲突解决办法
冲突一般都是不同开发人员操作同一文件,同时合入主仓导致的问题
同一团队
加入了项目团队成员
1、先pull,查看冲突位置,修改文件
2、修改为好文件后,向服务器推送
git add
git commit -m “”(解决冲突问题不可以带冲突文件名)
git push [远程仓库地址或者分支名] [分支]
跨团队
没有加入团队,只是fork了代码
1、fork代码
2、将代码克隆到本地git clone
3、提交修改到自己fork仓
4、发送申请pull request
IDEA解决冲突
1、push后有冲突,会提示错误,点击“Merge”;弹出提示框,在点击“merge”进行合并操作。合并好了点击“apply”
2、再次push就可以了
IDEA集成Git
setting——control——git
Git 常用命令
git version
查看git版本
git init
创建本地仓库
git add
提交到暂存区
git commit
提交到本地仓
git status
查看工作区和暂存区状态(提交到本地库的看不到)
git log/git reflog
查看提交日志
git reset/git revert
git reset :可以进行历史版本的前进或者后退,也可以通过该命令找到commit后删除的文件
1、只是git add还没commit
git reset HEAD .
# 或者
git reset HEAD xxx.java
2、如果已经commit到本地仓库还没push到远程仓库
# 方法一
git reset --hard HEAD^ # 回到最新一次修改
# 推荐(需要注意最后的^号,意思是commit_id的前一次提交)
git reset HEAD^ # 保留代码回到最新一次修改,
# 方法二配合commit_id
git log # 查看提交历史
git reset --hard [commit_id] # 回到你想回到的这个版本
## hard:会重置工作区和暂存区的代码
## mixed:重置暂存区,工作区还在
## soft:不会重置暂存区和工作区
3、如果已经push到远程仓库
# 方法一
git log # 查看commit记录
git revert ]commit_id] # 撤销到指定的版本
# 方法二
git log # 查看commit记录
git reset --hard [commit_id] # 回到你想回到的这个版本
git push origin HEAD --force # 重要,强制提交一次,将之前的错误从远程仓库删除
git diff
比对文件差异——工作区和暂存区的文件内容差异
1、已经将文件提交到本地仓库
2、修改已经提交的文件
# 单个文件比对
git diff [文件名]
# 多个文件比对
git diff
# 如果需要比较暂存区和本地仓库的差异
git diff HEAD [文件名] # 和最新的本地库比较
# 或者
git diff [commit_id] [文件名] # 和对应的commit_id版本比较
git remote
查看别名
git remote -v
新增别名
git remote add [别名] [远程仓地址]
git fetch
也是拉取代码,git fetch+git merge = git pull
git fetch [远程库地址] [分支]
# fetch只是将远程库的内容下载到本地库,所以工作区是看到新抓取的文件和内容的
#使用merge合并
git merge [远程仓地址或者别名]/[、分支]
git checkout
# 本地仓切换
git checkout [分支]
# 远程仓切换
git checkout [远程仓地址或别名]/[分支]
查看别名
git remote -v
新增别名
git remote add [别名] [远程仓地址]
git fetch
也是拉取代码,git fetch+git merge = git pull
git fetch [远程库地址] [分支]
# fetch只是将远程库的内容下载到本地库,所以工作区是看到新抓取的文件和内容的
#使用merge合并
git merge [远程仓地址或者别名]/[、分支]
git checkout
# 本地仓切换
git checkout [分支]
# 远程仓切换
git checkout [远程仓地址或别名]/[分支]