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文件,在提交时可能会存在冲突,这时您需要选择的是保留线上的文件或者舍弃线上的文件;
-
如果您舍弃线上的文件,则在推送时选择强制推送(加上-f)
git push origin master -f
-
如果您选择保留线上的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操作就没有问题了。