一.Git安装及环境配置
下载Git https://git-scm.com/,全部默认配置即可
右键Git Bash Here 配置名字和邮箱
git config --global user.name "xx"
git config --global user.email "xx@qq.com"
用 git config --global --list查看
二.Git基本命令
示例
- 在一个文件打开Git Bash,输入
git init
初始化仓库,在该文件会出现一个隐藏文件.git
- 创建一个txt文件,使用
git status
查看状态,可以看到文件处于Untracked
的状态(因为是新建的文件)
- 使用
git add .
将文件提交到暂存区,.
代表所有文件,当然也可以指定文件名提交。可以看到文件的状态变成了No commits ye
t的状态
使用 git commit -m "first commit"
提交到本地仓库, - m “xxx”
指的是本次提交添加的备注信息
以上就把文件提交到了本地仓库
可以通过git log
查看提交日志
修改hello.txt文件,在文件添加hello
再一次查看状态
git add .
提交到暂存区
git commit -m "second time"
提交到本地仓库
git log
查看日志,可以看到两次提交记录
版本回退
git reset --hard commitID
,commitID可以通过git log查看,我们回退到第一次提交的版本
可以看到hello已经没有了
但是版本回退以后又想回去怎么办?使用git reflog
查看所有的日志,找到第二次提交的日志
使用git reset --hard 310dc1b
即可回去
可以看到hello又存在了
三.分支
查看当前分支:git branch
创建新的分支:git branch name
切换分支:git checkout name
创建并切换分支:git checkout -b name
在新的分支上创建一个hi.txt,此时只有dev01分支有此文件
合并分支::git merge name
,我们一般在master分支上合并其他分支
删除分支(删除分支时要切换到其他分支):
git branch -d name
删除分支时,需要做各种检查,比如修改的数据是否合并到了主分支
git branch -D name
不做任何检查,强制删除
分支冲突
主分支的hello文件
新建分支dev git branch dev
切换到dev分支 git checkout dev
,并修改hello.txt
提交到本地仓库,此时master的hello.txt中依旧是hello master,但是dev分支中的hello.txt中为hello dev
切换回master,修改hello.txt
提交到本地仓库
此时master分支、dev分支都对hello.txt文件进行了修改
我们尝试合并,可以发现有冲突提示
查看hello.txt
需要我们手动解决冲突,选择我们想要的数据后,再提交到本地仓库即可
四.推送到Github远程仓库
首先设置Github的SSH Key
https://blog.csdn.net/u013778905/article/details/83501204
添加远程仓库:
git remote add <远端名称> <仓库路径>
远端名称,默认是origin,取决于远端服务器设置
仓库路径,从远端服务器获取此URL
查看远程仓库:git remote
推送到远程仓库:
git push [-f] [--set-upstream] 远端名称 本地分支名:远端分支名
如果远程分支名和本地分支名称相同,则可以只写本地分支
git push origin master
-f 表示强制覆盖
–set-upstream 推送到远端的同时并且建立起和远端分支的关联关系
git push --set-upstream origin master
如果当前分支已经和远端分支关联,则可以省略分支名和远端名
git push 将master分支推送到已关联的远端分支
克隆: git clone <仓库路径> [本地目录]
抓取:git fetch [remote name] [branch name]
抓取指令就是将仓库里的更新都抓取到本地,不会进行合并
如果不指定远端名称和分支名,则抓取所有分支
拉取 :git pull [remote name] [branch name]
拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge
如果不指定远端名称和分支名,则抓取所有并更新当前分支
分支冲突
在一段时间,A、B用户修改了同一个文件,且修改了同一行位置的代码,此时会发生合并冲突。A用户在本地修改代码后优先推送到远程仓库,此时B用户在本地修订代码,提交到本地仓库后,也需要推送到远程仓库,此时B用户晚于A用户,故需要先拉取远程仓库的提交,经过合并后才能推送到远端分
支