文章目录
git 的使用
Git是一款源代码管理工具(版本控制工具);想要使用首先要下载安装包进行安装,傻瓜式的一路 next 就行。
提交代码步骤(提交到本地仓库)
git init
初始化 git 仓库git status
查看文件状态git add <fileList>
追踪文件(<fileList> 文件列表)git commit -m '提交信息'
向仓库提交代码git log
查看详细提交记录
初始化 git 仓储
-
在项目根目录下执行初始化 git 仓库命令(右键选择 “Git bash hare” 输入命令)
git init
执行完该命令后会在项目的根目录下生成一个
.git
文件夹,该文件夹默认是一个隐藏的文件夹。
补充:
- 清屏命令:
clear
设置用户信息
在使用 git 时,需要告诉 git 提交代码时的提交人姓名和邮箱;每一次提交都会把当前提交者的信息存储起来
-
设置用户名
# <userName> 提交代码的用户名 git config --global user.name "<userName>"
-
示例
git config --global user.name "zimu"
-
-
设置邮箱
# <Email> 用户的邮箱 git config --global user.email "<Email>"
-
示例
git config --global user.email "zimuli163@163.com"
-
修改用户信息
直接再次执行相关命令即可
例如:git config --global user.name zimu-li
-
也可以在 C 盘中的当前系统用户文件夹中查找
.gitconfig
文件,可在该文件中修改、配置提交代码的用户和邮箱 -
配置完成后,该 git 用户再提交代码时就不用再配置用户信息了
查看相关的配置信息(包含提交的用户和email):
-
执行如下命令
git config --list
将代码存储到 .git 仓库中
-
将文件放至仓库门口(暂存区)
# 将指定的文件放至仓库门口;<fileName> 文件名称 git add ./<fileName> # 将所有文件放至仓库门口 git add ./
-
将仓库门口的文件放至仓库的某个房间中(版本库)
git commit -m "对本次添加的文件进行说明的内容"
-
查看文件提交状态
git status # 显示绿色 "modified: <File Name>" 消息提示时,表示文件提交到了暂存区 # 显示红色 "modified: <File Name>" 消息提示时,表示文件已修改但未提交
-
直接将所有修改后的文件放至仓库房间中
git commit --all -m "对本次添加的文件进行说明的内容"
-
修改最近一次提交的说明
git commit --amend -m "说明内容"
如果添加提交说明,会进入 vi 编辑器,没有写提交说明提交是不成功的。
-
退出 VIM 模式
-
执行命令
:x
-
强行退出 VIM,被更新的内容不写回文件中
:q! # 或 :quit
-
查看文件的不同
-
查看工作区与暂存区的不同
git diff
-
查看暂存区与仓库区的不同
git diff --cached
-
查看工作区与仓库区的不同,HEAD 表示最新的那次提交
git diff HEAD
-
查看两个版本之间的不同
# version 为版本号 git diff <version1> <version2>
撤销
-
用暂存区中的文件覆盖工作目录中的文件
# 执行该命令后,暂存区中的文件会覆盖项目目录中对应的文件 git checkout <fileName>
-
将文件从暂存区删除
git rm --cached <fileName>
查看本地仓库文件
-
查看本地仓库中提交的文件列表
dir
查看提交日志
-
查看详细的提交日志
git log
退出查看: 按一下
q
键即可 -
查看简洁版的日志
git log --oneline
回退到历史版本
-
回退到上一次提交的状态
git reset --hard Head~0 # 执行该命令后,在编辑器中聚焦文件进入编辑状态,就会回退到上一次提交的版本
-
回退到上上次提交的状态
# ~0 表示回退到上一次状态, ~1 表示回退到上上次的状态,以此类推。。。 git reset --hard Head~1
-
回退到指定版本
git resetf --hard <Version Number> # <Version Number> 是简洁版日志输出的版本号
-
再次打开命令窗口时,查看以前所有提交的版本号
git reflog
分支的使用
默认有一个主分支 master
-
查看当前的所有分支
git branch
-
创建分支(在创建的分支提交的文件不会影响主分支)
git branch <branchName> # 刚创建的分支里的东西和 master 主分支里的东西是一样的;<branchName> 分支名称
-
切换分支
git checkout <branchName>
-
创建并切换分支
git btanch -b <branchName>
-
合并分支
将指定的分支与当前分支的内容进行合并(一般在主分支上进行合并)
查看当前分支:执行
git branch
命令输出的分支中带 “*” 号的分支git merge <branchName>
-
合并分支冲突处理
- 在 master 主分支中修改代码并提交保存了,在 test 分支中也修改了该文件并提交保存了;两个分支合并时就会发生冲突,此时就需要手动处理,决定保留哪次提交的代码;处理后需要再提交一次文件。
- 两个开发人员在上传代码时,都修改了相同的文件,也需要手动修改代码,解决冲突后再提交。
-
删除指定分支(无法删除当前使用的分支)
git branch -d <branchName>
-
无法删除当前使用的分支;被删除的分支如果未被合并,默认情况下是不允许删除的
-
强制删除分支
git branch -D <branchName>
-
暂时保存更改
在 git 中,可以暂时提取分支上的改动并进行保存,可以让开发人员拥有一个干净的工作副本,临时转向其他分支工作
-
存储临时改动:
git stash
-
恢复改动(类似于将剪切板中的内容恢复到当前分支上):
git stash pop
git 的存储功能是独立于分支的,在其他分支上执行恢复命令时,会将改动恢复到其他分支上;所以在执行恢复命令时一定要确保当前分支是否正确。
忽略清单
在开发过程中有些文件不需要被 git 管理,这时就需要通过忽略清单来忽略这些文件;在项目的根目录下创建一个 .gitignore
文件,将需要忽略的文件或文件夹记录在该文件中即可,在提交时就会忽略对应的内容。
.gitignore
# 忽略 node_modules 文件夹
node_modules
# 忽略 test.html 文件
test.html
# 忽略,忽略文件本身
.gitignore
Github 的使用
注册用户、上传项目
-
登录官网:https://github.com 进行注册
- 可以通过 git 将代码上传到
Github
网站
- 可以通过 git 将代码上传到
-
在 Github 上创建一个仓库,用于存储上传的项目(记住仓库的地址,例如:https://github.com/zimu-li/test.git)
-
在 git 命令窗口,输入上传命令
# <httpRepositoryAddress> 仓库地址 git push <httpRepositoryAddress> <branchName> # 例如 git push https://github.com/zimu-li/test.git master 将当前 git 分支中的内容上传到 Github 的 master 分支中
注意: 第一次上传时需要输入
Github
用户名和密码。
命令简写
-
添加远程仓库的关联
git remote add <Repository Name> <Repository Address> # 例如 git remote add origin git@github.com:zimu-li/testSSH.git
<Repository Name>
仓库地址别名<Repository Address>
远程仓库地址
执行上面命令后,在当前项目下再执行命令时,写远程地址的位置改成 origin 即可。
-
删除远程仓库的关联
git remote remove <Repository name>
-
再简写
git push -u <Repository name> <remote Branch Name> # git push -u origin master
- 使用 -u 会记住当前远程仓库地址和分支
将本地的 master 分支推送到 origin 主机,同时指定 origin 为默认主机,后面就可以不加任何参数直接使用
git push
即可。注: 当远程仓库中的版本高于本地仓库中的版本时,本地仓库是不能向远程仓库进行代码提交的(必须要先 pull 再 push)。
克隆远程仓库
-
新建一个文件夹,在该文件夹下执行克隆命令
git clone <Repository Address>
<Repository Address>
仓库地址
将项目从服务器 pull 到本地
-
将远程的项目拉至本地(本地要初始化一个仓储)
git pull <httpRepositoryAddress> <branchName> # 例如 git pull https://github.com/zimu-li/test.git master 将远程的 master 分支中的内容拉到本地
-
将远程的仓库克隆至本地
git clone <httpRepositoryAddress> # 会得到远程仓储相同的数据,如果多次执行会覆盖本地内容。 # 完全克隆远程仓库,一般在第一次加入项目时使用
团队协作
自己的远程仓库,别的开发人员默认是无法向该仓库提交文件的(需要相关的权限)
需要当前项目的所有者,邀请别人成为该项目的开发者
-
在 GitHub 上进入自己的项目,点击当前项目的 Settings 选项
-
选择 Options 下的 Collaborators 选项
-
在输入框中输入被邀请人员的 GitHub 账号,然后点击 Add collaborator,该成员就会被添加到 协作者 中;
-
点击后,GitHub 会向被邀人员发送邀请邮件,被邀人员同意后才能进行代码提交
-
还可以直接将邀请链接复制给被邀请的人员,被邀请人员同意后就能进行代码提交
非团队协作
向其他仓库贡献代码
场景:开发人员 B 使用了开发人员 A 开发的库,使用时发现库功能不完善,B 将其代码修改后提交给了原仓库的作者 A,A 就可以将代码合并到自己的仓库中。
步骤:
-
首先需要复制原作者仓库的地址,然后粘贴在自己账号的地址栏中(访问别人的仓库);
-
点击
Fork
按钮,将其仓库复制到自己的 GitHub 账号中; -
将该远程仓库克隆到本地,进行修改,修改完成后再推送到自己复制的远程仓库中;
-
向原作者发送代码修改请求
-
点击仓库的
Pull requests
选项,然后点击New pull request
按钮,创建一个新的 request 请求 -
在新的选项页中再点击
Create pull request
按钮确认创建一个新的请求 -
点击以后在页面中可以与原作者进行对话,可以为本次对话起一个主题,并在消息框中输入消息,输入完成后点击
Create pull request
即可将消息及修改的代码发给仓库的原作者(在对话框的下方也可以看到自己添加的内容) -
点击发送后,原作者在仓库中的
Pull requests
菜单项上会有消息提示,点击后即可看到一条新的数据 -
点击这条新的数据原作者即可看到代码贡献者发过来的消息内容,在页面的下方,原作者还可以进行消息回复
-
代码贡献者收到消息后同样可以回复,然后就可以愉快的聊天了。
-
原作者点击
File changed
即可查看修改的内容,确认无误后就可以进行代码合并了 -
点击
Conversation
选项,找到下方的Merge pull request
按钮,点击进入下一步操作 -
输入提交信息(相当于 git 命令
git commit -m
后面的提交信息),点击Confirm merge
确认合并,回到代码仓库中,即可进行查看 -
总结过程
- 开发人员
Fork
原作者仓库 - 再将远程仓库克隆到本地进行代码修改
- 开发人员将本地仓库中的内容
push
到Fork
的远程仓库 - 开发人员发起
pull request
请求 - 原作者进行审核
- 原作者合并代码
- 开发人员
-
通过 ssh 的方式上传代码(免登录)
-
创建一个 SSH key ,执行命令 (任意目录下)
ssh-keygen -t rsa -C "tangyuan@qq.com"
参数说明:
-t
指定密钥类型,默认是rsa
,可以省略。-C
设置注释文字,比如邮箱。-f
指定密钥文件存储文件名;若省略了 -f 参数,运行条命令后会要求输入一个文件名,用于保存刚才生成的 SSH key 代码;可以不输入文件名,使用默认文件名(推荐),那么就会生成id_rsa
和id_rsa.pub
两个秘钥文件。- 接着又会提示输入两次密码(该密码是 push 文件的时候要输入的密码,而不是
github
管理者的密码),当然,也可以不输入密码,直接按回车。那么push
的时候就不需要输入密码,直接提交到github
上了。
-
将 SSH Key 添加到
github
上-
进入当前用户的 .ssh 目录下(此电脑 --> 用户 --> ‘当前使用该电脑的用户’ --> .shh --> id_rsa.pub),找到
id_rsa.pub
文件(公钥),将其内容复制下来(切勿修改)。 -
登录
github
官网,点击右上角的设置(点击用户头像,选择 Settings),然后选择左侧的SSH and GPG keys
,点击右侧的New SSH Key
按钮,进入添加页面,添加 SSH Key。 -
将复制的 SSH key 代码粘贴到 key 所对应的输入框中,切记 SSH key 代码的前后不要留有空格或者回车。上面的 Title 所对应的输入框可以输入一个该 SSH key 显示在 github 上的一个别名。默认的会使用计算机用户名。
-
添加完成后,回到仓库 Code 界面,点击
Clone or download
按钮,再点击Use SSH
,然后复制新的地址执行相关 git 命令操作
-
-
上传代码
-
在项目的根目录下打开命令窗口,执行上传命令
git pust <SSH Repository Address> <Branch Name> # 例如 git push git@github.com:zimu-li/Git.git master 将当前 git 分支中的内容上传到 Github 的 master 分支中
-
-
下拉代码
git pull <SSH Repository Address> <Branch Name>
注意: 一定要先
pull
再push
git 忽略清单
在开发过程中有些文件不需要被 git 管理,可以在项目根目录下创建 .gitignore
文件,将不需要被 git 管理的文件的文件名或文件夹的名称添加到该文件中即可(忽略文件本身也可以被忽略);在执行 git 命令的时候,git 就会忽略这些文件。
示例:
# 忽略 node_modules 文件夹
node_modules
# 忽略 test.html 文件
test.html
# 忽略,忽略文件本身
.gitignore
为仓库添加说明
在项目的根目录下创建一个 readme.md
文件,在该文件中使用 markdown
语法添加一些说明内容;添加完成后 push
到远程仓库即可。
在本地切换 GitHub 账号
第一次通过 git 命令向 GitHub 提交代码时会提示填写 GitHub 账号,填写成功后即可通过远程仓库的地址将本地的代码提交到远程仓库中;有时需要将本地的代码提交到其他账号的远程仓库中,这时就需要修改本地保存的 GitHub 账号
win10 修改步骤:
-
点击开始打开设置,在搜索框中搜索 “控制面板”,点击进入控制面板
-
进入控制面板后,将查看方式改为 “大图标” 方便查看,在控制面板中查找 “凭据管理”
-
点击进入管理的凭据然后选择 “windows” 凭据,删除 “普通 windows 凭据” 下的 github 凭据即可
-
删除后,再进行代码提交时就会提示输入 GitHub 的账号和密码,此时就可以切换账号了