git初次使用

参考文献:https://mp.weixin.qq.com/s/Km5KuXPETvG0wCGHrvj9Vg

第一步

1.下载:vscode没有自动安装git,直接到官网下载,下载过程中主要注意一些选项选择。

 

 

第二步 Git本地基本库的用法

1.初始化一个库:git init,此时项目根目录下会创建一个.git基本库

找了半天没有发现.git文件,开始还以为没创建成功,后来才想起来.git文件是隐藏的。

 

 

 2.git add + git commit

在项目根目录下 新建一个gittest.md文件后,直接测试git status发现必须要先commit到本地仓库(此时不懂git status功能,之后再次重复了git status操作)

 

 git status信息不知道怎么查看,先不管。

 

 

测试git commit

 

 

 输入git commit后发现要配置user.emali/ user.name,运行git bash本体,输入命令配置完成,输入git config --list查看配置是否成功,此时再git commit则可以通过。

 

3.git log

显示成功。

 

4.git status

为了测试git status功能又在工作区创建了一个新文件gittest01.md,同时对之前的文件进行修改并git add一下,然后输入git status

 

 

 

首先区分三个概念,工作区(editor /changes),暂存区(index /staged changes),以及本地仓库(commit后)。

然后git status 能够显示当前文件(工作区和暂存区)的状态,同时会提示一些当前文件可进行的命令,restore、add等。

Changes to be committed:表示已经从工作区add到暂存区的file(文件或文件夹),可以通过 git restore --staged filename 命令将该file从暂存区移出,当然也可以commit到仓库

Changes not staged for commit:表示工作区文件状态,可以在工作区修改,但是没有add到暂存区,可以使用 git add file 命令。也可以使用restore命令消除修改,editor上面还是会显示修改的内容,但是实际文件修改已经撤销,restore之后又想保存修改,此时ctrl + s会提示,选择overwrite即可完成修改。

Untracked files:表示在工作区新创建的file(文件或文件夹),暂存区以及仓库均没有该文件。

 

5.git reset + git relog

避免干扰,首先删除了测试git status功能的gittest01.md文件,仅保留gittest.md文件,同时进行三次提交。

 

 

 

 

 

git log 一下

提交信息均能显示。

 

 

测试git reset(回退到第一次提交,同时测试git relog,最后再reset到原来位置)

  

此时因为HEAD回退到第一次提交的节点,git log 只显示到当前HEAD的提交信息

 

git reflog显示了HEAD之后所有的操作信息,同时可以获取到之后commit-id。

 

 

回到第三个节点 reset + commitid

git log一下,发现又可以显示所有提交信息了。

 OK,这样本地仓库基本用法就结束了

 

第三步 Git远程库的用法(单人项目形式)

1.git pull + git push 测试

(1)在github上注册账号,然后新建一个仓库(记得添加readme.md文件)。

  (2) 链接本地仓库和远程仓库

  

查看链接是否成功:

 

 表示成功。

 删除链接

 

 

另一种方法建立链接(git clone):github上创建仓库,git clone +仓库地址,会自动克隆远程仓库到本地,同时自动创建链接,推荐这种方式,不过本人使用前面那种。

(3)git push

第一次push时使用如下命令,-u是指update(推测),即将本地仓库master更新到远程仓库的master上。

 

第一次push时出现了问题

 

 原因:sshkey出现问题

解决:https://www.cnblogs.com/xxyang/p/13751249.html

 

重新push一下,成功,在远处仓库查看

 

 就可以看到远程仓库上更新了内容。

(4)git pull

远程仓库上编辑文件,测试git pull

 

 

 

 本地可以看到第四次commit(远程页面编辑)成功,此时远程仓库以及本地仓库同步完成

 第四步 团队项目中的分叉合并

1.git pull一下同步到最新

2.创建一个分支,避免冲突(多人提交时)

git checkou -b branchname创建分支,git branch查看当前分支

 

 

 3.在自己分支上进行commit操作:本人添加了三个版本

 

4.合并并同步远程仓库

git checkout master

git pull(把远程仓库的其他人更新同步过来,同时整合自身更新,暂时不考虑其他人更新与本人更新存在冲突的情况)

git merge --no-ff mybranch:合并
git push:更新远程仓库

 

 

 同步成功

 

 第五步 Git Rebase

场景:继续在branch上依次提交A、B、C(假设A\B完全多余),此时想尚未提交到远程仓库,同时想整合最近几次提交记录,仅保留最后一次提交记录,避免过多无用的提交记录影响查看

1.git rebase -i HEAD^^^查看到了3条记录

 

 

 此时我想要将三条记录合并成一条,根据提示信息修改,此处使用reword/drop

 

 

 

底线命令行在最下面,找了很久没找到。

 

 

wq退出后,进入编辑页面,把信息add A 改成 add ABC。

 

 

 此时git log一下,已经合并了三个提交,并且最终提交信息改变为add ABC,因为之前两个提交被撤销了,所以相应文件中修改也被撤销(只剩A)。

 

 

 

 

 可以看到只剩下A的修改了(因为只剩下这个提交了),B,C完全消失。

这里存在一个问题:使用rebase --abort表示找不到rebase,表明已经rebase continue了,不清楚为什么不能自己输入

 

 因为好像自动continue了,所以没太管。

重走一遍场景三。

 

 在远程仓库只显示一个节点,所以三个节点合并成功

 

posted @ 2020-10-02 20:59  SA20225427  阅读(257)  评论(0编辑  收藏  举报