git 安装 基本操作(add commit 分支合并 冲突解决)
一、安装 (mac和windows差别不大)
由于换了mac,下面介绍mac的安装
1.终端输入 git ,查看是否已经安装git
2.设置username和email
git config --global user.name "test" git config --global user.email "88888888@qq.com"
3.通过终端命令创建ssh key
ssh-keygen -t rsa -C "88888888@qq.com"
4.配置id_rsa.pub 公钥到github或者gitlab
通过 open .ssh/id_rsa.pub 或者 cat .ssh/id_rsa.pub 打开文件,复制公钥,然后在github或者gitlab上配置
一般步骤:1.点击settings,在个人信息里,可以找到New SSH key,然后把你的公钥添加上去
5.链接验证
ssh -T git@github.com
二、基本操作
1.克隆项目 add commit pull push
a:复制ssh地址,然后在你想要复制项目的地方,执行git clone ssh地址
例如:
git clone git@github.com:wenmobo/LearnGit.git
b: 把文件添加到git进行管理,git add
提交文件,git commit
拉取远程仓库文件 git pull
push本地commit到远程仓库 git push
三、git 创建仓库 add commit
1.初始化一个Git仓库,使用git init
命令。
2.添加文件到Git仓库,分两步:
- 使用命令
git add <file>
,注意,可反复多次使用,添加多个文件; - 使用命令
git commit -m <message>
,完成
四、版本回退
1.HEAD
指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
。
2.穿梭前,用git log
可以查看提交历史,以便确定要回退到哪个版本
3.要重返未来,用git reflog
查看命令历史,以便确定要回到未来的哪个版本
五、工作区和暂存区
git status 可以查看当前的状态
可以简单的理解git add 是把文件先添加到暂存区stage ,git commit 之后才把文件提交到分支或者master上。commit之后如果没有其它修改,那么stage暂存区就是干净的
六、修改
1.每次修改就是修改了工作区的文件。如果没有git add 那么就没有把文件提交到暂存区,如果2次修改,第一次git add,第二次没有执行git add 添加到暂存区,那么使用git commit的时候,第二次修改不会被提交到仓库
2.可以使用git diff HEAD -- readme.txt
命令可以查看工作区和版本库里面最新版本的区别
七、撤销修改
1.当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
切记加上-- .会回退到git add 或者git commit的文件
git checkout -- readme.txt
2.当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>
,就回到了场景1,第二步按场景1操作
git reset HEAD readme.txt
八、删除文件
1.git rm test.txt 删除文件,并且git commit 那么文件会被删除
2.如果发现删除出错,可以通过git checkout -- test.txt 恢复文件
九、添加远程库
1.要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
;
2. 关联后,使用命令git push -u origin master
第一次推送master分支的所有内容
3.此后,每次本地提交后,只要有必要,就可以使用命令git push origin master
推送最新修改
十、从远程库克隆
1.要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone
命令克隆 Git支持多种协议,包括https
,但ssh
协议速度最快
git clone git@github.com:michaelliao/gitskills.git
十一、创建和切换分支
Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
或者git switch <name>
创建+切换分支:git checkout -b <name>
或者git switch -c <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
十二、git pull 冲突的解决方式 可以参考https://www.cnblogs.com/zjfjava/p/10280247.html
1. 忽略本地修改,强制拉取远程到本地
git fetch --all
git reset --hard origin/dev
git pull
2.未commit先pull,视本地修改量选择revert或stash
修改量小:-> revert(把自己的代码取消) -> 重新pull -> 在最新代码上修改 -> [pull确认最新] -> commit&push
修改量大:-> stash save(把自己的代码隐藏存起来) -> 重新pull -> stash pop(把存起来的隐藏的代码取回来 ) -> 代码文件会显示冲突 -> 右键选择resolve conflict -> 打开文件解决冲突 ->commit&push
3.已commit未push,视本地修改量选择reset或直接merge
修改量小:
-> reset(回退到未修改之前,选hard模式,把自己的更改取消) -> 重新pull -> 在最新代码上修改 -> [pull确认最新] -> commit&push
修改量大:
-> commit后pull显示冲突 -> 手动merge解决冲突 -> 重新commit -> push