标题
- Git安装配置
- 快速上手
- git 核心理念
- 仓库操作
- Gitee 的使用
- GIthub 的使用
- ID/PY 关联 Gitee
- Vscode 关联 Gitee
- git中可能出现的问题
- You have unmerged paths.
- (上传时) The current branch master has no upstream branch.
- (上传时)git ! [rejected] master -> master (fetch first) error: failed to push some refs to 'xxx'
- (上传时)! [rejected] master -> master (non-fast-forward)
- (上传时)warning: in the working copy of ‘xxx.vue‘, LF will be replaced by CRLF the next time Git touc
Git安装配置
Git的下载地址:点我下载
下载的时候注意 保存的地址 ,其他的基本上一路确定就可以,完成安装后在任意一个文件夹的空白处右键(更多选项)会出现:
选择一个你想要的文件夹做为代码仓库,右键-更多选项后,点开 Git Bash
输入下面的内容完成用户信息配置
$ git config --global user.name "用户名"
git config --global user.name "lkj"
$ git config --global user.email 邮箱
git config --global user.email 787930581@qq.com
如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。
如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里
使用下面的指令来查看当前用户信息
git config --list
其他本地仓库必须推送其他分支才能推入到同一个远程仓库
快速上手
第一周任务:初始化仓库
1.在自己的电脑上安装Git,并配置好用户名、邮箱等
2.创建一个文件夹,初始化一个本地仓库
3.完成项目题的基础功能(加密、解密),将代码文件保存在文件夹中
4.将代码文件添加到本地仓库,并进行一次有意义的提交(commit),并查看当前仓库的状态
提交检查的内容:请将每个任务点完成过程详细地截图
第二周任务: 实现对远程仓库的基本操作:
1.在Gitee上注册一个账号,并创建一个空的远程仓库
2.在代码文件中随意添加一行注释,添加到本地仓库;撤销本次添加(reset),并丢弃(checkout)工作区的修改,使代码恢复到修改前
3.重新修改代码文件,将每个功能补充完整注释,添加后提交
4.将本地仓库与远程仓库关联(remote),并推送本地提交到远程仓库
第三周任务:合并分支
1.在本地仓库中,创建一个新的分支,命名为dev,查看所有分支
2.切换到dev分支,在代码文件中添加新的功能(判断密码强度、密码生成)
3.提交修改到dev分支,并查看历史操作的记录(log)
4.切换回master分支,将dev分支合并到master分支,合并成功后删除dev分支,并提交
第四周任务:暂存工作区
1.修改代码内容使其无法正常运行,使用stash命令暂存未提交的修改,切换到新分支bugfix
2.在新分支bugfix上将暂存区的内容应用到工作区,修复bug,切换回原来的分支,合并分支
3.使用reflog命令查看并找到第三周任务最后一次正常提交的记录
4.回退(reset)到第三周最后一次正常提交的状态
git 核心理念
Git有三个核心区域,它们分别是工作区(Working Directory)、暂存区(Staging Area)和版本库(Repository)。
工作区(Working Directory):是可以直接编辑的地方。
暂存区(Stage/Index):数据暂时存放的区域。
版本库(commit History):存放已经提交的数据。
工作区的文件 git add 后到暂存区,暂存区的文件 git commit 后到版本库。
仓库操作
创建仓库
右键文件夹,点击 更多选项 - Git Bash
输入下面命令来初始化
git init
或者选定一个目录作为仓库
git init 名字
初始化后,在当前目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。
之后它就作为一个仓库了,我们可以从其他仓库进行克隆
仓库克隆
git clone [url]
这个url 指的是 远程仓库 的地址,比如:
git clone git@gitee.com:jojoikun/test.git
这样做是克隆 远程仓库 的所有内容到本地仓库中来
删除文件
1.直接在工作区删除(本地仓库),并且将这次删除放入暂存区
git rm (文件)
2.工作区和暂存区删除(本地仓库),并且将这次删除放入暂存区
git rm -f
把本地内容推入远程仓库
首先:本地仓库关联远程仓库
git remote add origin (远程仓库名字)
git remote add origin https://gitee.com/xxxxx/vue-project.git
将远程仓库的地址添加到本地 Git 仓库中,并将其命名为 origin。之后,你就可以使用 git push 和 git pull 等命令与远程仓库进行交互了。
先执行下面两个命令
1.把文件放入暂存区 (.代表全部文件,也可以是单个文件,即只放一个在暂存区)
git add .
2.进行一次提交(必须要写注释)
git commit -m "注释"
3.更简单的方法推入远程仓库(会建立一个主分支,只有该本地仓库可以使用这个分支)
git push (HTTPS/SSH地址)
将本地内容推送到远程仓库(第一次) 推送分支
git push -u origin(远程库的名字,默认为origin) (分支名字)
参数u代表关联远程分支
将本地内容推送到远程仓库(之后)
git push origin(远程库的名字,默认为origin) (分支名字)
只有主分支为这个代码仓库的,才可以用(否则要创建新的分支)
如果远程仓库的分支名相同,先拉去上游分支
git push --set-upstream origin master
分支命令
创建并切换到 (分支名字) 分支上
git checkout -b (分支名字)
这样做,Gitee会出现一个新的分支
创建新的分支(分支名字)
git branch (分支名字)
查看当前分支
git branch
切换分支
git checkout dev(分支名字)
删除dev分支
git branch -d (分支名字)
合并分支
git merge (分支名字)(--no-ff)(-m)
合并,把dev分支的工作成果合并到master分支上
查看远程库的名字
git remote
查看git使用记录和提交的索引
git log
git reflog
前面黄色的值就是索引
git 回退到索引之前的状态
如果你想回退到索引为 847b066 的提交状态,可以使用以下命令:
git reset --hard 847b066
同步远程仓库
git fetch
当我们需要在本地仓库中修改代码并同的时候使用
同步本地仓库(本地删除分支)同步到远程仓库
git push origin :branch_name(删除的分支名字)
fork的使用,与他人协作修改代码
fork的功能是你修改他人的代码,你可以给他人加入或修改代码,要通过他人的同意
1.进入他人的代码仓库(用别人给你的Http地址)-点击forked
2.fork后会出现一个新的仓库,这个仓库下面会显示fork自他人
3.复制这个仓库的http地址,和以前的一样进行推送.
4.点击pull Request
5.点击新建pull Request
6.提交申请
7.之后他人会受到一条通知,他通过了你的修改就会在他的仓库中生效了
Gitee 的使用
进入Gitee官网:点击进入
进行正常的注册,登录
建立远程仓库Giree
按照图片,点击 “+” 号 - 新建仓库
输入 文件名,路径, 点击 创建
完成
本地仓库关联远程仓库
配置ssh公钥,输入(填写注册时的邮箱)
ssh-keygen -t rsa -C "youxiang@qq.com"
之后回车三次(有几个是密码,可以选择不输入),会返回
查看公钥输入
cat ~/.ssh/id_rsa.pub
返回:
复制这个公钥,进入 SSH公钥设置
标题随便取一个,把公钥复制过去,这样做,你会得到一个邮件(说明你以成功连接)
最后,输入
$ ssh -T git@gitee.com
得到返回就说明成功连接了
我们可以推入内容了
git push --set-upstream (url) (分支名) (第一次使用,创建一个主分支)
git push (url)(分支名,默认为master,第一次一定要加)
只有主分支为这个代码仓库的,才可以用(否则要创建新的分支)
fork关联别人的仓库,把代码提交给别人
GIthub 的使用
进入Github:点我进入
先进行正常的注册登录
创建远程仓库
然后点击右上角的 + 号 - New repository
输入项目名,创建就行
复制HTTPS/SSH地址
本地仓库关联远程仓库
本地仓库连接远程仓库看上面的就行
ID/PY 关联 Gitee
创建本地仓库
点击确定就行
(文件变成金色了) - 点击 管理远程
连接远程仓库Gitee
去远程仓库中复制SSH地址
确定后即可,之后上面会出现一个 Git
提交 对应 add。推送 对应 commit+push
提交并推送后就可以在代码仓库中找到了
Vscode 关联 Gitee
直接把带有连接仓库的本地仓库用 Vscode 打开
1.点击 源代码管理
建立或更改一个文件,我们会发现 红框处会多一个1
点击红框处,+ 号代表着把文件放入暂存区
之后点击提交
在这里写注释必须写(对应 commit -m “注释” )
完成后是成功提交到了本地仓库,点击这两个都是提交到远程仓库
点击 确定
成功
git中可能出现的问题
You have unmerged paths.
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add/rm <file>..." as appropriate to mark resolution)
deleted by them: question1.java翻译这个
未合并的文件路径冲突。(两个分支中有同样的文件)
确定你希望保留哪个版本的 “question1.java” 文件内容:本地分支的修改还是其他分支的删除。
如果你选择保留其他分支的删除操作,可以使用以下命令将删除操作标记为已解决:
git rm question1.java
如果你选择保留本地分支(本地仓库)的修改,可以使用以下命令将冲突文件标记为已解决:
git add question1.java
在处理完所有冲突文件后,运行以下命令进行提交:
git commit -m "Resolve conflicts"
(上传时) The current branch master has no upstream branch.
如果本地分支名和远程分支名一样的话,第一次推送要先关联分支(和关联仓库差不多)
即当前分支没有和远程分支关联(没有上游分支),使用下面 命令来关联分支:
git push --set-upstream origin master(分支名)
第一次输入就可以,之后可以不必输入
- 如果你希望在将来的推送中不必再次使用 --set-upstream 标志,可以配置 Git 以自动设置上游分支。你可以运行以下命令:
git config --global push.default current
(上传时)git ! [rejected] master -> master (fetch first) error: failed to push some refs to ‘xxx’
当想把一个文件从一个新的本地仓库放到远程仓库时
出现这个问题的最主要原因,是本地仓库和远程仓库实际上是独立的两个仓库,假如我之前是直接clone的方式在本地建立起远程github仓库的克隆本地仓库就不会有这问题了。
1.先关联仓库
git remote add origin (远程仓库地址)
2.输入下面的指令,这样你就会克隆远程仓库并获得同步
git pull origin master --allow-unrelated-histories
3.直接推送就可以
git push ((远程仓库地址)
(上传时)! [rejected] master -> master (non-fast-forward)
出现原因在于:git仓库中已经有一部分代码,所以它不允许你直接把你的代码覆盖上去。于是你有2个选择方式:
1、强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容,如果远程仓库是刚建的,没有代码,可以这样操作,尽量避免这种操作方法。
git push -f
2、先把git的东西fetch到你本地然后merge后再push
$ git fetch
$ git merge
3、在使用的时候,git merge,又出现了以下的问题
xu:QProj xiaokai$ git merge
fatal: refusing to merge unrelated histories
对于这个问题。使用git pull origin master --allow-unrelated-histories
来处理一下。
4、然后继续git merge,依然有问题
fatal: You have not concluded your merge (MERGE_HEAD exists).
Please, commit your changes before you merge.
这个就好处理了,是我们没有提交当前的变化, git add .,git commit -am “提交信息”
然后再来一次git merge,然后ok.
5、然后输入git pull,显示如下
Already up-to-date.
最后就可以执行
xu:QProj xiaokai$ git push origin master
(上传时)warning: in the working copy of ‘xxx.vue‘, LF will be replaced by CRLF the next time Git touc
翻译:警告:在 ‘src/xxx.vue’ 的工作副本中,下次 Git 遇到 LF 时,LF 将被 CRLF 替换。
CR为回车符,LF为换行符。Windows结束一行用CRLF,Mac和Linux用LF。
core.autocrlf
false表示取消自动转换功能 -> 适合纯Windows
true表示提交代码时 把CRLF转换成LF,检出时LF转换成CRLF -> 适合多平台协作
input 表示提交时 把CRLF转换成LF,检出时不转换 -> 适合纯Linux或Mac
比如都是使用window系统进行协作,就可以输入
git config --global core.autocrlf true