Git使用
Git基本结构
Git命令备忘录
git --version
查看当前安装的git版本
git update-git-for-windows
windows下更新Git
Git托管中心
作用:维护远程库
局域网下
- Gitlab服务器
互联网环境下
- Github
- 码云
代码托管中心和本地库的交互
团队内协作
跨团队协作
实操
本地库初始化
进入开发文件夹,进入此命令行的终端界面
git init
效果:出现隐藏的.git/文件夹。此目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡乱修改。
设置签名
作用:区分不同的开发人员的身份
辨析:这里设置的签名和登录远程库(例如:码云和github)的账号、密码没有任何关系。
项目/仓库级别:仅在当前本地库范围内生效
git config user.name [用户名]
git config user.email [开发者邮箱]
信息保存位置:.git/config
例:
系统用户级别:登陆当前操作系统的用户范围
git config --global user.name [用户名]
git config --global user.email [开发者邮箱]
信息保存位置:~/.gitconfig
例:
级别优先级
就近原则:项目级别优先于系统用户级别,二者都有时采用项目级别的签名。如果只有系统用户级别的签名,就以系统用户级别的签名为准。二者都没有是不允许的
添加提交以及查看状态
状态查看操作
git status
查看工作区、暂存区状态
添加操作
git add [filename]
或者
git add --all
将工作区的"新建/修建"添加到暂存区
提交操作
git commit -m "commit message" [filename]
或者
git commit -m "commit message" --all
将暂存区的内容提交到本地库
版本前进和后退
查看历史纪录
方法1:
git log
多屏显示控制方式:
空格向下翻页
b向上翻页
q退出
git log --pretty=oneline
git log --oneline
git reflog
HEAD@{移动到当前版本需要多少步}
版本前进和后退
HEAD指针指向的是当前版本
基于索引值操作(推荐)
git reset --hard [索引值]
使用^符号
此方法只能后退版本,一个^符号退一步,三步以上用下个方法
git reset --hard HEAD^^^
使用~符号
git reset --hard HEAD~3
~后面的数字是后退的步数,此方法也是只能后退。
reset命令的三个参数对比
git reset --soft [索引值]
此参数仅仅在本地库移动HEAD指针。
git reset --mixed [索引值]
此参数在本地库移动HEAD指针,重置暂存区。
git reset --hard [索引值]
此参数在本地库移动HEAD指针,重置暂存区,重置工作区。
删除文件并找回
git只会增加版本而不会删除任何一个版本。 所以,我们可以通过恢复到没有删除文件的版本恢复文件。
git reset --hard [指针位置]
比较文件差异
git diff [文件名]
将工作区中的文件和暂存区进行比较
git diff [本地库中历史版本] [文件名]
将工作区中的文件和本地库历史记录比较
git diff
不带文件名比较多个文件
分支管理
什么是分支
在版本控制过程中,使用多条线同时推进多个任务。
分支的好处
- 同时并行推进多个功能开发,提高开发效率。
- 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可
分支操作
- 创建分支
git branch [分支名]
- 查看分支
git branch -v
- 切换分支
git checkout [分支名]
- 合并分支
1、切换到接受修改的分支(被合并,增加新内容)上。
git checkout [接受修改的分支名]
2、执行merge命令
git merge [有新内容分支名]
- 解决冲突
当前分支和合并分支同一位置内容不同,就产生了冲突,不知道采用哪一个,需要人为干预。
分支的表现
解决
1、编辑文件,删除特殊符号。特殊符号如下:
2、把文件修改到满意的程度,保存退出
3、git add [文件名]
4、git commit -m "日志信息"
(注:此时commit不一定带具体的文件名)
本地库和远程库交互
创建远程库
创建远程库地址别名
git remote -v
查看当前所有远程地址别名
git remote add 远程库地址别名 [远程地址]
添加远程库
git remote remove 远程库地址别名
删除远程库
推送
git push 远程库地址别名 远程分支名
克隆
git clone [远程地址]
效果:
1、完整的把远程库下载到本地
2、创建远程地址别名
3、初始化本地库
团队成员邀请
被邀请者登录自己的Github账号,访问邀请链接。
拉取
pull=fetch+merge
git fetch 远程库地址别名 远程分支名
git merge 远程库地址别名 远程分支名
git pull 远程库地址别名 远程分支名
fetch 是将远程库的内容仅仅下载到本地
merge 是将远程库的内容与本地库的内容合并
解决远程库和本地库冲突
如果不是基于Github远程库的最新版本所做的修改,不能推送,必须先拉取。
拉取下来后如果进入冲突状态,则按照上面"解决冲突"操作解决即可。
设置git push和pull的默认远程分支
git branch --set-upstream-to=远程库地址别名/远程分支名 本地分知名
示例:
git branch --set-upstream-to=origin/master master
跨团队协作
团队外成员:
1、找到项目,Fork项目
2、本地修改,然后推送到远程库
3、Pull Request
配置表SSH免密登录
1、进入当前用户的家目录
cd ~
[linux]
C:
cd User/[当前系统用户名]
[Windows]
2、运行命令生成ssh密钥目录及文件
ssh-keygen -t rsa -C [远程库邮件地址]
3、进入.ssh目录查看文件列表
cd .ssh/
[通用]
cat id_rsa.pub
[Linux]
notepad id_rsa.pub
[Windows]
4、复制id_rsa.pub文件内容,登录Github,点击用户头像→Settings→SSH and GPG keys
6、输入复制的密钥信息
git remote add [远程库别名] [远程库SSH地址]
8、测试
ssh -T git@github.com
附:如果有以下错误,可以选择忽略或注释掉配置文件(/etc/ssh/ssh_config)中的 RSAAuthentication yes
行