admin管理员组

文章数量:1543389

一、Git下载
参考链接:
https://wwwblogs/gdjlc/archive/2019/12/23/12088872.html
https://segmentfault/a/1190000020600546?utm_source=tag-newest

官网首页:https://git-scm/downloads

我下载的是Git for Windows:最新版本:Git-2.7.0-64-bit.exe

二、Git安装
基本上选取默认的方式进行安装即可,安装路径自己选定。

在安装路径下会有我们经常使用的两个.exe文件:

Git Bash:一个封装过的命令行,并在其中加入了一些命令与功能(Linux)
Git GUI:可视化图形界面
三、Git工作流程
1、工作流程图

Workspace:工作区,电脑里能看到目录
Index/Stage:暂存区,存放在.git/index中,所以暂存区有时也叫索引(index)
Repository:版本库(本地仓库),工作区的隐藏目录.git
Remote:远程仓库,托管代码的服务器
2、工作区之间的关系和命令

3、Git常用命令速查表

四、设置自己的用户名和邮箱

先后输入下面2条命令并回车:

git config --global user.name "用户名"
git config --global user.email "邮箱"


五、创建本地仓库(repository)
1、执行cd d: 命令进行入d盘(盘随意选择)
2、执行mkdir myRepo命令在d盘创建目录myRepo
3、执行pwd命令可以查看当前目录
4、执行git init命令把myRepo目录变为Git管理的版本库

六、github配置SSH Key
Git连接github有两种方式(将本地文件放入远程仓库/将远程仓库的文件克隆到本地):SSH url和 https url

二者区别:
1、https url:克隆时需要复制https url,然后git Bash里面直接用clone命令克隆到本地;可以随意克隆github上的项目;在push时需要验证用户名和密码

2、SSH url:需要克隆的项目的拥有者或管理员,且需要先添加 SSH key 。SSH 在push的时候,不需要输入用户名,如果配置SSH key的时候设置了密码,则需要输入密码,否则直接是不需要输入密码的。

具体流程:

1)设置自己的用户名和邮箱(见上面)
2)创建一个 SSH key打开Git Bash,执行命令:
ssh-keygen -t rsa -C “自己的邮箱地址”,过程中会提示输入文件名,直接按回车用默认文件名,之后提示输入密码,按回车表示不需要输入密码。

在用户主目录下会生成id_rsa和id_rsa.pub两个文件,id_rsa是私钥(不能泄露),id_rsa.pub是公钥

3)登陆GitHub ->右上角头像处选择Settings-> SSH and GPG keys -> New SSH key ->Title随便写,在Key文本框里粘贴id_rsa.pub文件的内容 -> 点击“Add SSH key”保存

保存后如下:

4)测试SSH key
输入ssh -T git@github,出现如下命令即配置成功

2、GitHub创建仓库
将Git仓库同步到GitHub仓库上,这样别人可以通过GitHub仓库来协作。
右上角头像处选择Your repositories-> New->Repository随便写->Create repository

3、把本地仓库关联到GitHub仓库
执行以下命令:
git remote add origin git@github:“Github账户名”/gitRepo.git
origin后面的内容来自于:gitRepo->Code->Clond with SSH中的内容


4、把本地仓库的内容推送到GitHub仓库
在d:/gitRepo手动建立文件word.txt,内容为“hi git!”;
执行命令:git push -u origin master备注:第一次推送master分支时,由于远程库是空的,需要加上-u参数,表示把本地master分支内容推送到远程master分支,还会把本地的master分支和远程的master分支关联起来,以后的推送或者拉取时就可以省略-u参数。


查看GitHub页面,可看到文件test.txt已经同步上去。

七、git GUI的基本使用
1、在想要初始化的文件夹的空白处右键,选择Git GUI Here,若新建版本库文件夹会自动定位到当前文件夹

2、创建新的版本库

3、GUI说明
工作区:列出有改动的文件
暂存区:存放将要提交到版本的文件,工作区修改完成的文件应放入暂存区
差异区:在工作区/暂存区选择文件会显示出改动前后的具体信息
提交说明:提交时写入改动的相关说明

Rescan:扫描出改动的文件,显示在工作区,GUI并不会实时更新对仓库的修改,需要点击Rescan按钮重新扫描
Stage Change:将工作区中所有文件放入暂存区
Sign off:在提交的说明后面附加上当前git账号的信息。多人写作时方便看到提交的编辑者。
Commit:将暂存区的文件提交到本地库
Push:推送到远程仓库

4、新增文件
在gitRepo文件夹下新增文件world.txt,文件内容填写“hi GUI!”,然后点击Rescan,会发现world.txt出现在工作区,对于无法识别的乱码,可以采取图二方式更正


对于提交过的文件的修改是可以撤销的:通过commit->Revert Changes

5、暂存(Stage Change)
暂存全部文件点击Stage Change,若想选定单个文件放入暂存区,Commit->Stage To Commit(快捷键Ctrl+t),多个文件可以按住shift/Ctrl进行选定
撤销暂存:
若提交前还想编辑: Commit->Unstage From Commit
也可以不撤销,直接编辑,再次暂存,效果一样

6、暂存


8、克隆已有的仓库

备注:文件夹是路径中不存在的,git会新创建一个文件夹

9、分支的学习
分支的作用:
1)Git有一个主分支:master,一般项目的master分支都是稳定的代码,可以直接发布或者被项目之外的人使用。当有新的需求和bug需要对代码进行更改时,就需要创建新的分支(以任意分支再次创建,新分支拥有一致的仓库),在新的分支上进行开发和测试

2)Git的分支可以进行合并,当我们从远程仓库克隆最新的代码版本,我们可以在自己的仓库建立多个分支进行开发和测试,测试完毕后,可以将分支合并,再次提交。



点击Reposirory->Visualize branch’s History

如果想退回之前的版本,就在之前的版本右键->Reset branch branch to here

Reset的三种模式:soft、mixed、hard
Soft:回退版本提交历史,暂存区和工作区不变
Mixed:回退版本提交历史,暂存区文件与该版本一致,工作区不变
Hard:回退版本提交历史,暂存区和工作区文件与该版本一致

9.3、切换分支、分支合并(branch合并到master)
将分支切换到主分支master:点击Branch->Check out

然后点击Merge->Local Merge,选择想要合并的分支进行合并

合并成功,结果如下:

9.4、解决冲突(master误删,换一个本地库)
这里master分支有个文件world.txt,我们新建一个分支:branch1,增加一行内容“hi branch1!”

将branch1分支commit后,将master中world.txt增加一行,内容为“hi branch123”,然后commit,会出现如下对话框,表明合并的两个分支存在冲突,因此我们需要先解决冲突再合并



八、多客户端使用
需要多人协作时,其他人按照前面的步骤进行下载安装配置Git,需要设置用户名和邮箱,并且得到id_rsa和id_rsa.pub两个文件,将id_rsa.pub文件里面的内容拷贝到我们的Github上,如图:

后面我们在本地仓库新建一个文件:test.txt,内容为“client测试结果是否成功”,上传至远程仓库测试是否配置成功。

多人协作时,提交文件若遇到冲突,需要将远程库的最新版本拉取下来,在本地合并,解决冲突,然后再次提交。

九、遇到的问题及解决方法
1、关于22端口链接超时的问题
使用很多方法都无法解决,后来发现公司的办公网络使用了代理,改用WiFi就成功了
2、A9080028@CA9080028 MINGW64 ~/Desktop (master)
$ git add test.txt
fatal: pathspec ‘test.txt’ did not match any files
解决方法:需要定位到该文件的路径下,即输入:cd d:\gitRepo
3、3)A9080028@CA9080028 MINGW64 /d/gitRepo (master)
$ git push -u origin master
remote: Repository not found.
fatal: repository ‘https://github/Snowy-Zhang/speaker.git/’ not found (speaker 已经被我删除了,但是提交还是自动提交这个仓库)
解决方法:重新进行配置(ssh)
4、failed to push some refs to ‘github:Snowy-Zhang/gitRepo.git’–我把github仓库中的文件包括分支全部删除掉(branch、dev),再次上传报错

原因:远程存储库中的README.md文件未在您的本地代码目录中
正常解决:git pull --rebase origin master
然后:git push -u origin master

发现仍然没解决

然后看思路发现:我的github上根本没有这个文件,提示我建立,然后我就新建了一个

再次使用命令发现还不行,查阅资料,远程更改需要在本地上frech,然后本地合并,但是在操作过程中发现,我的分支改变了,不是master,变成了HEAD,我也不明白问题出现在哪里,自己并没有新建分支。后来干脆将此分支删除,重新在master上新建了一个文件,然后输入git push -u origin master,提示:
‘origin’ does not appear to be a git repository
再次输入:git remote add origin git@github:Snowy-Zhang/gitRepo.git
最后输入git pull --rebase origin master和git push -u origin master–成功

有点混乱,中间很多细小问题一顿乱操作,也不知道怎么解决的,上面的是大致流程,以后再遇到类似问题再梳理一遍吧

5、git误删本地master主分支
解决办法:
重新建立,可以正常使用

就这些了,谢谢参考的两位博主,写的很详细,这里我也为自己学习做个记录,再有其他问题后续再补充吧!

本文标签: Git