文章目录
1. 下载及安装
1.1 Git
到官网下载。
安装过程:
除了改变安装位置,其他全都选择默认
1.1 TortoiseGit
到官网下载。
安装过程:
除了改变安装位置,其他全都选择默认
Configure user information先不填
1. 创建全新的git本地项目
- 在本地创建一个项目目录
- 使用命令行进入本地目录
D:\Project\dadi\dadi01>
- 从git仓库复制git地址
4. 到命令行窗口,输入命令git init,初始化本地git目录
D:\Project\dadi\dadi01>git init
Initialized empty Git repository in D:/Project/dadi/dadi01/.git/
- 使用git clone命令,会从第3步的复制git地址下载到本地目录下。如果之前没输入过git仓库地址,系统会弹出提示,输入该远程仓库的登录名及密码
D:\Project\dadi\dadi01>git clone https://gitee.com/vistajin/dadi-jxc.git
Cloning into 'dadi-jxc'...
remote: Enumerating objects: 135, done.
remote: Counting objects: 100% (135/135), done.
remote: Compressing objects: 100% (115/115), done.
Receiving objects: 68% (92/135)used 0 (delta 0), pack-reused 0Receiving objects: 66% (90/135)
Receiving objects: 100% (135/135), 121.79 KiB | 381.00 KiB/s, done.
Resolving deltas: 100% (37/37), done.
D:\Project\dadi\dadi01>
6. 本地项目创建完成
前面怎么创建git项目忘了记录,到时记载下来
2. git同步
到git项目目录下,右键文件夹空白地方,选择 git bash here
会打开git的命令行窗口
在命令行窗口下输入:git pull
就会自动拉了
$ git pull
remote: Counting objects: 986, done.
remote: Compressing objects: 100% (409/409), done.
3. Intellij 结合Git使用案例
3.1 初始设置
不记得是否需要设置了,我自己没有设置的印象,安装git,使用社区版intellij zip版本,自动就与git挂钩了。
3.2 新建分支
初次使用,如果不是同事告诉我,我不知道原来git分支入口在intellij右下角很小的地方:
点一下这个右下角的图标,弹出窗口中选择“New Branch”
输入分支名称,点[Create]
再点开图标,发现本地已经增加了这个分支了
这个分支只是在本地,登录远程仓库看,是还没有看到这个分支的。
回到intellij,在右下角小弹窗上,点新本地分支的三角图标,选push,在下一个窗口中继续点Push
再登录到远程仓库,看到远程仓库也创建了新的分支了
之后的工作,就通过这个右下角的小面板,针对不同的branch checkout,就可以针对某个版本工作了。
3.3 Intellij中直接提交文件到远程
在intellij的project view中(见截图蓝色圈),可以看到所有该目录下的文件,有标记不同的颜色,几个颜色的含义:
- 白色 - 本地工作文件与本地仓库版本一致
- 红色 - 本地新增,还未进入本地仓库(可通过git > Add将颜色变成绿色)
- 绿色 - 本地新增,已经add到本地仓库,还未Commit(可通过git > Commit将颜色变成白色)
- 蓝色 - 本地修改文件,还未Commit(可通过git > Commit将颜色变成白色)
注意:以上所有颜色,仅针对本地git版本的比较。Intellij无法判断远程仓库和本地仓库是否有不同。
4 Github使用心得
4.1 Personal Access Token
说明:暂时不清楚为什么必须这个,有文章说是某个github版本之后,不再允许用户名+密码提交,所以需要使用token的方式。只是项目指引需要设置,所以暂时先把流程抄过来
入口:Profile → settings → Developer settings → Personal access tokens → generate new token
之后里面有很多选项,如果只用作开发,仅点选[repo],[write:packages],[delete:packages], [admin:org],其他都留空,移到最下点【Generate token】
注意生成的token只会在页面上显示,需要复制下来存到本地。关上页面之后就再也没地方显示这个token了。但不需要担心,可以重新生成新的。
在本地,使用git clone时,会弹出验证框,可以使用现有的用户名密码登录,也可以使用上面生成的token登录。如下两个选项
4.2 Personal Access Token 过期
4.2.1 过期表象
如上面生成的token,如果选择了过期时间,是会过期的。过期之后,在本机连Git的时候,会收到类似下面的提示
Authentication failed
这时就要想到是token过期了。到邮箱里,也能看到一封提示邮件:
[GitHub] Your personal access token has expired
Hey @xxx,
Your personal access token “Process Repo” with repo scope has expired.
If this token is still needed, visit https://github.com/settings/tokens/xxxxx/regenerate to generate an equivalent.
If you run into problems, please contact support by visiting https://github.com/contact?tags=dotcom-accounts
Thanks,
The GitHub Team
4.2.2 更新Token步骤
可以点击链接,也可以按照4.1的方式,直接杀到个人设置中,看到有expeired的标记,点之前的设定
进来之后有一个提示,点[regenerate the token]就行
这回偷懒一下,选择“No expiration”。
4.2.3 SSO 授权[Optional]
如果公司是通过SSO授权的,还需要配置并授权,如下:
4.2.4 本地更新token
好了,生成了新的token,本机还是记录旧的,怎么弄呢?按照以下步骤:
- 打开git bash
- 输入指令git remote -v查看当前的路径,可以看到那一串ghp_xxx就是自己之前的token
git remote -v
origin https://[email protected]/xxxx.git (fetch)
origin https://[email protected]/xxxx.git (push)
- 输入命令删掉原先的认证,再跑一次-v就发现没有之前的信息了。
git remote rm origin
git remote -v
- 执行命令
说明,这里的{new token},就是上面git remote -v中看到的旧token的位置,其他的都和之前一样,简单的来说,就是用新的token替换旧的token
git remote add origin https://{new token}@github.com/xxxx.git
4.3 一个git下面有几十个repo,怎么一次性下载。
Linux下,创建sh文件,写入如下命令
命令1
TOKEN=PERSONAL_ACCESS_TOKEN_HERE
curl -s https://$TOKEN@api.github.com/orgs/yourgitname/repos?per_page=100 | grep -e 'clone_url*' | cut -d \" -f 4 | sed "s/https:\/\//&$TOKEN@/" | xargs -L1 git clone
命令2
#!/bin/bash
TOKEN=PERSONAL_ACCESS_TOKEN_HERE
repos=( $(curl -s "https://$TOKEN@api.github.com/orgs/yourgitname/repos?per_page=200&type=all" | jq -r '.[].html_url'))
for repo in ${repos[*]}
do
editrepo=$(echo $repo | sed "s/https:\/\//&$TOKEN@/")
echo $editrepo
git clone $editrepo
done
Windows下,调出git bash,使用cd切换到本地代码根目录。输入以下指令
其中{site} 换成自己的仓库地址,{Token}换成自己的token。{}这两个括号是需要被替换掉的
curl -s https://{Token}@api.github.com/orgs/{site}/repos?per_page=100 | grep -e 'clone_url*' | cut -d \" -f 4 | sed "s/https:\/\//&{Token}@/" | xargs -L1 git clone
写到这里,发觉我对sh和Linux指令不大熟悉,所以另外创建了2篇文章学习,有兴趣的可以参考:
关于Curl指令
https://blog.csdn.net/happyegg/article/details/123840330
关于shell
https://blog.csdn.net/happyegg/article/details/123539013
4.4 github push
github的push原来已经不支持用户名密码提交了,所以前面生成的Access Token就有地方用了。
Push failed
Remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.
解决方案:
- 参照4.1,生成Token并保存下来
- 如果之前已经使用用户名密码登录的话,参照9.2,产出
5. Git 指令集
指令 | 说明 |
---|---|
git init | 在当前目录新建一个Git代码库 |
git init [project-name] | 新建一个目录,将其初始化为Git代码库 |
git clone [url] | 下载一个项目和它的整个代码历史 |
git pull | 拉最新的代码 |
git branch | 查看本地分支,当前分支会用*标记 |
git branch -r | 查看远程分支 |
git branch -a | 查看所有分支(本地和远程),一般不推荐用,而是分别查看本地和远程 |
git checkout 分支名称 | 切换分支 |
|:–|:–|
9. 使用问题汇总
9.1 为什么本地文件add, commnit了,但是没更新到远程仓库?
在git中,添加新的文件,更新远程仓库并不是一个步骤,而是3个步骤,分别如下:
- git add
- git commit
- git push
三个命令的用途如下:
-
git add
将本地项目中的工作文件,提交到暂存区中(仍然是在git的本地缓存目录内) -
git commit
将暂存区中的文件提交到版本库中(此时文件还在本地),以便在本地做版本管理。 -
git push
将本地某个版本的文件,远程仓库下,以便其他人能使用这个已经完成了的项目文件
命令如下:
git add 要提交的文件名
git commit -m "提交的理由"
git push -u origin master
9.2 Git远程仓库输错密码,再次执行命令失败
如果在首次连接远程仓库,输错了用户名密码之后,再次使用命令连接,会直接抛出错误。
E:\com\Self\dadi\dadi001>git clone https://gitee.com/vistajin/dadi-jxc.git
Cloning into 'dadi-jxc'...
remote: [session-0642d79d] happyegg: Incorrect username or password (access token)
fatal: Authentication failed for 'https://gitee.com/vistajin/dadi-jxc.git/'
这种情况下,需要找到git的配置位置来修改或删除。在windows下,都在控制面板进去,各个版本不同可能进入位置不同,大体位置如下:
能修改就修改,不能修改就删除凭证,再运行一次即可
9.3 Github 错误:OpenSSL SSL_read: Connection was reset, errno 10054
当在使用git往github远程仓库push文件时,有可能会出现这个错误。有可能之前是可以正确提交的,用着用着突然就遇到这个error了。
解决方案:
- 到项目根目录(有src, pom的那个目录),鼠标右键,选择“Git Bash Here”
- 在git窗口输入以下语句
git config --global http.sslVerify "false"
10. 参考网址
https://www.cnblogs.com/miracle77hp/articles/11163532.html