目录
用户签名,初始化git

--global是全局设置的意思

git提交流程图

master又叫历史区
提交到本地库

java
git status //显示暂存区状态(绿色表示在暂存区,红色的表示没在暂存区的)
git rm --cached 1.txt (从暂存区删除该文件)

当提交完后,暂存区会被清空。当你提交过后,你之后又要提交,直接git add . 后会自动区分哪个文件修改了(只会把修改过的文件提交到暂存区中)
注意:在git log后,如果你的信息过多,会让你一直回车才能显示完,
如果要在中途或者最后显示完后退出:按下q键就行了
如果在git commint 之后忘记-m 注释了 会直接跳到vrm编辑界面:

因为提交时必须要注释,这个时候按下i后变成insert模式,然后就可以写注释了(不要写在井号里):

这个时候注释(A功能-22222)就写好了,退出的话先按esc退出insert模式然后输入:wq然后直接回车就行了

版本穿梭


head表示当前位置,master是默认主分支。
如果往回退了一下,这时候用git log是看不到后面的分支的,只能看到目前结点和前面的分支
这时候要用git reflog就可以看到所有记录了:

也可以通过这个字符串来回退(git reflog , git log 都可以看到):

注意:回退后会导致工作区代码同样发生回退(硬回退)
如果不想工作区代码发生回退可以用软回退,这样只会回到缓存区:

软回退的作用:
1.重新git commit -m "XXXXX" 改变注释的内容
2.如果某个文件有bug,但是又不想修改bug单独占一个结点,可以先把这个结点返回到暂存区中然后再把修改的新代码add到暂存区,然后再提交到历史区

所以尽量不要用reset,用revert.

revert相当于你回退到了版本1,但是不会对其他版本造成影响,而是新造一个版本,这个版本就是版本1了

新生成一条记录,所以会有注释

直接写在上面
而我觉得版本回退最重要的作用:
如果某次推送不小心推送错了代码,这时可直接revert回退到上个版本再次推送即可覆盖
如果有人不小心把分支代码不小心提交到了远程库的主分支上:
重置 master****分支到之前的状态 你可以使用 git reset
来重置 master
分支到目标提交:
css
git checkout master # 切换到 master 分支
git reset --hard <commit-id> # 将 master 分支重置到目标提交
分支操作

为什么要有分支:
当测试人员在测试先版本时,如果开发人员又更新了版本测试版本就会发生改变




分支合并冲突
假如现在再写一个分支的代码,但是主分支有个bug要修改,修改完后等分支写完合并的时候会自动合并失败:

同时会自动进入手动合并状态。这时候打开合并的文件会发现:

这时候可以手动决定如何修改。修改完后,记得退出手动合并状态(提交至历史区):

团队协作
github的使用

点击第一个创建仓库

填写完名称即可创建(公开为所有人都能看,只有选定的人才能提交。私有为只能选定的人才能看和提交)
css
git remote add origin https://github.com/huangzhijun0210/test_warehouse.git
//把https://github.com/huangzhijun0210/test_warehouse.git取别名origin

通过remote -v查看是否关联上了:

如果写的时候不小心写错了可通过以下命令删除:

推送代码
css
git push -u origin master:master
//git push为默认,origin为推向的地址,master为要推送到的分支,
//后面的:master(代表要推送到远程仓库的分支)可以省略,默认是master
//-u:可加可不加,加上后设置这条推送为默认推送,以后直接git push就是默认推送了
推送完整流程:


克隆
当团队中来了另外一个人,这时候没有连上远程终端不能pull代码,所以需要克隆先把代码克隆下来:

拉取代码
css
git pull origin master
//从远程仓库master分支拉取
pull只拉取更新的,有修改的。拉去后和本地进行合并

团队协作冲突
这篇博客将多人协作和冲突问题解释得很清楚:
Git推送到远程仓库GitHub以及多人协作开发_多人维护的git推到远程仓库-CSDN博客

当另外一个人在同一个文件夹下推送后,你再次推送,就会报错:版本错误,这时候需要你先拉取最新版本,再推送

因为两个人改的不是同一个文件,所以直接esc,:wq退出即可

如果另外一个人修改了你要推送的代码,你pull后会进入手动合并状态,这时需要先手动合并代码才能推送上去
团队协作之分支管理
推送分支到分支:

注意:不要把本地的分支推到远程的master上,这样写是错误的
拉去远程库分支到本地库:

这时不需要指定本地库的分支名,这时你直接切换会基于远程的login分支直接创建出本地的login分支(所以本地库的分支最好跟远程库的名字相对应,同样的推送如果名字相对应推送也可以省略远程库的分支名,一样会成功)

本地删除远程分支:

直接用空分支覆盖本地分支。
当分支功能完成后和主分支合并后再推送到远程主分支上,然后就要删掉远程库的分支
gitignore




创建完.gitignore后,写上不想上传的文件名,这时这个文件就会变灰,在上传到远程库时就会忽略掉

这样子就是所有txt文件全部被忽略了