安装好Git后有如下的几个程序:
- Git CMD:Git的Bash基于CMD开发的,在原有的基础上增添了新的一些命令和功能。
- Git GUI:GUI顾名思义就是用户可视化界面,是Git Bash的代替品,除了这个还有GitHub Destop桌面客户端的形式来操作Git仓库
- Git Bash:Git Bash是命令行操作,对命令熟悉的人来说,使用这种方式效率最高
使用:
打开Git Bash后,需要设置用户名和邮箱
git config --global user.name "Your Name"
git config --global user.email "email@xxx.com"
操作本地仓库
1、找到需要操作的文件夹目录下,右键打开Git Bash,或者先打开Git Bash,然后cd进相应目录
一些基础命令:
ls 查看当前文件夹
cd 切换目录
mkdir 新建文件夹
rm -r 删除文件夹
touch 新建文件
rm -f 删除文件
-r表示直接删除不需要确认,-f只用于删除文件夹,表示递归删除(删除包含的子目录子文件)
2、初始化本地仓库
git init
3、建立于git远程仓库的链接
有两种链接,一种是git链接,也就是ssh链接,只有仓库的主人才可以使用的连接方式;另一种是http链接,项目成员可以使用的链接
4、赋值相应的链接,打开git Bash,输入命令
git remote add +名字+链接地址
4.1查看已经链接的远程仓库
git remote -v
一个push一个fetch,就是一个把代码推到远程仓库,一个把代码从远程仓库取回来。这两个一定是成对存在的
4.2删除远程仓库的链接
git remote remove +名字
5、文件上传
5.1 git add 将数据存入缓存区
git add +文件名.文件后缀 +文件名.文件后缀 ,将文件加入缓存区
git add +文件夹/*.后缀 ,将文件夹下的所有该后缀的文件加入缓存区
git add +*z ,将以z结尾的文件加入缓存区
git add +trader* ,将以trader开头的文件加入缓存区
git add -u ,提交被修改和被删除的文件,但不包括新文件
git add . ,提交被修改和新的文件,但不包括被删除的文件
git add -A ,提交所有的变化
5.2 git commit 将当前缓存区的文件实际保存到仓库的历史记录中,并添加一条备注(一般描述修改的内容)
git commit -m "注释" 加了-m就直接完成添加注释,否则会进入vim编辑器
5.3 git push 推送本地仓库数据到远程仓库
git push -u 仓库名称 分支 -u表示将本地分支matser与远程同名分支连接起来
仓库名称:也就是之前链接远程地址时候的仓库名origin(自拟)
分支:有一个默认的主分支master,所以直接写master。项目成员可以建立自己的分支,便于之后代码的合并
若推送失败可以强制推送
git push origin master -f
使用这个语句后,可能会导致远程仓库的数据被覆盖
5.3.1Git分支的作用:
在进行多人协同开发的时候,为了防止互相干扰,提高协同开发的体验
主分支:
在初始化本地仓库的时候,Git默认已经帮我们创建了一个名字叫做master的分支,称为主分支。作用是用来保存和记录整个项目已完成的功能代码,因此不允许程序员直接在master分支上修改代码,容易导致整个项目奔溃,因此需要在自己负责开发的分支上进行开发
功能分支:
由于编程人员不能直接再master分支上进行功能开发,所以就有了功能分支的概念,指的是专门用来开发新功能的分支,它是临时从master分支上分叉出来的,当新功能开发且测试完毕后,再合并到master分支上
5.3.2分支操作
查看分支列表
git branch
分支列表中,前面带有*号的分支,代表是当前分支
创建新分支
git branch 分支名称
切换分支
git checkout 分支名称
创建并切换分支
#-b表示创建新分支
git checkout -b 分支名称
合并分支
git checkout master #切换到master分支
git merge 分支名称 #通过merge命令,将分支合并到master分支上
删除分支
git branch -d 分支名称
合并分支时遇到冲突
在两个分支中对同一个文件进行了不同的修改,Git就没法完美的合并。此时需要打开产生冲突的文件,手动解决冲突。然后再git add、git commit、git merge
查看有冲突的文件
git diff
冲突的代码出现了
<<<<<<< HEAD
=======
>>>>>>> branch1
======号表示分割线
<<<<<号到======号之间表示当前分支内容
======号到>>>>>号之间表示分支合并进来的内容
接下来我们就要自己手动整合到一起了,把不需要的删除就好了
将本地分支推送到远程仓库
#-u表示链接本地分支和远程分支,所以只需要在第一次push时使用
git push -u 远程仓库的名称 本地分支名称:远程分支名称
例子:
git push -u origin localbranch1:remotebranch1
不是第一次将本地分支推送到远程仓库,则使用以下命令:
#切换到要推送的分支后直接git push就可以将本地分支推送到远程仓库的远程分支
git checkout branch1
git push
查看远程仓库的所有分支列表
git remote show +远程仓库名称
跟踪分支
指的是从远程仓库中,把远程分支下载到本地仓库中
git checkout 远程分支名称
#如果要将下载到本地的本地分支重命名(不重命名的话,默认和远程分支重名
git checkout -b 本地分支名称 远程仓库名称/远程分支名称
#单纯重命名分支
git branch -m oldBranchName newBranchName
拉取远程分支的最新代码
#将远程分支拉取到本地分支
git pull
git pull = git fetch+git merge
删除远程分支
git push 远程仓库名称 --delete 远程分支名称
查看提交记录
git log
git log --graph
git log --graph --pretty=online --abbrev-commit #查看更详细的信息
分支使用策略:
主分支(默认创建的Master分支)只用来分布重大版本(对于每个版本可以创建不同的标签,以便于查找);
日常开发应该在另一条分支上完成,可以取名为Develop;
临时性分支,用完后最好删除,以免分支混乱。如:
功能(feature)分支
预发布(release)分支
修补bug(bug)分支
多人开发时,每个人还可以分出一个自己专属的分支,当阶段性工作完成后应该合并到上级分支。
分支误删后恢复
使用git log 查出分支的提交号。
git branch 分支名称 提交号
6.git stash 应用场景
我们有时会遇到这样的情况,正在dev分支开发新功能,做到一半时有人过来反馈一个bug,让马上解决,
但是新功能做到了一半你又不想提交,这时就可以使用git stash命令先把当前进度(工作区和暂存区)保存起来,
然后切换到另一个分支去修改bug,修改完提交后,再切回dev分支,使用git stash pop来恢复
7.版本回退
git reset --hard commitID
8.查看已经删除的
log git reflog
9.添加文件至忽略列表,新建.gitignore文件,向其中添加要忽略的文件或者目录
touch .gitignore
10.公钥
生成SSH公钥
ssh-keygen -t rsa
查看公钥
cat ~/.ssh/id_rsa.pub
将公钥添加至远程账户,然后验证公钥是否设置成功
ssh -T git@gitee.com