知识点
0.从工作区提交到暂存区就是一个版本。git push是从本地推送到云端仓库
1.git restore --stage 文件名 :作用是将暂存区的文件从暂存区撤岀。但不会更改文件
(还会管理该文件)
git restore 文件名: 将工作区的更改撤销,更改了文件。(删除的时候是恢复文件,回滚。下面有个例子)
git rm --cached XX:将文件从仓库索引目录中删掉
(Untracked files 不会管理该文件; git add 文件 :恢复管理该文件,提交到暂存区)
git reset --hard HEAD^ 或 git reset --hard HEAD~:将代码库回滚到上一个版本.(这个回滚也是将暂存区的回滚)
2. git log --pretty=oneline: 查看当前分支的所有版本,显示成一行
3.git reset --hard 版本号:回滚到某一特定版本;版本号指的是用git log查看到的commit后面的前7位哈希值。
4.如何在tmux里面复制?
5.git add XX:将XX文件修改到暂存区;这里的“修改”指的是添加、删除等操作,不限于添加。
例子:工作区有b.txt ,暂存区有a.txt b.txt c.txt
git add .后,暂存区会只剩b.txt(删除了暂存区的a.txt c.txt)
如果git restore --stage a.txt ,此时暂存区会有a.txt b.txt(恢复暂存区a.txt)
接着再git restore a.txt 这时工作区就会有a.txt b.txt(也就是在工作区恢复了a.txt)
6.分支合并失败,文件里面状况(假设有master和dev2分支):
<<<<<<<<<<<<<<<HEAD
这部分内容就是当前分支的内容(HEAD当前分支)
==============
这部分内容就是dev2分支的内容
>>>>>>>>>>>>>>>dev2
处理方式:把上面三个分隔符删除,留下(或者修改)你自己想要的内容即可。然后提交到暂存区,再持久化。
7. origin云端
upstream branch云端分支
8. 在tmux里面复制:
选中:先ctrl+a然后按 [ ;鼠标选中。
粘贴:先ctrl+a然后按 ] ;即可出现内容。
9. 冲突:只要不是对同一个文件进行修改,就不会有冲突
10.克隆远程仓库的时候,并不是克隆所有分支下来,而是克隆了当前分支。如果不是master分支,命令就不仅是git clone,而是git checkout -t origin/branch_name 将远程的branch_name分支拉取到本地。
(注意辨别)
本地和远程仓库关联步骤:
- 在网站上首先添加好自己的ssh公钥
- 本地创建一个空的项目,用已有的文件夹。
- 在本地文件夹下git init初始化仓库;添加一些文件并且提交到工作区。
- 关联:
- 在gitbash中输入git remote add origin git@git.acwing.com:CodeWater/graduationproject.git
(这里以acwing的gitlab为例) - git push -u origin main
(这一步如果有错误error: src refspec main does not match any,是因为本地主分支是master,而远程
主分支是叫main,所以需要 git branch -m master main 改名即可。gitlab和GitHub主分支是main;但是gitee是master)
- 在gitbash中输入git remote add origin git@git.acwing.com:CodeWater/graduationproject.git
- 完成
作业
提示:1.好像cmomit太多版本也会判错
2.粘贴代码的就直接复制把。我手打一遍报错。。。。
(粘贴的时候#i会少掉,记得补上)
3.分支合并后还在,没有删除。
0.
mkdir homework
cd homework
git init
1.
vim readme.txt
***
111
***
git add .
git commit -m "add readme.txt"
2.
vim readme.txt
***
111
222
***
git add .
git commit -m "add 222"
3.
mkdir problem1 problem2
cd problem1
vim main.cpp
***
#include <iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
cout << a + b << endl;
return 0;
}
***
cd ../problem2
vim main.cpp
***
#include <iostream>
using namespace std;
const int N = 1010;
int n, m;
int f[N];
int main()
{
cin >> n >> m;
while (n -- )
{
int v, w;
cin >> v >> w;
for (int j = m; j >= v; j -- )
f[j] = max(f[j], f[j - v] + w);
}
cout << f[m] << endl;
return 0;
}
***
cd ..
git add .
git commit -m "add problem1 problem2"
4.
rm problem2 -r
mkdir problem3
cd problem3
vim main.cpp
***
#include <iostream>
using namespace std;
const int N = 1010;
int n, m;
int f[N];
int main()
{
cin >> n >> m;
while (n -- )
{
int v, w;
cin >> v >> w;
for (int j = v; j <= m; j ++ )
f[j] = max(f[j], f[j - v] + w);
}
cout << f[m] << endl;
return 0;
}
***
cd ..
vim readme.txt
***
111
333
***
git add .
git commit -m "many operations"
5.
git remote add origin git@git.acwing.com:yxc/homework.git
git push -u origin master
6.
git checkout -b dev
vim readme.txt
***
111
333
444
***
git add .
git commit -m "add 444"
git push origin dev
7.
git checkout master # 切换回master分支
vim readme.txt
***
111
333
555
***
git add .
git commit -m "add 555"
8.
git merge dev # 将dev分支合并到当前分支
vim readme.txt
***
111
333
555
444
***
git add .
git commit -m "fix conflicts"
9.
ssh myserver
cd homework
mkdir lesson_5
cd lesson_5
git clone git@git.acwing.com:CodeWater/homework.git