Git 配置与使用及从 0 到 1()

  本篇文章为你整理了Git 配置与使用及从 0 到 1()的详细内容,包含有 Git 配置与使用及从 0 到 1,希望能帮助你了解 Git 配置与使用及从 0 到 1。

  前言:本篇博客详细介绍了项目管理工具 Git 的下载安装、环境变量配置、使用以及一些常用命令,参考了网上一些博主的介绍。有些博客只介绍下载安装,或者只介绍 Git 命令,没有综合到一起。通过阅读此博文,能够让对 Git 的配置与使用达到比较通达的理解,如果喜欢,请点赞收藏。

  博文目录:

  一、Git 下载安装

  二、配置环境变量

  三、配置 GitHub

  四、IDEA 中配置Git

  五、Git 命令总结

  六、Git 使用问题记录

  一、Git 下载安装

  1、官网 Git 下载

  官网Git下载(按住Ctrl然后点击链接成功跳转)

  根据自己的需要选择 macOS、Windows、Linux/Unix,或者直接点击右边电脑中 Downloads for Windows 跳转到下载页面。

  图1.1 Download Git 1

  然后点击 Click here to download 下载版本,或者也可以选择 32 位或者 64 位

  图1.2 Download Git 2

  2、Git 安装步骤

  Git 具体安装步骤参考下边链接,作者 maanlong ,安装步骤介绍地较为详细,不只是 Next 一路油门踩到底,该篇博客中还会说明每到一步以后步骤中的选项是什么意思,是否建议选择等。因此在此较为推荐:

  Windows系统Git安装教程(详解Git安装过程)

  版本一直在迭代,安装步骤大差不差,完全值得参考借鉴。安装完成以后,在桌面上右键选择:Git Bash Here会弹出下边的命令行框。在 $ 后边输入命令 git -v 会出现当前你所安装的 Git 的版本号。

  图1.3 Git Version 1

  二、配置环境变量

  与其他的软件类似,Git 配置环境变量也是同样的操作步骤:

  右键电脑 →属性 →高级系统设置 → 环境变量 → 系统变量 → Path → 然后添加 Git 安装目录

  

C:\Program Files\Git\bin

 

  

 

  配置好环境变量以后,在命令提示符(Win + R)中输入 git 会弹出以下界面,说明安装配置成功

  图2.1 Git Version 2

  三、配置 GitHub

  相信对于软件开发人员来说,GitHub 这个词语必然是耳熟能详。它是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub。

  Git 与 GitHub 间的关系如下图所示

  图3.1 Git 与 GitHub 关系

  上边安装的 Git 是版本管理工具,而 GitHub 是一个代码托管平台,就是将自己所要提交的代码通过 Git 工具提交到 GitHub 平台上,用于每次的增删改查,并且同一个项目组成员都可以拉取项目代码,互相提交,避免冲突。

  想要通过 Git 将代码提交到 GitHub 上,就需要事先进行一些配置,这样才能够与 GitHub 服务器进行连接。

  1、添加 SSH key 原因

  GitHub 管理项目的时候,对于本地或者远程文件操作可以用 HTTPS 或者 SSH 进行 clone 和 push,两者的区别在于:

  
使用 HTTPS 可随意 clone 或者 push 项目到 GitHub,不管谁是项目的拥有者;而使用 SSH 操作必须是项目的拥有者或者管理员,且需要添加 SSH key,否则无法 clone

  
使用 HTTPS url 在 push 时需要验证用户名和密码;使用 SSH 在 push 时可设置成无用户名密码,相对方便

  
GitHub 允许添加多个 Key。假定你有若干电脑,一会儿在公司提交,一会儿在家里提交,这样只要把每台电脑的 Key 都添加到 GitHub ,就可以在每台电脑上往 GitHub 推送了

  


# 配置用户名("username"是自己GitHub上的用户名)

 

  $ git config --global user.name "username"

  # 配置邮箱("username@email.com"是注册GitHub账号时所用的邮箱)

  $ git config --global user.email "username@email.com"

  

 

  执行完成上述命令以后,查看是否配置成功。如果成功,会显示所配置的用户名和邮箱,命令:

  

$ git config --global --list

 

  

 

  检查电脑是否已经有 SSH key,在 Git Bash Here 中输入命令:

  

$ cd ~/.ssh

 

  # 输完上边命令回车

  

 

  这两个命令就是检查是否已经存在 id_rsa(私钥) 或 id_dsa.pub(公钥) 文件,如果文件已经存在,则运行命令后如下图所示。那么可以跳过生成 ssh key 文件的步骤,直接添加 key 到 GitHub 上。

  图3.2 检查 SSH key是否存在

  执行以下命令生成 ssh-key

  

# 生成 ssh,ssh-keygen 命令中间无空格

 

  $ ssh-keygen -t rsa

  

 

  运行上面那条命令后会让你输入一个文件名,用于保存刚才生成的 SSH key 代码,遇到下边命令直接按回车就可以:

  

Generating public/private rsa key pair.

 

  # Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): [Press enter]

  

 

  接着又会提示你输入两次密码(该密码是你 push 文件的时候要输入的密码,而不是 GitHub 管理者的密码),可以不输入密码,直接按回车。那么 push 的时候就不需要输入密码,直接提交到 GitHub 上了

  

Enter passphrase (empty for no passphrase): 

 

  # Enter same passphrase again:

  

 

  然后会有如下代码提示,这说明 SSH key 已经创建成功,下一步只需要添加到 GitHub 的 SSH key 上就可以,生成成功后,会有如图3.3所示的:

  

Your identification has been saved in /c/Users/you/.ssh/id_rsa.

 

  # Your public key has been saved in /c/Users/you/.ssh/id_rsa.pub.

  # The key fingerprint is:

  # 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db username@email.com

  

 

  图3.3 生成 SSH key

  执行过命令之后,到系统盘 Users 目录(C:\Users\电脑用户名.ssh\),查看生成的 ssh 文件。这里在打开 ssh 文件的时候可能会遇到 pub 文件打不开的问题,那么在当前目录行中输入 cmd,定位到文件目录下,并且在命令行中执行下述命令,这样可以将公钥显示出来

  

$ type id_rsa.pub

 

  

 

  图3.4 SSH key 目录

  3、添加公钥到 Github

  需要将 id_rsa.pub 文件中一大串密钥复制到 GitHub 中,可以通过 git 命令复制文件:

  

$ clip ~/.ssh/id_rsa.put

 

  

 

  
登录 GitHub 账号,右上角进入 Settings,然后选择左边栏的 SSH and GPG keys 进行添加操作

  
点击 Add SSH key 按钮添加一个 SSH key 。把你复制的 SSH key 代码粘贴到 key 所对应的输入框中,记得 SSH key 代码的前后不要留有空格或者回车。上面的 Title 所对应的输入框也可以输入一个该 SSH key 显示在 Github 上的一个别名

  
 

  图3.5 Github 添加 SSH key

  在 Git Bash Here 中输入以下代码,来检验是否添加 SSH 成功

  

$ ssh -T git@github.com

 

  

 

  
当你输入以上代码时,会有一段警告代码,这是正常的,你输入 yes 回车即可。如果你创建 SSH key 的时候设置了密码,接下来就会提示你输入密码,直到密码输入正确为止

  
密码正确后你会看到下面代码中这段话,说明已经成功设置 SSH 密钥。如果你看到 “access denied” ,者表示拒绝访问,那么你就需要使用 HTTPS 去访问,而不是 SSH

  


Hi username! Youve successfully authenticated, but GitHub does not provide shell access.

 

  

 

  四、IDEA 中配置Git

  作为一个后端 Java 开发人员,使用 Git 作为代码版本管理工具是非常必要的,如果能够在 IntelliJ IDEA 中配置好 Git,那么会大大提高开发效率。因此这里以 IDEA 为例,进行 Git 配置的介绍。

  下图来自 Oliver Steele (http://osteele.com) ,解释了 git 模型和命令:

  图4.1 Git Data Transport Commands

  相关概念需要清楚:

  
workspace:工作区。也就是平时存放代码的地方

  index 或 staging area:暂存区/缓存区。临时存放代码的改动,保存即将提交到文件列表的信息

  local repository:版本库/本地仓库。安全存放数据的位置,其中 HEAD 指向最新放入仓库的版本

  remote repository:远程仓库。托管代码的服务器

  
git push 操作的是远程库,将本地库中的最新信息发送给远程库(remote repository)中

  
git pull 是 git fetch + git merge ,就是先 fetch,然后执行 merge 操作,如果加 -rebase 参数,就是使用 git rebase 代替 git merge

  
merge 命令会保留所有 commit 的历史时间不被修改,这样就形成了以 merge 时间为基准的网状历史结构,每个分支上都会继续保留各自的代码记录,主分支上只保留 merge 的历史纪录,子分支随时可能被删除

  
rebase 命令会始终把最新的修改放到最前头,对主分支进行 rebase 后,所有的修改就会在主分支所有修改之前进行修改

  
创建本地仓库的两种方法:一种是创建全新的仓库,一种是复制远程的仓库。

  1、IntelliJ IDEA 中配置 Github

  File →Settings →Version Control → Git,如果已经安装了 Git 工具,点击 Test 按钮,会显示安装路径以及所安装的 Git 版本号

  图4.2 IDEA Config Git 1

  然后点击 Version Control 下边的 GitHub,点击 + 号,选择 Log In via GitHub,页面会自动跳转,需要在 GitHub 中进行授权,出现自己 GitHub 头像表示绑定成功。既然已经配置了 SSH key,那么就在下边 Clone git repositories using ssh 前边打勾

  图4.3 IDEA Config Git 2

  点击 IDEA 上边 VCS,选择 Create Git Repository,然后可以拉取代码

  图4.4 IDEA Config Git 3

  配置完成如下图4.5所示

  图4.5 IDEA Config Git 4

  如果想要让你的 IDEA 的 Terminal 终端打开能使用 Git 命令,需要做简单配置:Settings →Tools → Terminal → Shell path,选择 Git 安装路径下边的 base.exe 即可

  图4.6 IDEA Config Git 5

  2、IDEA中使用 Git 时 Project 中的文件会有不同的颜色

  
$ git config [--global] user.name "[name]"

  $ git config [--global] user.email "[email address]"

  

 

 

  3、增加/删除文件

  

# 定位到 C盘

 

  $ cd C:

  # 显示当前目录

  $ pwd

  # 添加指定文件到暂存区

  $ git add [file1] [file2] ...

  # 添加指定目录到暂存区,包括子目录

  $ git add [dir]

  # 添加当前目录的所有文件到暂存区

  $ git add .

  # 添加每个变化前,都会要求确认

  # 对于同一个文件的多处变化,可以实现分次提交

  $ git add -p

  # 删除工作区文件,并且将这次删除放入暂存区

  $ git rm [file1] [file2] ...

  # 停止追踪指定文件,但该文件会保留在工作区

  $ git rm --cached [file]

  # 删除缓存

  $ git rm -r -f cached ./

  # 改名文件,并且将这个改名放入暂存区

  $ git mv [file-original] [file-renamed]

  

 

  4、代码提交

  

# 提交暂存区到仓库区

 

  $ git commit -m [message]

  # 提交暂存区的指定文件到仓库区

  $ git commit [file1] [file2] ... -m [message]

  # 提交工作区自上次commit之后的变化,直接到仓库区

  $ git commit -a

  # 提交时显示所有diff信息

  $ git commit -v

  # 使用一次新的commit,替代上一次提交

  # 如果代码没有任何新变化,则用来改写上一次commit的提交信息

  $ git commit --amend -m [message]

  # 重做上一次commit,并包括指定文件的新变化

  $ git commit --amend [file1] [file2] ...

  

 

  

# 列出所有本地分支

 

  $ git branch

  # 列出所有远程分支

  $ git branch -r

  # 列出所有本地分支和远程分支

  $ git branch -a

  # 新建一个分支,但依然停留在当前分支

  $ git branch [branch-name]

  # 新建一个分支,并切换到该分支

  $ git checkout -b [branch]

  # 新建一个分支,指向指定commit

  $ git branch [branch] [commit]

  # 新建一个分支,与指定的远程分支建立追踪关系

  $ git branch --track [branch] [remote-branch]

  # 切换到指定分支,并更新工作区

  $ git checkout [branch-name]

  # 切换到上一个分支

  $ git checkout -

  # 建立追踪关系,在现有分支与指定的远程分支之间

  $ git branch --set-upstream [branch] [remote-branch]

  # 合并指定分支到当前分支

  $ git merge [branch]

  # 选择一个commit,合并进当前分支

  $ git cherry-pick [commit]

  # 删除分支

  $ git branch -d [branch-name]

  # 删除远程分支

  $ git push origin --delete [branch-name]

  $ git branch -dr [remote/branch]

  

 

  

# 列出所有tag

 

  $ git tag

  # 新建一个tag在当前commit

  $ git tag [tag]

  # 新建一个tag在指定commit

  $ git tag [tag] [commit]

  # 删除本地tag

  $ git tag -d [tag]

  # 删除远程tag

  $ git push origin :refs/tags/[tagName]

  # 查看tag信息

  $ git show [tag]

  # 提交指定tag

  $ git push [remote] [tag]

  # 提交所有tag

  $ git push [remote] --tags

  # 新建一个分支,指向某个tag

  $ git checkout -b [branch] [tag]

  

 

  7、查看信息

  

# 显示有变更的文件

 

  $ git status

  # 显示当前分支的版本历史,其中commit后黄色字体显示的是每次提交的版本号,git log 命令显示从最近到最远的显示日志

  $ git log

  # 显示commit历史,以及每次commit发生变更的文件

  $ git log --stat

  # 搜索提交历史,根据关键词

  $ git log -S [keyword]

  # 显示某个commit之后的所有变动,每个commit占据一行

  $ git log [tag] HEAD --pretty=format:%s

  # 显示某个commit之后的所有变动,其"提交说明"必须符合搜索条件

  $ git log [tag] HEAD --grep feature

  # 显示某个文件的版本历史,包括文件改名

  $ git log --follow [file]

  $ git whatchanged [file]

  # 显示指定文件相关的每一次diff

  $ git log -p [file]

  # 显示过去5次提交

  $ git log -5 --pretty --oneline

  # 显示所有提交过的用户,按提交次数排序

  $ git shortlog -sn

  # 显示指定文件是什么人在什么时间修改过

  $ git blame [file]

  # 显示暂存区和工作区的差异

  $ git diff

  # 显示暂存区和上一个commit的差异

  $ git diff --cached [file]

  # 显示工作区与当前分支最新commit之间的差异

  $ git diff HEAD

  # 显示两次提交之间的差异

  $ git diff [first-branch]...[second-branch]

  # 显示今天你写了多少行代码

  $ git diff --shortstat "@{0 day ago}"

  # 显示某次提交的元数据和内容变化

  $ git show [commit]

  # 显示某次提交发生变化的文件

  $ git show --name-only [commit]

  # 显示某次提交时,某个文件的内容

  $ git show [commit]:[filename]

  # 显示当前分支的最近几次提交

  $ git reflog

  

 

  8、远程同步

  

# 下载远程仓库的所有变动

 

  $ git fetch [remote]

  # 显示所有远程仓库

  $ git remote -v

  # 显示某个远程仓库的信息

  $ git remote show [remote]

  # 增加一个新的远程仓库,并命名

  $ git remote add [shortname] [url]

  # 取回远程仓库的变化,并与本地分支合并

  $ git pull [remote] [branch]

  # 上传本地指定分支到远程仓库

  $ git push [remote] [branch]

  # 强行推送当前分支到远程仓库,即使有冲突

  $ git push [remote] --force

  # 推送所有分支到远程仓库

  $ git push [remote] --all

  

 

  

# 恢复暂存区的指定文件到工作区

 

  $ git checkout [file]

  # 恢复某个commit的指定文件到暂存区和工作区

  $ git checkout [commit] [file]

  # 恢复暂存区的所有文件到工作区

  $ git checkout .

  # 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变

  $ git reset [file]

  # 重置暂存区与工作区,与上一次commit保持一致

  $ git reset --hard

  # 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变

  $ git reset [commit]

  # 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit版本一致

  $ git reset --hard [commit]

  # 重置当前HEAD为指定commit,但保持暂存区和工作区不变

  $ git reset --keep [commit]

  # 新建一个commit,用来撤销指定commit

  # 后者的所有变化都将被前者抵消,并且应用到当前分支

  $ git revert [commit]

  # 暂时将未提交的变化移除,稍后再移入

  $ git stash

  $ git stash pop

  

 

  10、其他

  

# 生成一个可供发布的压缩包

 

  $ git archive

  # 添加或指定远程仓库地址

  $ git remote set-url origin "https://..."

  $ git config remote.origin.url "https://..."

  $ git remote rm origin

  

 

  六、Git 使用问题记录

  1、Git 提示:Cant update(master has no tracked branc)

  
3、更新代码后显示: the following untracked working tree files would be overwritten by checkout

  原因:本地代码仓库目录下有untracked文件

  解决:如果没有需要上库的代码,直接执行 git clean -d -fx 删除untracked文件

  4、git pull的时候认证失败:remote: invalid Login or password fatal: Authentication failed for ‘https://…’

  原因:账号密码失效或者是未登录

  解决:windows账户下,控制面板 → 用户帐户 → windows凭据 → 修改git密码

  5、版本回退git reset --hard {hash}后提示:fatal: could not parse object “hash id”

  原因:切换到master分支后没有更新最新代码,git log不包含要reset的节点

  解决:更新代码后git log找到对应节点hash id再reset

  附录:

  Git 官方GitHub

  参考链接:

  https://www.jianshu.com/p/e3385a0e4907
 

  github设置添加SSH - 破男孩 - (cnblogs.com)
 

  https:///liudinglong/p/14028026.html
 

  https://blog.csdn.net/baidu_35692628/article/details/78330055

  以上就是Git 配置与使用及从 0 到 1()的详细内容,想要了解更多 Git 配置与使用及从 0 到 1的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: