Git学习笔记

1. Git至Gitee

打开Git Bash生成SSH公钥
在项目文件夹中,右键->Git Bash Here
命令行输入:ssh-keygen -t rsa -C "邮箱地址"回车三次
请添加图片描述
通过路径找到公钥位置,以记事本或文本编辑器打开id_rsa.pub文件,复制
或使用命令行:
cat ~/.ssh/id_rsa.pub将文件打印至终端,复制
请添加图片描述
注册码云进入设置找到ssh公钥
请添加图片描述
点击确定,输入码云密码,添加成功
请添加图片描述
请添加图片描述
打开Git Bash测试,命令行:clear(清除窗口)
命令行:ssh -T git@gitee.com

请添加图片描述
在码云上新建一个仓库获取仓库地址

连接成功!
新建仓库
1.点击码云首页,找到仓库旁边有个+号,新建测试仓库请添加图片描述
2.进入仓库,如图,复制仓库地址请添加图片描述
3.在团队开发中,会有多名成员,在仓库管理中可以通过仓库成员管理添加成员。

git本地文件到码云
1.在需要上传的文件夹中,右击打开Git Bash窗口

2.初始化一个本地仓库

#初始化一个文件夹为本地仓库
git init 
#查看状态和是否存在.git文件
git status

请添加图片描述
3.添加项目至缓存区

git add 文件全称(可以是文件夹,也可以是多个文件,空格隔开)
#提交全部
git add .

请添加图片描述
4.添加远程仓库地址

#添加远程仓库地址
git remote add origin 远程仓库地址
#查看远程仓库
git remote -v 

请添加图片描述
5.commit提交至本地仓库

#提交任务到本地仓库,-m "注释"
git commit -m “first commit”

6.将本地仓库push至远程仓库

#将本地仓库push至远程仓库
git push origin master

发生冲突,远程仓库也有readme文件,处理冲突 请添加图片描述
选择舍弃线上文件,强制推送,git push origin master -f
请添加图片描述
7.远程查看仓库,成功上传请添加图片描述
8.同步冲突

本文在码云平台创建仓库上已经存在readme文件,在提交时可能会存在冲突,这时您需要选择的是保留线上的文件或者舍弃线上的文件;

  1. 如果您舍弃线上的文件,则在推送时选择强制推送(加上-f)
    git push origin master -f

  2. 如果您选择保留线上的readme文件,则需要先执行
    git pull origin master

    然后才可以推送

    一些需要保存在本地,无需上传到git文件被误传到git上了,就用下面的办法撤销啦
    #将.idea/替换成你想要删除的文件夹,文件的话去掉参数-r就可以了

一些需要保存在本地,无需上传到git文件被误传到git上了,就用下面的办法撤销啦
#将.idea/替换成你想要删除的文件夹,文件的话去掉参数-r就可以了

 #删除暂缓区的文件
git rm -r --cached .idea/
#将这个删除操作提交到本地仓库
git commit -m "delete .idea"
#将这个删除操作提交到远程仓库
git push

添加.gitignore.py到项目下,与.git同级目录
.idea/
*.pyc
此时,再提交项目更新的时候,git会忽略.gitignore.py添加的文件夹或文件
如果本地不需要保存,直接进行如下操作

#删除本地文件
 rm -r .idea/
 #将这个删除操作提交到本地仓库
 git commit -m "delete .idea"
 #将这个删除操作提交到远程仓库
 git push

2. Git至Github

在这里插入图片描述

添加远程库

git remote add [shortname] [url] #远程仓库地址

如果没有 Github 可以在 Github官网注册。
使用以下命令生成 SSH Key:

ssh-keygen -t rsa -C "youremail@example.com" #你的邮箱地址

后面的 your_email@youremail.com 改为你在 Github 上注册的邮箱,之后会要求确认路径和输入密码,使用默认的一路回车就行。

成功的话会在 ~/ 下生成 .ssh 文件夹,进去,打开 id_rsa.pub,复制里面的 key。或者将文件显示在终端上

 cat ~/.ssh/id_rsa.pub #打印文件内容

复制这段代码
在这里插入图片描述
回到Github上,进入 Account => Settings(账户配置)。
在这里插入图片描述
左边选择 SSH and GPG keys,然后点击 New SSH key 按钮,title 设置标题,可以随便填,粘贴在你电脑上生成的 key。
在这里插入图片描述
在这里插入图片描述
验证是否成功,输入以下命令:

ssh -T git@github.com

在这里插入图片描述
以下命令说明已成功连上 Github。
新建一个仓库
在这里插入图片描述

之后在在Repository name 填入 git-test(远程仓库名) ,其他保持默认设置,点击"Create repository"按钮,就成功地创建了一个新的Git仓库:在这里插入图片描述
创建成功后,显示如下信息:
在这里插入图片描述
以上信息告诉我们可以从这个仓库克隆出新的仓库,也可以把本地仓库的内容推送到GitHub仓库。

现在,我们根据 GitHub 的提示,在本地的仓库下运行命令:

$ mkdir git-test                     # 创建测试目录
$ cd git-test/                       # 进入测试目录
$ echo "#Git 测试" >> README.md       # 创建 README.md 文件并写入内容
$ ls                                        # 查看目录下的文件
README.md

$ git init                                  # 初始化
$ git add README.md                         # 添加文件
$ git commit -m "添加 README.md 文件"        # 提交并备注信息
[master (root-commit) 0205aab] 添加 README.md 文件
 1 file changed, 1 insertion(+)
 create mode 100644 README.md

# 提交到 Github
$ git remote add origin git@github.com:zjtu721/git-test.git
$ git push -u origin master

接下来返回 Github 创建的仓库,就可以看到文件已上传到 Github上:
在这里插入图片描述

查看当前的远程库

git remote #查看当前配置有哪些远程仓库

实例

$ git remote
origin

#执行时加上 -v 参数,你还可以看到每个别名的实际链接地址。
$ git remote -v
origin  git@github.com:zjtu721/git-test.git (fetch)
origin  git@github.com:zjtu721/git-test.git (push)

提取远程仓库
Git 有两个命令用来提取远程仓库的更新。
1、从远程仓库下载新分支与数据:
该命令执行完后需要执行 git merge 远程分支到你所在的分支。

git fetch

2、从远端仓库提取数据并尝试合并到当前分支:

git merge

该命令就是在执行 git fetch 之后紧接着执行 git merge 远程分支到你所在的任意分支。
在这里插入图片描述
假设你配置好了一个远程仓库,并且你想要提取更新的数据,你可以首先执行 git fetch [alias] 告诉 Git 去获取它有你没有的数据,然后你可以执行 git merge [alias]/[branch] 以将服务器上的任何更新(假设有人这时候推送到服务器了)合并到你的当前分支。

接下来在 Github 上点击" README.md" 并在线修改它:
在这里插入图片描述
然后我们在本地更新修改。

$ git fetch origin
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 637 bytes | 53.00 KiB/s, done.
From github.com:zjtu721/git-test
   5516602..04deee4  master     -> origin/master

以上信息"5516602…04deee4 master -> origin/master" 说明 master 分支已被更新,我们可以使用以下命令将更新同步到本地:

$ git merge origin/master
Updating 5516602..04deee4
Fast-forward
 README.md | 1 +
 1 file changed, 1 insertion(+)

查看 README.md 文件内容:

$ cat README.md
#Git 测试
第一次更改测试

推送到远程仓库
推送你的新分支与数据到某个远端仓库命令:

git push [alias] [branch]

以上命令将你的 [branch] 分支推送成为 [alias] 远程仓库上的 [branch] 分支,实例如下。

$ touch test.txt
$ git add test.txt
$ git commit -m "添加test文件到远程"
[master 4095dd2] 添加test文件到远程
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 test.txt
 
$ git push origin master #推送到Github
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 296 bytes | 296.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:zjtu721/git-test.git
   04deee4..4095dd2  master -> maste

重新回到我们的 Github 仓库,可以看到文件已经提交上来了:
在这里插入图片描述
删除远程仓库

#查看远程仓库
$ git remote -v
origin  git@github.com:zjtu721/git-test.git (fetch)
origin  git@github.com:zjtu721/git-test.git (push)

#添加远程仓库
$ git remote add origin2 git@github.com:zjtu721/git-test.git

$ git remote -v
origin  git@github.com:zjtu721/git-test.git (fetch)
origin  git@github.com:zjtu721/git-test.git (push)
origin2 git@github.com:zjtu721/git-test.git (fetch)
origin2 git@github.com:zjtu721/git-test.git (push)

#删除仓库origin2
$ git remote rm origin2

$ git remote -v
origin  git@github.com:zjtu721/git-test.git (fetch)
origin  git@github.com:zjtu721/git-test.git (push)

3. Git基本操作

从远程服务器获取项目

#新建本地仓库
git init
#添加一个远程地址
git remote add origin 远程仓库地址
#是从远程获取master分支的内容到本地
git pull origin master 

删除远程仓库文件夹

#删除仓库文件夹
git rm -r --cached target (文件名称,target作为示例)
#添加操作说明
git commit -m "delete dir"
#提交到远程仓库
git push origin master

恢复被删除的文件

#查看在哪个 commit 中删除了哪些文件。
git log --diff-filter=D --summary  
# 检出该 commit 的上一个提交中的文件 
git checkout $commit~1 filename   

上传本地代码到远程仓库(Gitee)的指定分支
将本地代码上传到dev这个分支上请添加图片描述
1.准备工作

git init 初始化仓库
git config user.name ‘你的Gitee用户名’
git config user.email '你的Gitee邮箱’**

2.查看状态并提交代码到本地仓库

 #可以查看目前分支的状态
git status
#表示添加所有改变的文件
git add . 
# 提交代码到本地仓库
git commit -m '注释' 

3.将本地仓库与远程仓库进行连接(两步)

git remote add origin 仓库地址
git push -u origin master

4.查看分支

**git branch --all # 查看本地和远程的所有分支**
绿色:本地仓库的分支
红色:远程仓库的分支

5.做项目的时候,你一般都是不会直接提交到master(主分支),都是提交到另外一个分支如dev分支.
接下来来实现在本地新建一个dev分支,修改内容后提交合并到master,然后提交到远程仓库的dev
6.新建本地分支

git checkout -b dev(这个名是新建的分支名)

7.分别看看dev分支和master分支的情况

git checkout dev
git status

8.将dev分支的代码合并到master

git checkout master #回到master分支下	
git merge dev #合并到master

9.将本地的master提交到我们的dev分支上

git checkout master # 切换到主分支
git push origin 本地要上传代码的分支名称:远程你要上传的指定分支名称
git push origin master:dev # 上传

4.问题总结

错误的git 提交的步骤:

git init                          //初始化仓库
git add .                         //添加文件到本地暂存区  或用 git add  (文件name)
git commit -m “first commit”      //提交到本地仓库
git remote add origin  远程仓库地址 //添加远程仓库 
git push -u origin master         //把本地仓库的master分支推送到远程仓库master分支

这样就显示这样的问题了,如下图。请添加图片描述
在向远程库推送的时候,要先进行pull同步远程仓库,让本地新建的库和远程库进行同步。
正确步骤:

git init              									      //初始化仓库
git add .            								      //添加到本地暂存区  或用 git add  (文件name)
git commit -m “first commit”                  //提交到本地仓库
git remote add origin  远程仓库地址    //添加远程仓库 
git pull origin master                            //把远程仓库master分支拉取到本地仓库master分支
git push -u origin master                     //把本地仓库的master分支推送到远程仓库master分支

请添加图片描述
出现这个错误的原因是git本地仓库的当前版本低于远程仓库的版本(大白话就是:你在Gitee上进行的修改没有同步到本地git仓库中)。
错误的解决方案(注意是错误的解决方案)

在终端下输入:git push -u origin master -f

这句话执行的后果就是在远程仓库中进行的相关修改会被删除,使远程仓库回到你本地仓库未修改之前的那个版本,然后上传你基于本地仓库的修改。这如果在企业开发中就会让别的程序员的这些天的开发付之东流,一切回到解放前.

正确的解决方案

先在终端下输入:git pull origin master

这句话是说将远程中进行的相关修改保存下来

但这时可能会报错:error: Your local changes to the following files would be overwritten by merge:

git中出现error: Your local changes to the following files would be overwritten by merge的解决方案

这句代码的意思是以本地进行的修改会被覆盖,也就是说你本地进行的修改不会生效。

一般是使用了git pull相关的命令同步远程仓库到本地引起的,而本地的修改无法上传到远程仓库,导致两者都不能兼备

解决方案

git stash  

备份当前的工作区的内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中

git commit
git stash pop 

从Git栈中读取最近一次保存的内容,恢复工作区的相关内容,在终端下依次输入上述代码就可以让服务器上的代码更新到了本地,而且你本地修改的代码也没有被覆盖。

之后使用add,commit,push命令即可更新本地代码到服务器

git init              			     //初始化仓库
git add .             				 //添加到本地暂存区  或用 git add  (文件name)
git commit -m “注释”          		 //提交到本地仓库
git remote add origin  远程仓库地址    //添加远程仓库 
git pull origin master               //把远程仓库master分支拉取到本地仓库master分支
git push -u origin master            //把本地仓库的master分支推送到远程仓库master分支

5.问题记录

** git解决error: The following untracked working tree files would be overwritten by checkout**

git clean -d -fx #删除一些没有git add 的文件
    git clean 参数 

    -n 显示将要删除的文件和目录;

    -x -----删除忽略文件已经对git来说不识别的文件

    -d -----删除未被添加到git的路径中的文件

    -f -----强制运行

如何解决error: failed to push some refs to ‘https://gitee.com/

出现错误的主要原因是gitee(github)中的README.md文件不在本地代码目录中

此时我们要执行git pull --rebase origin master**命令README.md拉到本地,

任何然后执行git push origin master

解决fatal: The current branch master has no upstream branch.

方法一:
git checkout dev  #切换到dev分支
git push -u origin dev #命令的意思是建立远程分支dev和关联本地dev和远程dev两步
方法二:
git push --set-upstream origin master

解决Push rejected Push to origin/master was rejected在这里插入图片描述
idea中使用alt+F12打开控制台或在Git Bash中输入如下命令

git pull origin master --allow-unrelated-histories

在使用git的时候,每次执行

#git add "目录"

git add .

都会提示这样一个警告消息:
在这里插入图片描述

warning: LF will be replaced by CRLF in XXXXXXXXXXXXXX.

原因是路径中存在 / 的符号转义问题,false就是不转换符号默认是true,相当于把路径的 / 符号进行转义,这样添加的时候就有问题

虽然说没有什么影响吧。

不过就是觉得太碍眼了,

按照这样设置就没有问题了:

git config core.autocrlf false

这样设置git的配置后在执行add操作就没有问题了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小蜜蜂127

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值