Git是目前世界上最先进的分布式版本控制系统。
git 的整体工作流程:
1.clone(克隆): 从远程仓库中克隆代码到本地仓库
2. checkout (检出):从本地仓库中检出一个仓库分支然后进行修订
3. add(添加): 在提交前先将代码提交到暂存区
4. commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本
5. fetch (抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
6. pull (拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于 fetch+merge
7. push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库
git练习小网站:
https://learngitbranching.js.org/?locale=zh_CN
设置用户信息
git config --global user.name “Your Name”
git config --global user.email “[email protected]”
在本地的操作如下图:
首先要将文件git add
到暂存区,然后再git commit
到本地仓库
常用命令
命令 | 含义 |
---|---|
git init | 初始化 |
git status | 查看修改状态 |
git add | 添加工作区到暂存区 |
git commit -m “注释内容” | 提交暂存区到本地仓库 |
git reset --hard commitID | 版本回退 |
git log | 查看提交日志 |
现在文件已经创建好,我们可以通过git status查看状态,如下图:
接下来我们通过git add添加到暂存区,看到下图:
提交到本地仓库:
其中git log 还有其他几个参数
–all 显示所有分支
–pretty=oneline 将提交信息显示为一行
–abbrev-commit 使得输出的commitId更简短
–graph 以图的形式显示
如:
所以我们干脆使用这个,此时为了方便,我们可以设置一个别名:
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
这样以后在git-log
时,就可以得到简短且有用的log信息
一些文件无需添加至git列表,如日志文件,.idea等,这时,可以在工作目录中创建一个名为 .gitignore 的文件
用通配符指明不需要添加的文件,常见的表示有:
# no .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# ignore all files in the build/ directory
build/
命令 | 含义 |
---|---|
git branch | 查看分支 |
git branch 分支名 | 创建分支 |
git checkout 分支名 | 切换分支 |
git checkout -b (新)分支名 | 创建并切换分支 |
git merge 分支名 | 合并分支 |
git branch -d 分支名 | 删除分支(不能删除当前分支) |
(1)创建分支
仓库初始化后就会自动生成一个master分支,可以创建其他分支,git branch b1
(2)切换分支
git checkout b1
就可以切换到b1分支
(3) 合并分支
如果想把b1分支的内容合并到主分支,可以在主分支下运行git merge b1
当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解决冲突,解决冲突步骤如下:
(1)处理文件中冲突的地方
(2)将解决完冲突的文件加入暂存区(add)
(3)提交到仓库(commit)
可以使用码云gitee或github创建,这里以gitee为例:
命令 | 含义 |
---|---|
git remote add <远端名> <仓库路径> | 添加远程仓库 |
git remote | 查看远程仓库 |
git push <远端名> <分支名> | 推送到远程仓库 |
git clone <仓库路径> | 从远程仓库克隆 |
git fetch <远端名> <远程分支> | 将仓库里的更新都抓取到本地 |
git pull <远程名> <远程分支> | 将远端仓库的修改拉到本地并自动进行合并 |
先将本地仓库与远程仓库对应 git remote add
,这里的远端名只是自己去取的一个名字(也可能本地仓库可以对应其他远程仓库,所以取一个名字,通常是origin)
clone克隆,fetch抓取和pull拉取
clone一般只执行一次;
抓取指令就是将仓库里的更新都抓取到本地,不会进行合并;
拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge
都是一些操作上的,这里就不展开了
参考链接:
https://www.bilibili.com/video/BV1MU4y1Y7h5p=8&share_source=copy_web