这里写目录标题
1 VSCODE Install
下载地址
正常安装
设置中文
在插件中搜索chinese,并且install
快捷键Ctrl + Shift + P打开vscode的命令框,并输入Configure Display Language
选择chinese
C++环境配置
mingw下载不下来的话,从下面的链接里面下。
链接:https://pan.baidu.com/s/1BxeHO-soXjypCTL8FloIYw
提取码:utga
2 Git Introduction
Git 是分布式版本控制系统。
学习地址
可以记录每次文件的改动,还可以一起编辑,还可以查看某次改动
类似这样
实现过程
1:在vscode中新建一个文件 不包含英文 并在终端中切换到对应的界面。如图所示
2:通过git把 目录变成git 可以管理的仓库
事实上 版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
生成.git,其是git用来跟踪仓库的
(在这之前需要先链接账号和github)
3:添加文件
本地库的操作(已经有仓库了)
先进入库 git init
在关联远程库 git remote add origin git@github.com:xxx/GIT_DEMO.git
git add< file > 把文件添加到本地仓库(暂存区):
git commit -m < message > 把文件提交到本地仓库 把暂存区的所有修改提交到分支
如果我们对其进行修改
git status
查看仓库的状态,哪些文件被修改了 还没有准备提交到仓库
git diff
查看具体哪些被修改了
修改完后没有什么问题 那么就可以提交了 其顺序和提交新文件是一样的
git add
git commit
回退和返回
git log
查看最近到最远的提交日志
git reset --hard commit_id
通过id来穿梭各个历史版本
HEAD指向的版本就是当前版本 HEAD^ 上一个版本
要重返未来,用 git reflog
查看命令历史,以便确定要回到未来的哪个版本
你回退之后文件本身就会变
多次修改
多次修改后都要 git add
不然你git commit
的时候只会提交最近一次git add
的文件
撤销修改
- 情况1:没有
git add
和git commit
git checkout -- file
撤销这次的修改,回到最近一次git add
或者git commit
的状态
- 情况2:有
git add
没有git commit
git checkout -- file
暂存区的修改撤销掉(unstage),重新放回工作区: 就是git add
了但是没有commit,此时就回到了上面的情况
- 情况3:
git add
和git commit
了 没有推送到远程库
如果git commit
了,但是还没有推送到远程库,那么可以使用回退和返回 git reset --hard commit_id
来回到之前的
删除文件
你在本地删了文件,git status
可以看哪些文件删了
git rm test.txt
来删除版本库里面的文件
如果删错了 调用git checkout -- file
就可以回来了
推到远程库
首先在你的本地库中运行,实现关联远程库
git remote add origin git@github.com:xxx/GIT_DEMO
origin
就是远程库的默认叫法 xxx是自己的github账户名,
然后就可以把本地库推送到远程库上,
git push -u origin master
把当前分支master推上去,-u是指第一次推送的时候把master和远程的master关联。
后面只要
git push origin master
删除远程库和本地库之间的绑定
git remote rm origin
这不是删掉远程库 要删掉需要 去github端删除。
从远程克隆一个下来
在多人开发中,每个人各自从远程克隆一份就可以了
git clone git@github.com:xxx/xxx.git
3 分支管理
分支就是你要工作的时候创建自己的一个分支,别人看不到的,你可以自己提交,开发完成后合并到原来的分支上。
3.1创建分支与合并分支
每次提交之后,就会产生一条线,我们的head指向这个线
我们可以创建新的分支dev,然后head就指向了开的新分支
对于合并也十分简单,只要把主分支的指针指向dev,并且把dev删掉就可
实战例子
git checkout -b dev//创建一个dev的分支,然后切换到该分支
或者
git switch -c dev
等价于
git branch dev //开新分支
git checkout dev//切换分支
查看分支 git branch
这时候你修改的文件是不会影响 master的。当完成修改后,git add
和git commit
后
把他合并回去
git merge
把指定的分支合并到当前的分支中。
git checkout master //切换到默认分支 新版本的git 使用 git switch -c dev 更加合理 -c是指新的
git merge dev//把dev分支合并到当前分支,就是master
git branch -d dev //删除dev分支
3.2解决冲突
两者都有新提交
解决的办法是:
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容
做法是修改在保存
git add readme.txt
git commit -m "conflict fixed"
git log --graph --pretty=oneline --abbrev-commit
可以查看分支合并的情况
完成后删除feature1分支
git branch -d feature1
另一种办法,就是在合并的时候加上–no-ff的参数
git merge --no-ff -m "merge with no-ff" dev
这样在合并的时候,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
3.3分支策略
3.4Bug分支 储藏现场工作去修复bug
在遇到bug的时候建一个临时分支来解决,此时需要保存目前没有完成的进度
可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作
git stash
在你完成bug修复后。就要回到原来的分支上干活,
git stash list
//查看储存的
有两种办法恢复
git stash apply
+git stash drop
恢复后先不删除 除非调用第二个git stash pop
恢复后把stash删除了
可以多次stash 恢复的时候
git stash list
然后,选择指定的恢复
git stash apply stash@{0}
Bug修改合并到当前的分支
在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick <commit>
命令,把bug提交的修改“复制”到当前分支,避免重复劳动。
3.5feature分支,新功能开发 不想要。想删除分支
-
先开个新分支
git switch -c new_feature
-
git switch dev
切换回dev准备合并,突然不想要了。 -
git branch -D new_feature
new_feature还没被合并,需要强制删除
3.6多人协作
远程仓库克隆时,其实git把本文和远程对应起来。
如果要查看远程仓库的信息
git remote -v
查看详细的远程库信息 显示抓取和推送的权限。
3.7 推送分支
git push origin dev
指定dev分支推送到远程库对应的远程分支上。
3.8哪些需要推送 哪些不需要
3.9抓取分支 开发之前克隆到本地来修改
git clone git@github.com:xxx/GITDEMO.git
此时,只能看到本地的master分支,如果想在dev分支上开发;
git checkout -b dev origin/dev
//创建远程origin的dev分支到本地
这样就可以是不是的修改,并把dev分支push到远端
git add env.txt
git commit -m "add env"
git push origin dev
如果小伙伴已经推送了他的提交,然后我也要提交,那么直接推送是不行的,会冲突
3.10 多人提交冲突解决办法 要求每次都要先pull
先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送:
4标签tag
5 实践
首先在远程建一个仓库,然后 git clone 然后把代码粘过去
远程新建一个分支之后 git checkout -b dev origin/dev
git add --all
然后直接git push dev或者没有第二步骤直接git push dev就可以了
第二次开发的话
git pull <远程主机名> <远程分支名>:<本地分支名>
git add 和commit之后
git push <远程主机名> <本地分支名>:<远程分支名>
如果本地分支名与远程分支名相同,则可以省略冒号:
git push <远程主机名> <本地分支名>