git status
git add .
git commit -m “修改”
git push(这里是直接可以push的,因为把远程master也克隆下来了)
多人协作:
多人协作和个人使用的最大区别是,多个人在一个分支下提交,这就避免不了有冲突。个人使用的时候应该是几乎不会出现冲突。
多人协作步骤:
1. 新建项目,默认有一个主分支master,还要新建一个develop分支,简称dev,一般都是在dev分支下工作的,到最后项目测试基本完成,要发布了,就把dev分支下的项目合并到master分支上。master分支基本不做改动,只做项目版本的更新。
2. 让每一个协作者克隆远程项目到本地,自然也就克隆了master分支和dev分支,切换到dev分支下进行工作。
3. 有时候别人修改了一个地方已经提交到远程了,自己也修改了同样的地方,自己也要push时却失败了,这是因为远程项目的版本是最新的,可能和你修改的有冲突,所以每次push前先git pull
,把远程下拉后解决冲突再push就可以成功了。
4. 当然你也可以在本地建立一个自己的分支dev_name,平时工作在自己分支下工作,等要push到远程的时候就切换到dev分支下git merge dev_name
把dev_name 下的代码合并到dev下就可以了。
git checkout dev(切换到dev分支)
git status
git add .
git commit -m “修改”
git pull origin dev
git push
git checkout –b dev_xfy(创建并切换到dev_xfy分支下)
git checkout dev
git merge dev_xfy(合并dev_xfy到dev)
git pull origin dev
git push
解决冲突:
当两个分支在同一个文件的同一个位置做了修改时,二者合并时会出现冲突,查看冲突,留下正确的修改,重新 git add b.txt git commit -m'冲突已解决'
。
其实解决冲突也很简单,当冲突出现时,git status
会告诉你哪些文件有冲突(显示红色的文件),在项目中找到相应的文件
看到类似的
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
dev_xfy
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,我们把这些标记删掉,留下正确的代码就可以了。
码云的使用
为什么要使用码云呢,因为码云是中文的,并且它更适合多人协作,一个组织的管理。
同样的使用方法和github很类似,首先得注册一个码云账号。接下来就是配置SSH,和github过程基本一样。
git常用命令总结:
mkdir: XX (创建一个空目录 XX指目录名)
pwd: 显示当前目录的路径。
git init 把当前的目录变成可以管理的git仓库,生成隐藏.git文件。
git add XX 把xx文件添加到暂存区去。
git commit –m “XX” 提交文件 –m 后面的是注释。
git status 查看仓库状态
git diff XX 查看XX文件修改了那些内容
git log 查看历史记录
git reset --hard HEAD^ 或者 git reset --hard HEAD~ 回退到上一个版本
(如果想回退到100个版本,使用git reset –hard HEAD~100 )
cat XX 查看XX文件内容
git reflog 查看历史记录的版本号id
git checkout – XX 把XX文件在工作区的修改全部撤销。
git rm XX 删除XX文件
git remote add origin https://github.com/StefanPython/demo.git 关联一个远程库
git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库
git clone https://github.com/tugenhua0707/testgit 从远程库中克隆
git checkout –b dev 创建dev分支 并切换到dev分支上
git branch 查看当前所有的分支
git checkout master 切换回master分支
git branch -m newname 修改当在分支
git branch -m oldname newname 修改其他分支名字
git merge dev 在当前的分支上合并dev分支
git branch –d dev 删除dev分支
git branch name 创建分支
git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作
git stash list 查看所有被隐藏的文件列表
git stash apply 恢复被隐藏的文件,但是内容不删除
git stash drop 删除文件
git stash pop 恢复文件的同时 也删除文件
git remote 查看远程库的信息
git remote –v 查看远程库的详细信息
git push origin master Git会把master分支推送到远程库对应的远程分支上
git branch --merged显示已经全部合并到当前分支的分支
git branch --no-merged显示没有合并到当前分支的分支
如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除。
查看日志:
git log
有更好的格式 git log --pretty=oneline
查看所有操作日志git reflog
版本回退:
git reset --hard head^ 回到上一个版本
git reset --hard 版本号 想回到的版本号
获得版本号的命令 git reflog
撤销上一次的修改(未提交的并且是在缓存区的):
git checkout – 文件名 在暂存区修改文件未提交,可用此命令撤销当前未提交的修改,如果有多个文件修改需要撤销 git checkout – .
git reset --hard head 定位到当前提交状态指针,当一个暂存区文件修改后未提交时等同于git checkout – 文件名
注意:命令git checkout – readme.txt 中的 – 很重要,如果没有 – 的话,那么命令变成创建分支了。
只要没有commit都可以还原
连接远程仓库:
git remote add origin1 https://github.com/xfy007/gitsecond.git 添加测试用的远端仓库
git push -u origin1 master 每次我们要提交代码到服务器上时,都会使用到git push。git push命令会有两个参数,远端仓库的名字,以及分支的名字
由于远程库是空的,我们第一次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。经后可直接git push
从远程仓库克隆:
git clone https://github.com/xfy007/gitsecond.git
总结创建与合并分支命令如下:
查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout –b name
合并某分支到当前分支:git merge name
删除分支:git branch –d name
保存工作现场:
当一个分支上的工作还没完成,不能提交时,但是有一个bug需要我再主分支上新建一个分支去解决,所以用到
git stash 来保存工作现场
git status 查看没有未提交的工作
要恢复工作现场 方法一:git stash pop (恢复并删除stash内容)法二:git stash apply(恢复) , git stash drop(一个个删除)
查看SSH公钥的相关命令:
ssh-keygen 重新生成SSH公钥
cd ~/.ssh 切换到.ssh目录下
ll -a 查看.ssh下有哪些文件
cat ~/.ssh/id_rsa.pub 查看ssh key
注:命令无须强记,多使用,就会熟练。
为git命令设置别名:
每次输那么长的命令,感觉效率很低,也很麻烦。可以把这些长命令设置别名。
如: git status 设置成 git st
git add . 设置成git a
git commit -m 设置成 git cm
有命令修改别名但是一个一个修改好麻烦,你可以再次找到.gitconfig文件,打开,找到[alias]标签,如下
[alias]
st = status
cm = commit -m
ck = checkout
plo = pull origin
ps = push
a =add .
照这个样子修改就行了。
可以从git里打开.gitconfig文件
命令如下
cd
cat .gitconfig
vim .gitconfig (进入vim编辑器)
在英文输入法下按i,进入输入模式,修改完成后,在英文输入法下点ESC,再点shift+:底部就会出现一个:,输入wq,就保存退出了
再通过cat .gitconfig查看是否修改
git 相关概念的理解:
工作区:
将一个文件夹通过git init 设置成一个git可以管理的文件夹时,这个文件夹里的内容就是工作区。
暂存区:
暂存区,叫stage 或者 index ,是用来暂时存放工作区中修改的内容;
可以理解为一个中转站
版本库:
通过git init 会生成一个隐藏的文件.git,这个,git里的东西就是版本库
master:
master是主分支,当我们git init后,并不会立刻产生master,而是我们添加了一个文件,并git add .,git commit后,这时我们查看分支情况,便可以看到master分支了。(分支都存放在.git/head/refs目录下)
HEAD:
HEAD是一个引用,引用的是当前的分支,如果当前处于master分支,那么HEAD就会指向master。
注:对三个区(工作区,暂存区、版本库)有影响的几个命令
git add 当我们使用git add 指令时,就是将对应修改的文件添加到暂存区中
这时,暂存区中的目录树被更新。
git commit 我们使用git commit指令,便会将暂存区中做出的修改提交到版本库中
这时master指向的分支被更新。
git reset HEAD 当使用git reset HEAD 指令时,版本库的内容会回退到暂存区。
git checkout --file 使用git checkout --file时,是将工作区指定修改的文件被暂存区的内容覆盖(消除所有工作区进行的改动),这个动作很危险。
git checkout . 也是如此,该指令是将所有修改的文件被暂存区的内容覆盖。
git rm --cached 使用git rm --cached file时,直接从暂存区进行文件的删除,不会影响工作区的内容。
git checkout HEAD --file git checkout HEAD --flie 时,会将版本库中的对应的文件内容直接替换工作区和暂存区中的该文件。
这个动作也是危险的,同样git checkout HEAD . 是将所有的内容替换工作区和暂存区的文件。
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
[外链图片转存中…(img-4LvRIFPO-1715687224843)]
[外链图片转存中…(img-OVO0SwqM-1715687224844)]
[外链图片转存中…(img-unEPQXc8-1715687224844)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!