git 基础配置

作者: adm 分类: java 发布时间: 2022-07-18

配置信息—以用户信息为例

$ git config --global user.name 'your_name' 
$ git config --global user.email 'your_email@domain.com'

自动记录下git 账号信息,可自动保存账号密码

git config --global credential.helper store 

使用指定ssh密钥,不指定默认在用户名/.ssh下

git config --global core.sshCommand "ssh -i ~/.ssh/id_rsa"

生成SSH密钥过程:
1.查看是否已经有了ssh密钥:cd ~/.ssh
如果没有密钥则不会有此文件夹,有则备份删除
2.生存密钥:

$ ssh-keygen -t rsa -C 'your_email@domain.com'

如果提示 ssh-keygen 不是内部命令或者。。。

这时候要配置环境变量,具体操作如下:

1.找到Git/usr/bin目录下的ssh-keygen.exe(如果找不到,可以在计算机全局搜索)

2.属性–>高级系统设置–>环境变量–>系统变量,找到Path变量,进行编辑,End到最后,输入分号,粘贴复制的ssh-keygen所在的路径,保存;

按3个回车,密码为空。

Your identification has been saved in /home/tekkub/.ssh/id_rsa.
Your public key has been saved in /home/tekkub/.ssh/id_rsa.pub.
The key fingerprint is:
………………

最后得到了两个文件:id_rsa和id_rsa.pub

仓库管理常用命令

git add 主要是把新文件或者文件变动的情况添加到暂存区
$ git add readme.md # 将 readme.md 文件添加到暂存区
$ git add . # 将当前工作目录的所有文件添加到暂存区
$ git add -u # 把修改之后的文件(这些文件已经被管理起来了)一次性提交到暂存区

暂存区的文件也是相当于被 git 管理了的。
git status 可以查看工作目录和暂存区的状态

$ git status

Tips:假如 bash 有颜色显示的话,会看到红色是代表工作目录,绿色代表暂存区。
git commit 命令进行提交,提交的历史会被记录下来

$ git commit -m 'Add readme.md' # -m 指定 commit 的信息
$ git commit # 这时候会跳出一个文本输入界面,让你输入更多的 commit 信息

git pull 命令进行先拉取远程仓库

$ git pull

git强制覆盖本地命令

git fetch --all &&  git reset --hard origin/master && git pull

git push 命令进行提交到远程仓库。

$git push

git 强制推送到远程仓库,且覆盖远程代码库。

git push -f --set-upstream origin master:master

git log 提交日志

git mv 将 git 管理的文件进行重命名
git mv readme readme.md # 使用git的方式对文件进行重命名
git rm 从 git 管理的文件删除某个已管理的文件,同时把修改的情况添加到暂存区
git log 命令查看提交历史,也就是版本演进历史

git log # 只查看当前分支(Head所指的分支)的log情况
git log --oneline # 简洁的显示版本更新信息
git log -n2  # n2 代表查看最近两次commit历史
git log -2   # 2 代表查看最近两次commit历史
git log -n2 --oneline # 简洁的显示最近两次的版本更新信息
git log branch_name # 后面跟上分支名表示查看该分支的log日志
 
git log -all # 列出所有分支的log
git log --all --graph # 以图形化的方式查看
git log --oneline --all # 以简洁的方式查看所有分支的log
git log --oneline --all -n4# 以简洁的方式查看所有分支的log
 
git help log # 以web的方式查看log的帮助文档,等同于
git help --web log # 和上面那条效果一样

版本回退
git reset 命令语法格式如下:

git reset [--soft | --mixed | --hard] [HEAD]

如果已经提交,并push到远程仓库

$ git reset --hard HEAD~3  # 回退上上上一个版本  
$ git reset –hard bae128  # 回退到某个版本回退点之前的所有信息。 commit
$ git reset --hard origin/master    # 将本地的状态回退到和远程的一样 
注意:谨慎使用 –-hard 参数,它会删除回退点之前的所有信息。

本地提交未到远程仓库

git reset --soft(撤销commit)
git reset --mixed(撤销 commit 和 add 两个动作)

分支相关
分支就相当于一个独立的开发空间,比如前端和后端开发,前端开发可以建立一个分支,后端开发也可以建立一个分支,但是彼此在不同工作空间里面工作的时候是互不影响的,当需要集成的时候又可以把他们集成到一个公共的分支上面去。下面是有关分支的操作:

HEAD->temp2 表示当前的 HEAD 指向的是 temp2 分支,那么其实真正指向的是该分支最后一次 commit

git branch 查看分支情况、创建分支、删除分支
git branch -v # 查看本地分支的详细情况
git branch -a # 查看所有分支,包括远端分支,但没有过于详细的信息
git branch -av # 查看所有分支情况
 
git branch branch_name hash_value # 创建一个新的分支,基于 hash_value 的这个 commit 创建一个新的分支,hash_value 可以省略,那么默认是基于当前分支的最后一个 commit 创建。
 
git branch -d branch_name
git branch -D branch_name  # 这个分支已经有了一些 commit
git checkout 切换分支或者创建分支
git checkout branch_name # 切换分支
git checkout master
 
git checkout -b branch_name git_id # 创建一个新的分支并切换过去,git_id可以是hash_value,也可以是某个分支的名字(分支的名字其实就指向了某个 commit)
git checkout -b temp 9ef147d
git checkout -b temp2 master


git checkout -b 本地分支名 origin/远程分支名   #从远程仓库里拉取一条本地不存在的分支时:这个将会自动创建一个新的本地分支,并与指定的远程分支关联起来。


git clone 指定分支
git clone不指定给分支时,默认会把远程仓库整个给clone下来,但只会在本地默认创建一个master分支。

如果远程还有其他的分支,此时用git branch -a查看所有分支:

$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/dev
remotes/origin/master

能看到远程的所有的分支,如remotes/origin/dev
可以使用checkout命令来把远程分支取到本地,并自动建立tracking:

$ git checkout -b dev origin/dev

或者使用-t参数,它默认会在本地建立一个和远程分支名字一样的分支:

$ git checkout -t origin/dev

直接clone指定分支

git clone -b  --single-branch 

例子:

git clone -b dev --single-branch https://github.com/dev/dev.git

关联分支
本地分支与远程分支关联

git branch --set-upstream-to=origin/remote_branch  your_branch
其中,remote_branch是你本地分支要对应的远程分支;your_branch是你当前的本地分支。不关联分支无法推送

合并分支操作如下:
1、首先切换到master分支上

git checkout master

2、确保master代码是最新的代码

git pull origin master

3、然后我们把dev分支的代码合并到master上

git merge dev

4、然后查看状态及执行提交命令

git status
On branch master
Your branch is ahead of ‘origin/master’ by 12 commits.
(use “git push” to publish your local commits)
nothing to commit, working tree clean

//上面的意思就是你有12个commit,需要push到远程master上
5、执行将刚才合并的代码,提交到master

最后执行下面提交命令

git push origin master

切换分支,必须在.git的同级目录下执行
比较 — git diff
2.5.1. 不同 commit、分支 之间进行比较

git diff hash_value1 hash_value2 # hash_value1 对应的 comimit 和 hash_value2 对应的 commit 进行比较
git diff hash_value1 hash_value2 -- file_name1 file_name2 # 在上述基础之上,只比较 file_name1、file_name2 这两个文件
 
git diff branch_name1 branch_name2 # 对两个分支进行比较
git diff branch_name1 branch_name2 -- file_name1 file_name2
 
git diff HEAD HEAD^  # HEAD 指向的 commit 与该 commit 的父亲 commit 进行比较
git diff HEAD HEAD^1 # 同上
git diff HEAD HEAD^^ # HEAD 指向的 commit 与该 commit 的父亲的父亲 commit 进行比较
 
git diff HEAD HEAD~  # HEAD 指向的 commit 与该 commit 的父亲 commit 进行比较
git diff HEAD HEAD~1 # 同上
git diff HEAD HEAD~~ # HEAD 指向的 commit 与该 commit 的父亲的父亲 commit 进行比较
git diff HEAD HEAD~2 # 同上

1.可以直接使用 HEAD,因为 HEAD 实际上指向的是某个 commit 的。同理,比较两个分支的差异其实就是比较两个分支最近 commit 的差异,因为分支名其实就是一个指针,指向的还是分支最近的 commit。
2.^ 后面只能跟数字1,一个 ^ 就表示往父亲 commit 这边追溯一个,以此类推
3.~ 后面跟任何数字都可,同样一个 ~ 就表示往父亲 commit 这边追溯一个,以此类推

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!