一、Git工作原理
1.什么是git
git是一个分布式的版本控制器,没有中央服务器,可以离线提交
2.工作原理
Git 的工作就是创建和保存你项目的快照及与之后的快照进行对比
- workspace:工作区
- staging area:暂存区/缓存区
- local repository:版本库或本地仓库
- remote repository:远程仓库
3.linux 命令
命令 | 作用 |
---|---|
cd | 进入某个目录 |
cd… | 回退到上一个目录 |
pwd | 显示当前所在的目录路径 |
ls ll | 列出当前文件目录中的所有文件,只不过ll更加详细 |
touch | 新建一个文件,后面跟文件名 |
rm | 删除一个文件,后面跟要删除的文件名;加上-rf,就是强制删除目录 |
mkdir | 新建一个目录,就是新建一个文件夹 |
rm -r | 删除一个文件夹 ,后面跟文件夹名 |
mv | 移动文件,或者是更改文件名称,mv index.html ./aa ,这就是将index.html 移动到./aa 目录下。mv index.html ./aa/bb.html ,这是就是将index.html 移动到./aa 目录下并改名为bb.html |
reset | 重新初始化终端/清屏 |
clear | 清屏 |
history | 查看命令历史 |
help | 帮助 |
exit | 退出 |
# | 表示注释 |
二、第一次提交代码-初始化
1.初始化一个仓库
在指定文件夹内部单击右键选择 Git Bash Here ,就会打开一个命令窗口
输入指令:
git init
初始化一个仓库
2. 创建本地分支并切换到本地分支
git checkout -b local_branch
这里的local_branch 是本地分支的名字(当然,只要命名合法都可以),那么,当你提交代码的时候,远程仓库会自动的创建一个和本地分支同名的分支用来存储你提交的代码,一般来说,仓库都有主分支master,那么就会涉及到分支合并的问题
3.链接远程仓库
git remote add origin [远程仓库地址,git开头或者是http的都行]
这里origin给远程仓库起的别名,一般都是这个名字,不做更改
4. 把本地文件内容推送到缓存区
git add .
. 就代表是全部的意思
5. 将缓存区内容推动到本地分支
git commit -m local_branch
6. 将本地分支的内容同步到远程仓库
git push origin local_branch
三、拉取远程仓库的代码
新建一个文件夹,进去文件里面右击选中Git Bash Here ,打开命令窗口,然后输入命令:$ git clone [个人仓库地址] 回车即可完成
四、非第一次提交代码
1.首先,查看当前文件状态:git status
字体颜色为红色的文件就是在本地被修改的文件
2. 同步远程仓库代码 :git pull
先从服务器上拉取远程代码, 以防覆盖别人代码; 如果有冲突, 先备份别人代码, git checkout
下远程库里最新的代码, 将自己的代码合并进去, 然后再提交代码
具体原因如下:
先 pull 再 push,这是一个好习惯,在团队协作中非常重要。
github/gitee上的项目如果平时只有自己一个人在维护提交代码,那么在每次提交代码时,则不需要先 pull,可以直接push。即使执行了 pull ,也获取不到新内容,更不用担心会覆盖本地文件。
这个习惯主要为了应付一个场景:试想,一个项目在多人协作,你和同事没有事先沟通,同时修改了一个文件,修改完成都要push.这时就会出现一个问题:先push的人提交正常,后push的人会被警告存在冲突。如果强制push,远端仓库会自动合并,保留出现冲突的内容(上一个版本和刚提交的内容都会被保留下来)。这时代码将不能正常运行,其他同事在执行 pull 拉取新代码后会发现无法运行,这就给别人造成了很大的麻烦。
所以,在开发项目时如果是多人协同开发,那么提交代码时一定要先 pull,拉取远端仓库的最新版本,如果存在冲突,仔细校对,在本地处理好冲突内容后再执行 push 提交代码。
3. 提交代码到本地缓存:git add .
git add .
: 将所有内容全部添加到本地git缓存区中git add XXX
: 将部分文件到本地git缓存区
4. 推送代码到本地git仓库 :git commit -m “提交描述,一般都含有提交日期和提交人”
5. 提交本地代码到远程仓库:git push <远程主机名:一般就是origin><远程分支名:也就是你要把代码提交到哪一个分支上去,就写哪一个>
五、获取历史版本的代码
1.先创建好文件夹,然后git初始化
git init
2.找到项目的SSH地址,并赋值到剪切板
ssh地址作为连接的依据
3. 把本地文件夹和远程仓库连接起来:git remote add origin 地址
4. 先把项目拉取下来:git pull origin 分支名
具体的代码在哪一个分支需要看实际情况
5. 查看提交日志:git log --pretty=oneline 使每一个提交都在一行显示,方便阅览
这里有两次提交记录,而第一行就是当前的版本,想要回退到之前的版本,就只需要把对应版本的id(就是前面一串黄色字体)复制一下,然后进行第六步
6. git checkout ID
然后再检查一下:
那么,到此为之,就成功的回退到自己想要的版本了
六、合并分支
使用merge命令合并分支
查看已有分支:
git branch -a
1、目标:将 dev 分支合并到 master 分支
首先切换到master分支上:
git checkout master
2、如果是多人开发的话 需要把远程master上的代码pull下来
git pull origin master
//如果是自己一个开发就没有必要了,为了保险起见还是pull
3、然后我们把dev分支的代码合并到master上
git merge dev
//如果有冲突,手动解决冲突就行。
4、然后查看状态
git status
//上面的意思就是你有1个commit,需要push到远程master上
5、再执行最后的提交命令
git push origin master
然后就可以去gitee上查看是否成功了
七、删除分支
- 本地和远程分支都在:这是最常见的情况了,在这种情况下,我们会先删除本地分支,再删除远程分支。
- 只有本地有(远程仓库中从未出现):也就是在本地创建了分支,但是并没有推送到仓库中,那么,直接删除本地分支即可
- 待更新…
1、删除本地分支
在git中,删除本地分支并不会影响远程仓库中的任何分支。删除本地分支的命令:
先列出所有的本地分支:
git branch
会看到有三个分支,且当前处于master分支,我们要删除 origin/dev 分支,必须切换到除origin/dev之外的其他分支上去,才可以进行删除该分支的操作
切换分支
git checkout 分支名
删除分支
git branch -d <local_branch>
注意,如果分支包含未合并的更改和未推送的提交,则该 -d
标志将不允许删除本地分支。此时,如果你确定了不想要分支的内容,可以使用 -D
替换 -d
来强制删除此分支
再次列出分支,效果在上图中
git branch
git branch -a
这两条命令都可以列出本地分支
2、删除远程分支
列出所有远程分支
git branch -r
origin/HEAD并非分支,它指向远程服务器上的默认分支,即为origin的远程仓库中的HEAD,一般此值的指向不会改变
删除远程分支
git push <remote_name> -d <remote_branch>
其中remote_name 指的就是给远程仓库起的别名,一般都是origin;而remote_branch就是要删除的远程分支的名字
再次查看分支情况
3、清理远程仓库已删除的分支
有时候因为操作不当,直接在远程仓库中删除了分支,而本地仓库还保留着原来的远程分支副本
待更新…(遇到再更新)
八、git 查看-修改个人信息:用户名、密码、邮箱
1. 查看个人信息
git config --list
单独查看用户名
git config user.name
单独查看密码
git config user.password
单独查看邮箱
git config user.email
2. 修改个人信息
修改用户名
git config --global user.name "xxxx"
需要注意的是user.name 和 “xxxx"之间是有空格的
修改密码
git config --global user.password "xxxx"
修改邮箱
git config --global user.email "xxxx"
2. 修改个人信息
修改用户名
git config --global user.name "xxxx"
需要注意的是user.name 和 “xxxx"之间是有空格的
修改密码
git config --global user.password "xxxx"
修改邮箱
git config --global user.email "xxxx"
九、向已有分支的仓库提交代码
首先,新建一个空白文件夹,然后把这个项目中的东西先拉取下来
然后,把需要提交的东西,复制到该文件夹
最后再次提交即可。
不会出错的。这样就会和远程仓库的分支保持一致,不用在本地再建分支,方便快捷。
十、创建本地分支并合并到主分支
默认已经创建主分支master,且远程仓库也已经有主分支
在多人协同开发项目时,主分支只有一个,个人开发者一般在其他分支上进行开发,最后合并到主分支上;当开发一个新模块时,一般会新建一个分支开发,最后合并
创建一个名为tabbar的本地分支
git checkout -b tabbar
开发完成后,将本地的tabbar分支内容提交到本地
git add .
git commit -m "完成了 tabBar 的开发"
将本地tabbar的内容推送到远程仓库保存;这样远程仓库就会也生成一个tabbar分支并保存推送的内容
git push -u origin tabbar
切换到master分支上,然后将本地的 tabbar 分支合并到本地的 master 分支:
git checkout master
git merge tabbar
将合并后的本地master主分支内容推送到远程仓库中的master主分支中
git push
查看目前所存在的本地分支,应该已经在主分支master上了
git branch
删除tabbar分支(必须在非删除的分支上才能对其进行删除)
git branch -d tabbar
完成以上之后,本地只剩下主分支,而远程仓库中有最新的主分支和分支