zoukankan      html  css  js  c++  java
  • 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:Usershyt.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删除存储的代码。
  • 相关阅读:
    UVA
    UVA
    模板——扩展欧几里得算法(求ax+by=gcd的解)
    UVA
    模板——2.2 素数筛选和合数分解
    模板——素数筛选
    Educational Codeforces Round 46 (Rated for Div. 2)
    Educational Codeforces Round 46 (Rated for Div. 2) E. We Need More Bosses
    Educational Codeforces Round 46 (Rated for Div. 2) D. Yet Another Problem On a Subsequence
    Educational Codeforces Round 46 (Rated for Div. 2) C. Covered Points Count
  • 原文地址:https://www.cnblogs.com/bianchengxia/p/14229888.html
Copyright © 2011-2022 走看看