Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
git的使用说重要也不重要,在CS61b开课就教了,CSwiki也建议大一开学就学,nju等一系列985也大一就学,但是不学也不会怎么样,这毕竟只是工具不是知识,大不了工位上随便看一看就行吗,仁者见仁喽
廖雪峰的官方网站-Git:https://www.liaoxuefeng.com/wiki/896043488029600
git的基本命令可直接看最下方总结(点击右侧导航栏)
设置用户(目的在于可以在远端看到是谁提交了内容,更方便公司的管理)
1、设置全局用户(在家路径下创建用户,每个项目都用这一个用户)
>: git config --global user.name 'manba '
>: git config --global user.email 'manba@163.com'
2、设置局部用户(局部是指在某个项目下创建用户,可以在不同项目下创建不同用户)
>: git config user.name 'manba '
>: git config user.email 'manba@163.com'
初始化仓库,让git接管你的项目
git init
查看有什么文件
ll
查看仓库状态
git status
-红色:新建,修改,删除,在工作区没有放到暂存区
-绿色:放到暂存区,没有提交到版本库
-没有东西:说明所有变更都被版本管理起来了
将当前路径下的所有变更提交到暂存区
git add .
删除文件
git rm --cached hello.txt
将暂存区的内容提交到版本库
git commit -m "THIS IS MY CODE" HELLO.txt
打印此文件
cat hello.txt
在git里面修改
vim hello.txt
进入io界面
//注意老师用的是vim学生阶段不推荐学习vim因为vim学习成本高,
学习很长时间才能看到正面反馈,显然这对于学生来说是不好的,
要找到工作在学不迟,学生阶段不用琢磨这个//
点一下键盘i,修改内容
vi后输入i表示进入编辑模式,输入完毕后按esc键退出编辑模式,
输入“:wq”表示保存并推出,都是linux的基本操作,可以先去学习Linux
查看版本管理日志
git log # 显示作者,版本号,注释
git reflog # 显示精简信息(版本切换也会显示)
版本穿梭
撤销版本库提交,回到原有的版本当中去
git reset --hard 版本号
撤销工作区操作
git checkout .
撤销暂存区操作
git reset .
git分支操作
类似于副本的东西,但是不是
仅在工作区进行修改后,切换到其他分支,在返回该分支后可能会出现异常,建议修改后及时上传暂存区、本地库
查看分支
git branch -v
创建分支
git branch 分支名字
切换分支
git checkout 分支名字
合并分支
git merge 要合并的分支名字
冲突的合并分支
即代码有两套不同的分支

此时合并失败了,需要手动合并代码
master 和 fix-hot 在同一个版本的基础上都进行了修改,merge就是新的覆盖旧的,此时相对基础版本都是新的,git不知道哪个是新,哪个是旧
在vim中手动进行操作,然后进行一下add
在提交本地库中,将要
git commmit -m "merge text"
不要加名字!/
总结:合并不冲突是因为,hotfix复制了master后master没有再次修改,所以合并时直接覆盖。而冲突是hotfix复制后,master和hotfix都修改了,所以冲突
团队内协作和跨团队协作
邀请加入团队
setting ->Manage access ->invite collaborotor
把邀请函密钥复制下来,发给B
B在浏览器里打开该网站,按照提示操作即可
其他人打开你的github库,可以在线修改代码。
github的使用
远程库的名字一般和本地的是一样的
他人对于github的远程库,点击fork,操作进行pull request
本人就会收到 pull request,审核后即可merge pull request
git remote -v
查看当前所有远程地址别名
git remote add git-demo URL
添加地址别名
git push 别名 分支名
推送文件向github服务器
现在github要用ssh关联上终端然后用令牌登陆就可以push上去了。
原因如下:如果ssl证书未经过机构认证。会认为未知的没有签署过的证书意味着可能存在很大的风险。
443端口
Vim/Vi中保存文件并退出编辑器_使用vi/vim编辑器查看当前目录下已存在文件oldfile,然后保存退出vi/vim编辑器;-CSDN博客
2021年8月13日起,Github不再支持使用密码push!老师这个push方法过时了
第一次push 需要加 -u 完整命令 git push -u 别名 master ,自己git 登录的浏览器一定要和认证打开的浏览器是同一个,一直超时,连接手机热点,再上传 看看就好
记得删除凭据管理器的凭据
拉取远程github库
git pull git-demo master
任意拉取一个库
git clone URL
//克隆是本地没有时用的,拉取是本地已经有了的时候用的//
clone会干三件事,1,拉取代码2.初始化本地库3.创建别名
ssh的使用
在C盘里面用户下有.ssh的文件夹,使用以下的命令生成
ssh-keygen -t rsa -C XXXX@163.com
//然后敲三次回车
加密算法可以使用 Ed25519,一般只要不是太旧的机器都支持,比rsa好
打开rsa.pub就是你的私钥
pull是拉取,针对的我已经有本地仓库,但是和远程库数据不同步的情况,克隆是连本地库都没有,直接从远程库copy一份到本地当作本地库
idea的使用
需要忽略一些没有必要的东西
在用户文件夹下,新建一个git.ignore,忽略什么就 *.什么
下面是对IJ的样例文件
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
I
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid*
.classpath
.project
.settings target
.idea
*.iml
对于gitconfig文件,可以变成
[user]
name = Layne
email=Layne@atguigu.com
[core]
excludesfile = C:/Users/asus/git.ignore //windows是反斜线 
在你的idea里面,setting-> version control ->选择自己所在文件里面的git.exe
VCS里面create git resposbility
右键文件,git--->add
idea的切换版本
这里不需要add了吧,idea貌似暂存区概念很弱,追踪后默认就是commit -a的
可以点击那个双向箭头(Show Diff)对比显示修改的代码
idea的下角有version control -》log可以看到版本迭代
右键版本,点击checkout即可
idea的使用分支
右键文件---》git----》----》repository---》Branches-----》new branch
或者idea下角有 git:master,点击即可
idea合并分支
marge into current
有冲突的时候:会出现merge,手动更改一下
idea是可以链接github gitee的,但是懒得用
总结
1.详细内容看学习笔记
2.这里只整理一些命令和场景
3.其实还有很多命令,不过有一些都可以由下面基础的命令得到。例如:要将内容从HEAD
恢复到工作区
,只需要将内容从HEAD
->暂存区
->工作区
。
本地库相关命令
git init # 初始化Git版本库
git clone # 通过克隆开源代码到本地进行版本管理
----------------------------------------
git add <filename> 或 git add . # 提交文件到暂存区
git commit -m "message" # 文件从暂存区提交到版本库,其中"message"是对应提交的注释
----------------------------------------
git status # 查询工作区状态
git diff <filename> # 查看版本库的内容和当前文件内容的区别
----------------------------------------
git log # 显示最近到最远的提交日志,能定位过去的版本
git log --pretty-oneline # 简化git log的输出结果为一行
git reflog # 查看命令日志,能定位未来的版本
git reset --hard HEAD^ # 回退到上个版本
git reset --hard commit_id # 回到指定"commit_id"的版本,commit_id不需要完整
----------------------------------------
git restore <filename> # 将内容从`暂存区`恢复到`工作区`(结果等价于"工作区文件修改撤销")
git restore --staged <filename> # 将内容从`HEAD`恢复到`暂存区`(结果等价于"暂存区文件修改撤销")
git restore --soucre=<commit_id/HEAD> <filename> # 将`指定来源`的内容恢复到`工作区`
----------------------------------------
git rm --cached <filename> # 从暂存区删除文件
git rm <filename> # 从暂存区和工作区中都删除文件(两个区都有该文件,否则报错)=rm+git add,如果带-f参数可以实现强制删除
----------------------------------------
git clean -n # 预览"未被Git跟踪的文件",它们可被删除
git clean -f # 删除未被Git跟踪的文件
git clean -i # 交互式删除未被Git跟踪的文件
----------------------------------------
git stash # 保存"工作现场"
git stash list # 查看保存的工作现场
git stash apply # 恢复工作现场,但是stash内容不删除,删除需要 git stash drop
git stash apply stash@{0} # 恢复特定stash
git stash pop # 恢复工作现场的同时删除stash内容
远程库相关命令
git remote -v # 查看远程库的信息
git remote rm origin # 解除与远程库origin的关联
git remote add origin git@github.com:名称/仓库.git # 关联远程仓库,并起别名为origin
git push -u origin main # -u表示main分支和origin/main分支关联起来,方便后续推送和拉取简化命令
git push origin main # 将本地main分支内容推到远程库origin
git pull --set-upstream-to=origin/dev dev # 将本地dev分支与远程库的dev分支关联
git pull # 拉取远程库对应分支的内容
----------------------------------------
git clone git@github.com:名称/仓库.git # 克隆远程库
分支相关命令
git branch # 查看本地分支
git switch -c <分支a> # 创建并切换分支=git branch <分支a> + git switch <分支a>
git branch -d <分支a> # 删除分支a
git merge <分支a> # 将<分支a>合并到当前分支上
git merge --no-ff -m "xxx" <分支a> # --no-ff表示"禁用快速合并"
git log --graph --pretty=oneline --abbrev-commit # 查看分支合并情况
标签相关指令
git tag v1.0 commit_id # 为对应commit(省略则表示当前提交)打上v1.0标签,可以补充-m ""来指定说明文字
git tag # 查看已打的标签
git show v1.0 # 查看v1.0标签的详细信息
Comments NOTHING