Git与GitHub常用操作

--------------------------基本操作--------------------------
clone 拷贝远程仓库
commit 本地提交
push 远程提交
pull 更新本地
--------------------------初始化Git--------------------------
git init 初始化本地库(<自动创建.git隐藏目录> 不要删除and修改)
ll -lA 查看当前目录的所有文件(包含隐藏文件)及权限
--------------------------设置签名--------------------------
作用:区别不同开发人员的身份(与登录远程库的账号密码没有任何关系)
项目级别->仅在当前本地库范围内有效
git config user.name petch_pro
git config user.email prtch01_pro@qq.com
查看签名:cat .git/config(保存路径)
系统用户级别->登录当前操作系统的用户范围
git config --global user.name petch_glb
git config --global user.email petch01_glb@qq.com
查看签名:cd ~(切换家目录)
cat .gitconfig(保存路径)
优先级:项目级别>系统用户级别(二者最少有一个存在)
--------------------------查看状态--------------------------
git status 查看工作区、暂存区状态
--------------------------添加--------------------------
git add 将工作区的“新建/修改”文件添加到暂存区
--------------------------提交--------------------------
git commit -m "提交信息" 文件名
--------------------------查看历史日志--------------------------
git log 多屏显示历史记录(空格向下翻页、b向上翻页、q退出)
git log --pretty=oneline / git log --oneline 当行显示
git reflog 单行显示(常用)
--------------------------版本切换--------------------------
git reset --hard 索引值 切换历史版本
git reset --hard HEAD^ 退回前一个历史版本(^可以为多个)
git reset --hard HEAD~n 后退n步
--------------------------版本切换的三个参数--------------------------
reset 三个参数对比
--soft -> 仅仅在本地库移动HEAD指针
--mixed -> 在本地库移动HEAD指针,重置暂存区
--hard -> 在本地库移动HEAD指针,重置暂存区and工作区
--------------------------文件删除&找回--------------------------
rm 文件名 删除文件
git reset --hard 指针位置 删除文件并找回
前提:删除前,文件存在时的状态提交到了本地库或暂存区
--------------------------文件比较--------------------------
git diff 文件名工作区的文件和暂存区进行比较
git diff 历史版本(索引值/HEAD^/HEAD~) 文件名工作区的文件和本地库历史进行比较
--------------------------分支操作--------------------------
好处:同时并行推进多个功能的开发,提高开发效率
各个分支开发过程中,如果某一分支开发失败,不会对其他分支造成影响。失败的分支删除重新开始即可。

git branch 分支名 创建分支
git branch -v 查看分支
git branch -a 查看所有分支(远程&本地)
git branch -r 查看所有远程库分支
git checkout 分支名 切换分支
git branch -d 分支名 删除分支

合并分支
1.git checkout 分支名 切换到接收修改的分支 
2.git merge 新内容的分支名
冲突问题
冲突的表现:在不同的分支中同一文件同一行的内容不同时,在自动合并过程中就会发生冲突,需要手动合并
解决冲突:
1.编辑文件删除因为冲突导致系统添加的特殊符号
2.修改文件,保存退出
3.git add 文件名
4.git commit -m "日志信息" (注意:在这里不能加文件名)
--------------------------远程操作--------------------------
git remote -v 查看地址别名
git remote add 地址别名 地址 增加地址别名
git push 地址别名 分支名 推送本地仓库到远程库(前提该GitHub账号是团队成员)
git clone 地址 远程仓库拷贝到本地(带.git目录<自带初始化、自带地址别名、自带用户签名>)

git pull 地址别名 分支名 将远程库拉取到本地
pull = fetch +checkout+ merge
git fetch 远程地址别名 分支名 获取远程分支
git checkout 远程地址别名/分支名 切换本地分支
git merge 远程地址别名/分支名 合并

冲突问题:
1.如果不是基于GitHub远程库的最近版本做的修改,不能推送,必须先拉取
2.拉取下来如果进入冲突模式,则按照“分支冲突解决”即可

跨团队协作:
1.将GitHub链接发送给外援
2.外援打开GitHub链接,并点击fork
3.外援完成自己的工程后,push工程
3.外援到自己的GitHub上,依次点击 Pullrequests->New pull request->Create pull request->编辑消息发送给工程所有人
4.工程所有人登录GitHub,可以与外援对话,点击Commits查看代码(点击Files changed查看修改部分)没问题后,点击 Merge pull request
5.其他人将远程库pull到本地

Git的工作流程

Git与GitHub常用操作