Git软件使用教程

 

上传本地文件到github

自从使用github以来,一直都是在github网站在线上传文件到仓库中,但是有时因为网络或者电脑的原因上传失败。最重要的原因是我习惯本地编辑,完成以后再一起上传github。看过了几个教程,总结出最适合自己的比较简单的方法。


两种方法上传本地文件到github

1. github在线上传文件夹

在线上传也可以上传完整的文件夹结构,直接拖拽到上传文件页面的框中即可。

1.1点击上传文件

点击上传
1.2 直接拖拽

直接拖拽即可上传文件夹及文件夹里面的文件。如果点击 choose your files 就只能上传单个文件。


直接拖拽

2. 通过git工具上传本地文件夹(本地项目)

2.1 下载git工具

选择对应版本下载
2.2 下载完成后安装完成,注意在安装过程中可以选择创建桌面快捷方式

桌面快捷方式
2.3 绑定用户

打开git-bash.exe(直接在桌面上点击右键,或者点击开始按钮找到Git Bash)


运行gitBash.gif


在打开的GIt Bash中输入以下命令(用户和邮箱为你github注册的账号和邮箱)

  1.  $ git config --global user.name "hanyuntao"
  2.  $ git config --global user.email "hanyuntaocn@163.com"

Paste_Image.png
2.4 设置SSH key(git中sshkey有何作用?
2.4.1 生成ssh key

首先检查是否已生成密钥cd ~/.ssh,如果返回的ls有3个文件,则密钥已经生成。


密钥生成


如果没有密钥,则通过

$ ssh-keygen -t rsa -C "hanyuntaocn@163.com"

生成,生成过程中一路按3次回车键就好了。(默认路径,默认没有密码登录)
生成成功后,去对应目录C:\Users\hyt.ssh里(hyt为电脑用户名,每个人不同)用记事本打开id_rsa.pub,得到ssh key公钥。


ssh key公钥
2.4.2 为github账号配置ssh key

切换到github,展开个人头像的小三角,点击settings,然后打开SSH keys菜单, 点击Add SSH key新增密钥,填上标题(最好跟本地仓库保持一致)。


设置sshkey.gif


接着将id_rsa.pub文件中key粘贴到此,最后Add key生成密钥吧。\

2.5 上传本地项目到github

2.5.1 创建一个本地项目

这是我自己创建的几个文件夹及文件。


本地项目
2.5.2 建立本地仓库

1.首先进入text文件夹

cd d:text

首先进入text文件夹

2.执行指令:git init


执行git init

初始化成功后你会发现项目里多了一个隐藏文件夹.git


隐藏的文件夹

3.执行指令:git add .
将所有文件添加到仓库


执行git add .

4.执行指令:git commit -m "提交文件"
双引号内是提交注释。


提交文件


2.5.3 关联github仓库

1.到github text仓库复制仓库地址


复制仓库地址


2.执行指令:git remote add origin https://github.com/hanyuntao/text.git



5.

可以通过如下命令进行代码合并【注:pull=fetch+merge]

git pull --rebase origin master

如何解决failed to push some refs to git
5

执行上面代码后可以看到本地代码库中多了README.md文件

如何解决failed to push some refs to git
2.5.4 上传本地代码

执行指令:git push -u origin master


执行指令
2.5.5完成了

可以看到我们的本地项目已经上传到了github上了。


完成了

注意:git是不能管理空的文件夹的,文件夹里必须有文件才能上传。(以下解释)

git和 svn不同,仅仅跟踪文件的变动,不跟踪目录。所以,一个空目录,如果里面没有文件,即便 git add这个目录,另外在别处 check out 的时候,是没有这个空目录的。

只跟踪文件变化,不跟踪目录,这么设计是有原因的。但这会带来一些小麻烦。有时候,确实需要在代码仓库中保留某个空目录。比如测试时需要用到的空目录。下面来看看如何解决。

其实这里有两种情况:

一、目录是空的

这种情况下只需要在目录下创建.gitkeep文件,然后在项目的.gitignore中设置不忽略.gitkeep

.gitkeep 是一个约定俗成的文件名并不会带有特殊规则

二、目录中已经存在文件

那就需要首先在根目录中设置!.gitignore,然后在目标目录也创建一个.gitignore文件,并在文件中设置

1
2
*
!.gitignore

这样就可以在项目中提交空目录了。

在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件)。这个文件每一行保存了一个匹配的规则例如:

1
2
3
4
5
6
7
# 此为注释 – 将被 Git 忽略
 
*.a        # 忽略所有 .a 结尾的文件
!lib.a     # 但 lib.a 除外
/TODO      # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/     # 忽略 build/ 目录下的所有文件
doc/*.txt  # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

规则很简单,不做过多解释,但是有时候在项目开发过程中,突然心血来潮想把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:

1
2
3
git  rm  -r --cached .
git add .
git commit -m  'update .gitignore'

 

 

问题:github/gitlab 管理多个ssh key 

(转载自:https://www.cnblogs.com/fanyong/p/3962455.html)

以前只使用一个 ssh key 在github上提交代码,由于工作原因,需要再添加一个ssh key在公司的 gitlab上提交代码,下面记录下配置过程,防止遗忘。
说明下我的环境是 Win7 + msysgit + GitBash, 相信 *nux + bash 也是同样的道理。

生成并添加第一个ssh key

第一次使用ssh生成key,默认会在用户~(根目录)下生成 id_rsa, id_rsa.pub 2个文件;所以需要添加多个ssh key时也会生成对应的私钥和公钥。

$ ssh-keygen -t rsa -C "youremail@yourcompany.com"

在Git Bash中执行这条命令一路回车,会在 ~/.ssh/ 目录下生成 id_rsa 和 id_rsa.pub 两个文件,用文本编辑器将 id_rsa_pub 中的内容复制一下粘贴到github(gitlab)上。

生成并添加第二个ssh key

$ ssh-keygen -t rsa -C "youremail@gmail.com"

注意不要一路回车,要给这个文件起一个名字, 比如叫 id_rsa_github, 所以相应的也会生成一个 id_rsa_github.pub 文件。

目录结构如下:

添加私钥

$ ssh-add ~/.ssh/id_rsa
$ ssh-add ~/.ssh/id_rsa_github

如果执行ssh-add时提示"Could not open a connection to your authentication agent",可以现执行命令:

$ ssh-agent bash

然后再运行ssh-add命令。

# 可以通过 ssh-add -l 来确私钥列表
$ ssh-add -l

# 可以通过 ssh-add -D 来清空私钥列表
$ ssh-add -D

修改配置文件

在 ~/.ssh 目录下新建一个config文件

touch config

添加内容:

# gitlab
Host gitlab.com
    HostName gitlab.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa

# github
Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_github

测试

$ ssh -T git@github.com

输出
Hi user! You've successfully authenticated, but GitHub does not provide shell access. 就表示成功的连上github了

 

git上存项目文件的坑Permission denied, please try again.

今天使用gitlab上存项目文件。
发现配置了ssh,还是在push的时候,需要输入密码,并且出现如下错误:

Permission denied, please try again.

我的ssh没有问题,并且密码也没有问题。

问题是因为gitlab的权限中,上存文件不是使用ssh协议,而是使用http协议。

吐了一口老血。

所以如果你出现类似的问题,试下用http协议。

 

IntelliJ IDEA git 项目检出、更新、提交、解决冲突、取消提交、还原代码

检出项目

  • 前提:在开发环境中安装好IntelliJ IDEA和git.
  • 打开idea,选择VCS→Checkout from Version Control→Git或者点击VCS→Git→Clone

 

 

 

  • 或者

 

 

 

  • 出现填写项目详情窗口

 

 

 

  • 从gitlab官网复制远程地址

 

 

 

  • 可以选Test按钮测试远程服务是否可用,出现success为服务正常,之后选择相应项目类型,检出即可

更新项目

更新项目有两种方式第一种为更新当前窗口下的整个项目

 

  • 第二种为更新相应文件,文件右键Git→Repository→Pull,出现更新详情窗口

 

 

 

 

  • 选择Pull

 

 

  • 窗口左下方出现本次更新的内容

提交文件

新建TestController测试类

 

 

  • 文件右键选择add,表示文件交给git托管

 

 

  • 选择文件右键Git→Commit file ,提交文件

 

 

  • 左上角会默认比对出本地仓库和远程仓库的区别,勾选文件前的单选框提交相应文件,左侧中部为备注框,选择Commit and push (提交)
    在这里插入图片描述
  • 选择文件右键Git→Repository→Push 上传文件
    这里写图片描述

解决冲突

  • 当在本地修改的文件,别人也修改了且已提交到了远程服务器,这时需要解决冲突。为了模拟这个场景,对TestController这个方法同时修改服务器代码和本地代码。修改完成后提交文件

 

 

  • 填写备注后提交

 

 

  • 系统会检查出文件有冲突,提示需要合并,出现冲突窗口

 

 

  • 点击文件,即可进入详情页面

 

 

  • 详情页面分为三栏,左边为本地版本,中间为修改前版本,右边为服务器最新版本,左右两边代码不可以修改

 

 

  • 当前冲突页面1所指按钮可以切换冲突位置,2处按钮可以让冲突部分高亮显示,3处可以选择文件是否整体滑动。

 

 

  • 基于两个版本对中间版本修改后点击apply,即生成最终版本的文件,选择提交

 

 

  • 这时会提示上传失败,最好将文件重新编译一下,确认无误后重新push即可

 

 

  • 上传成功!

取消提交

有的时候我们不想push已经commit,可以在idea中进行如下操作取消
首先我们模拟一个测试提交
在这里插入图片描述
项目右键选择GIT->Repository->Resrt HEAD
在这里插入图片描述
弹出回退页面
在这里插入图片描述
在To Commit中填入回退的版本信息, HEAD^ 代表回退到上次提交前,HEAD~n 数字代表往回退的版本数,回退的代码不会丢失,想要提交的话再次commit即可。

还原代码

假如我们还原开发了一半的代码或者自己做的实验性的功能,有什么快速的办法呢

    • 第一种就是手动还原,把自己新增的文件挨个删除,右键Git---->Compare with Branch ,把修改项目还原即可。优点是风险小,缺点是操作复杂,无法复原代码
    • 第二种是删除本地分支,从远程重新拉一个分支,拉下来的代码是最新版本的。优点是操作简单,缺点是无法复原代码,
    • 第三种是最推荐的,操作简单、风险小、代码可复原。idea git有一个仓库可以存储代码,选择项目右键----->Git–>Repository—>Stash Changes ,就会创建一个存储备份,以后需要的时候在Unstash Changes找到相应记录还原即可。也可以选择drop删除存储的代码。
posted @ 2021-01-04 14:58  编程侠Java  阅读(224)  评论(0编辑  收藏  举报