说白了,Git会clone,pull push,建分支,合并,暂存,commit,rollback,merge就够用了。然后Git配合idea使用,炒鸡棒[微笑][微笑][微笑]
删除分支 next-dev 每次拉取next分支,都得删除dev分支,然后重新建dev分支,保证dev和next版本一样 git branch -d 分支名
一.设置用户签名
git config --global user.name 用户名
git config --global user.email 邮箱
二.初始化本地库
git init
三.查看本地库状态
git status
四.添加暂存区
git add 文件名(*)
五.提交本地库
git commit -m"" 文件名(*)
六.历史版本
git reflog 查看版本信息
git log 查看版本详细信息
git reset --hard 版本号 版本穿梭
七.Git 分支
git branch local_feature01 创建分支
git branch -D 分支名 强制删除分支
git branch 查看本地所有分支
git branch -a 查看所有的分支
git branch -r 查看远程所有分支
git checkout local_feature01 切换分支
git checkout -b local_feature02 创建并切换分支
git merge 分支名 合并分支到当前分支
八.解决冲突
合并后,产生冲突,解决冲突,得重新 add * commit -m""
注意此时使用 git commit 命令时不能带文件名
一般用idea , 解决冲突后,会自动commit
九.远程仓库操作
1.与远程库建立连接 (并起别名,这一步必须有)
git remote -v 查看当前所有远程地址的别名
git remote add 别名 远程地址
2.git clone -b 分支名 “git地址”
:clone 会做如下操作。1、拉取代码。2、初始化本地仓库。3、创建别名
3.git pull origin 远程分支名 本地分支名
4.git push origin 本地分支名:远程分支名
十.邀请 用户
只有邀请用户了之后,用户才能pull 和 push
邀请用户后,用户也会同时克隆和更新远程库,相当于把远程库复制了一份过来
每次提交给公司远程库代码后,用户的远程库也会更新
十二.windows 凭据管理器
存自己的github的用户名和密码
原因:在 remote,clone,pull,push的时候,都得用自己的用户名和密码去搞,每次操作时,
git会默认登入你的 用户名和密码,从哪找,从凭据管理器中
实际,你通过 http 拉代码的时候,git 会去你本地的 windows凭据管理器
去找 这个 http地址,你的windows凭据管理器 有没有 对应的 网站的
用户名密码,能登入,找到有,就可以 remote,clone
十三.SSH密钥配置
1.使用SSH公钥可以让你在你的电脑和码云通讯的时候使用安全
(git的remote要使用SSH地址)
2.ssh怎么使用
1.在 C:\Users\pc 用户下面 创建一个 .ssh,.ssh就放在这里
2.生成了 .ssh 后,会有一串 密钥,你将它 配置到 你的 网站的 ssh配置处即可
3.各种github,gitlab... ,都可以用 这 一个.ssh的 密钥
(但是有 本地配置多个 ssh密钥,给不同网站配置的场景)
4.实际 就是 你通过 ssh拉 这个网站的仓库的时候,git会去你本地
.ssh文件去找 密钥,然后去 这个 网站 去找有没有 配置这个密钥
的用户,有就可以 remote
十四. ssh配置和http配置,都要在你本地 .ssh文件,或者windows凭据管理器,作配置,都得在本地作配置,但是ssh还多了一步,需要在你的 git网站账号页面上 配置 跟你本地.ssh文件 的 ssh密钥 相同的密钥
十五:ssh配置和http配置的区别就是,在账号网页要设置 ssh密钥,而且 网站检查的机制不一样,http 是 网站去找 此网站有没有和 这个window凭据管理器 此网站的 相同的 用户名和密码,ssh 是 网站去找 有没有 和 这个本地.ssh文件 里的密钥 相同 密钥的 用户,有的话,就可以
十六:具体操作
一.准备工作
1.git下载,配置用户名和邮箱
2.新建project,存放项目
二.git克隆分支
git clone -b 分支名(最好clone master分支先) ssh地址
三.开发与推送代码
1.再你克隆的master分支下新建一个 你需要开发的分支分支: next
git checkout -b next(此时master , next都指向一个版本)
2.pull origin next next
3.写代码,commit
4.在push之前,都得先pull一下最新版本,以免出现代码冲突
push有冲突解决冲突即可(解决完自动commit)
5.push
十四:git难点
1.在本地 git的工作机制
在本地,只有工作区,暂存区,和本地库,本地库里面有历史版本,简单来说,工作区就是现在的代码,暂存区只有一个版本,本地库是多个最终版本,也就是说工作区是随着你写代码会实时更新的,暂存区add一次就更新一次,而且只有一个版本,但是本地库你commit一次,就会把暂存区的当前版本commit到本地库,本地库有多个历史版本
版本切换,是指针指向具体版本,首先有一个 head指针,指向具体分支的,具体分支指向 本地库的具体版本,但是这个和现在 暂存区和工作区的代码是什么样的没有任何关系,只需知道,这两个指针,指向本地库的某个历史版本,本地库的历史版本都是不能更新的,只会增加一个版本,或者删除一个版本
然后注意一点,只要版本切换了,或者分支合并了,那么工作区的代码会更新为那个历史版本,只是这个时刻变了,后面工作区的代码改变,跟指针指向哪个版本就没有关系了
分支:分支就是 指针,head ->具体分支指针->历史版本,工作区的代码,在切换分支或者合并分支的那一刻会发生变化
本地库的版本就是一个个的版本,和什么分支没有任何关系
最重要的一点:我们通常说的任何操作,我们都考虑到一个临界点,就是当前正好 工作区没有新东西更改,工作区的代码和本地库的版本一样
切换分支,也只会切换到当前分支的 本地库的历史版本,不会切换到 当前分支的工作区的代码的
所以,我们需要记得 工作区和暂存区,实际都不能算作git,只能说叫做写代码的位置,工作区只有一个,暂存区只有一个,而且他们都只有一种状态,真正 git涉及到的 内存,指针,记录,都是本地库的 历史记录,知道这个就非常好办了
几个问题就可以解决了
1.在创建分支的时候,会从当前分支指向的本地库的历史记录克隆代码,而不是 当前工作区
2.切换分支的时候,head会指向 其他分支的指向的历史版本,此时工作区就会更新
(上述 两个 都不会对 本地库的历史版本由影响,对本地库有影响的只有,commit)
3.合并分支的时候,同样也是 head现在指向的分支指向的版本,和想要合并分支的指向的版本,合并,合并完,解决完冲突后,在add ,commit(注意,这时候commit 不能 指定文件名,只能commit 整个 暂存区)
合并冲突的解决
1.冲突产生的原因:合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替我们决定使用哪一个。必须人为决定新代码内容。
2.git commit时 不能指定文件名
3.commit 完后,本地库出现一个历史版本,这时候 合并冲突才算完全解决 面 MERGING 才会消失,变为正常
4.对我们来说,合并分支只用合并本地分支,也就是说只有在本地合并分支的时候,才会产生合并冲突,远程的合并以及冲突不用我们管
只有加入团队协作,远程库邀请用户,这个用户才能 pull 那个远程库,都是 push和clone 不需要