6Git常用命令
命令名称 命令作用
git init 初始化本地库
git config --global user.name 用户名 设置用户签名的用户名部分
git config --global user.email 邮箱 设置用户签名的邮箱部分
git status 查看本地库状态
git add 文件名 添加到暂存区
git commit -m “日志信息” 文件名 提交到本地库
git reflog、git log 查看历史记录
git reset --hard 版本号 版本穿梭
HEAD -> master:记录指针移动的位置
7Git命令详解
7.1初始化本地库
7.2设置用户签名
7.2.1说明
签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。
※注意:这里设置用户签名和将来登录GitHub(或其他代码托管中心)的账号没有任何关系。
7.2.2操作
全局范围的签名设置:
7.2.3查看本地库状态检测到未追踪的文件
7.3
7.3.1检测到有新建的文件添加到了暂存区
7.3.2提交完成后查看状态
git commit good.txt
7.3.3检测到工作区有文件被修改
7.3.4工作区的修改添加到了暂存区
7.3.5产生冲突
7.3.6把冲突文件修复后添加到暂存区
7.4将工作区的修改添加到暂存区
7.5将暂存区的修改提交到本地库
7.6查看历史版本
7.6.1git reflog
7.6.2git log
7.6.3git log --pretty=oneline
7.7版本穿梭
7.7.1版本后退
7.7.2版本前进
7.7.3底层其实是移动HEAD指针
8分支操作
8.1实际开发流程
8.2分支概念
在使用版本控制工具开发的过程中,同时推进多个任务
8.3分支的好处
同时并行推进多个功能开发,提高开发效率
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
8.4分支操作
命令名称 作用
git branch 分支名 创建分支
git branch -v 查看分支
git checkout 分支名 切换分支
git merge 分支名 把指定的分支合并到当前分支上
8.5分支操作详解
8.5.1创建分支和切换分支图解
master、hotfix其实都是指向具体版本记录的指针。当前所在的分支,其实是由HEAD决定的。
所以创建分支的本质就是多创建一个指针。
HEAD如果指向master,那么我们现在就在master分支上。
HEAD如果执行hotfix,那么我们现在就在hotfix分支上。
所以切换分支的本质就是移动HEAD指针。
8.5.2创建分支和切换分支的操作截图
8.5.3在两个不同分支分别做不同修改图解
8.5.4在两个不同分支分别做不同修改操作截图
8.5.5合并分支图解
合并分支时一定是涉及到两个分支。这两个分支一个是“当前所在分支”,一个是“目标分支”。
命令写法:git merge 目标分支
所以分支合并命令的本质就是把“目标分支”合并到“当前分支”。
例如:把hotfix合并到master
git merge hotfix
需要确保当前所在的分支是master
例如:把master合并到hotfix
git merge master
需要确保当前所在的分支是hotfix
8.5.6合并分支操作截图
8.6分支合并时产生冲突
8.6.1冲突产生的表现
<<<<<<< HEAD
Hello Git!I am very happy! &&&&&&&&&&&&
Hello Git!I am very happy!
=======
表示HEAD指针指向的位置在冲突中的内容
=======
Hello Git!I am very happy!
Hello Git!I am very happy! ************
>>>>>>> hotfix
表示hotfix指针指向的位置在冲突中的内容
8.6.2冲突产生的原因
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容。
8.6.3冲突的解决
①编辑有冲突的文件,删除特殊符号,决定要使用的内容
②添加到暂存区
③执行提交(注意:使用git commit命令时不能带文件名)
9GitHub操作
9.1创建远程库
9.2远程库操作
9.2.1创建远程库地址别名
git remote -v 查看当前所有远程地址别
git remote add 别名 远程地址
$ git remote add origin https://github.com/445241233/good.git
9.2.2推送
git push 别名 分支
9.2.3克隆
git clone 远程地址
远程地址查询:
克隆后效果
切换账号时
9.2.4邀请加入团队
9.2.5拉取
git pull 远程库地址别名 远程分支名
9.3跨团队协作
先修改文件
再提交,相当于命令行,commit+push。
此时,再切换回项目创建人账号:
10SSH登录
进入当前用户的家目录
$ cd ~删除.ssh目录
$ rm -rvf .ssh
运行命令生成.ssh密钥目录
$ ssh-keygen -t rsa -C atguigu2018ybuq@aliyun.com
[注意:这里-C这个参数是大写的C]
进入.ssh目录查看文件列表
$ cd .ssh
$ ls -lF
查看id_rsa.pub文件内容
$ cat id_rsa.pub
复制id_rsa.pub文件内容,登录GitHub,点击用户头像→Settings→SSH and GPG keys
New SSH Key
输入复制的密钥信息
回到Git bash创建远程地址别名
git remote add origin_ssh git@github.com:atguigu2018ybuq/huashan.git
修改文件,提交到本地库
推送文件进行测试
报错,因为本地不是最新版本。
所以要先pull
11配置Git忽略文件
11.1哪些文件要忽略?
11.1.1Eclipse特定文件
11.1.2IDEA特定文件
11.1.3Maven工程的target目录
11.2为什么要忽略它们?
与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽IDE工具之间的差异。
11.3怎么忽略?
11.3.1创建忽略规则文件
这个文件的存放位置原则上在哪里都可以,为了便于让~/.gitconfig文件引用,建议也放在用户家目录下
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml
11.3.2在.gitconfig文件中引用忽略规则文件
[user]
name = peter
email = peter@atguigu.com
[core]
excludesfile = C:/Users/Lenovo/xxx.ignore
注意:这里要使用“正斜线(/)”,不要使用“反斜线(\)”
12在IDEA中使用Git
12.1定位Git程序
12.2初始化本地库
在当前工程目录下可用打开命令行操作
12.3添加到暂存区
12.4提交到本地库
12.5创建分支
12.6切换分支
在IDEA窗口的右下角
12.7合并分支
12.8解决冲突
在和远程库交互过程中也有可能发生冲突,因为解决办法一样,所以这里按照分支操作过程中产生的冲突来演示。
12.8.1冲突的产生
仍然是同一个文件在同一个位置有不同内容。
12.8.2合并分支
12.8.3看到冲突提示
这里可以直接点“Accept Yours”或者“Accept Theirs”来解决冲突。这代表完全使用我们的内容或完全使用他们的内容。
如果我们想要详细修改冲突内容则点击Close。此时IDEA会提示Resolve
12.8.4冲突的表现
12.8.5点击Resolve
点击Merge…
根据需要调整完成后点击“Save changes and finish merging”
然后提交到本地库就好啦!
13在IDEA中连接GitHub
13.1保存GitHub账号
13.2分享工程到GitHub
13.3Clone
13.4Push
13.5Pull