Git配置与常见操作

前言

  • git由Linus(linux之父)使用c预言开发
  • git为分布式版本控制系统

安装与配置

安装

教程就网上找咯…

配置

安装后需要配置git账号和密码

// 这里设置的是全局账号和邮箱
$ git config --global user.name "username"
$ git config --global user.email "email"

查看git项目配置的全局配置

$ git config --list

生成密钥

$ ssh-keygen -t rsa -f ~/.ssh/id_rsa_x -C "email"

测试是否联通

$ ssh -T git@github.com

git 添加多个远程账号

参考链接:git添加多个远程账号

创建版本库(本地仓库)

  1. 选择一个合适的地方,创建一个空目录,创建的版本库(仓库)位于/Users/workspace/codes/personal
$ mkdir personal
$ cd personal
$ pwd
/Users/workspace/codes/personal
  1. 通过git init命令把这个目录变成Git可以管理的仓库
$ git init
Initialized empty Git repository in /Users/workspace/codes/personal/.git/
$ ls -ah
.	..	.git

仓库建好了,是一个空的仓库(empty Git repository)。当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。

配置远程仓库

步骤:

step1:创建SSH Key

  1. 在用户主目录下查看是否有.ssh目录,这个目录下是否有id_rsaid_rsa.pub这两个文件。若有,next step,please
$ cd    //进入用户主目录
$ ls -a //查看隐藏目录
.ssh
$ cd .ssh/
id_rsa		id_rsa.pub
  1. 如果没有以上目录和文件,则直接在终端创建SSH Key
$ ssh-keygen -t rsa -C "youremail@example.com"

step2: 配置远程仓库SSH Key

在这里插入图片描述

本地仓库关联远程仓库

$ git remote add origin git@server-name:path/repo-name.git

然后可以使用git push -u origin master第一次推送master分支的所有内容

每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改

git常用操作

把文件添加到版本库(本地仓库)

工作区与版本库

  1. 工作区:就是你创建git仓库的那个目录
  2. 版本库:工作区隐藏目录.git

提交步骤:

  1. 用命令git add <file>告诉Git,把文件添加到仓库:(将文件修改提交至缓存区)
$ git add readme.txt
  1. 用命令git commit -m <message>告诉Git,把文件提交到仓库(将缓存区文件提交至仓库)
// -m后面输入的是本次提交的说明
$ git commit -m "wrote a readme file"
[master (root-commit) eaadf4e] wrote a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt

查看工作区状态

git status查看git仓库当前状态

$ git status
On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	deleted:    readme.tx

no changes added to commit (use "git add" and/or "git commit -a")

如果git status告诉你有文件被修改过,用git diff可以查看修改内容

版本回退

  1. 使用git log命令查看历史提交记录
  2. 使用git reset --hard <head>回退到指定版本,headcommit id版本号,可写前几位
  3. 使用git reflog查看命令历史,借此也可找回回退版本到commit id

撤销修改

git checkout -- readme.txt,把readme.txt文件在工作区的修改全部撤销,有两种情况:

  1. readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态(回到最近一次git commit状态)

  2. readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。(回到最近一次git add状态)

git reset HEAD <file>把暂存区的修改撤销掉(unstage),重新放回工作区(跟没修改差不多了…)


场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库

如果改乱的多不如就直接版本回退了吧。。。

删除文件

确实需要删除文件:

  1. 删除工作区文件:rm <file>
  2. 删除版本库文件:git rm <file>(实际已经将修改提交至暂存区了)
  3. 提交修改至工作区:git commit -m <message>
  4. done

误删除文件,恢复:

git checkout --<file>实际就是前面的版本回退

查看当前分支

$ git branch

创建分支

  • git branch命令创建分支

  • git checkout -b <branch>命令加上-b参数表示创建并切换,相当于以下两条命令

    $ git branch <branch>
    $ git checkout <branch>
    
  • git switch -c <branch>命令加上-b参数表示创建并切换

切换分支

$ git check <branch>
$ git switch <branch>

合并分支

当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

合并指定分支至当前分支

$ git merge <branch>

删除分支

$ git branch -d <branch>

推送分支

该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:

$ git push origin <branch>

如果推送失败,先用git pull抓取远程的新提交

创建和拉取远程分支

在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致

$ git checkout -b <branch> origin/master

获取最新提交

  • git fetch <origin> <branch>将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中,需要自己merge本地分支
  • git pull = git fetch +git merge,有冲突自己先手动解决,提交后push再pull
$ git pull

git pull失败,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置devorigin/dev的链接:

$ git branch --set-upstream-to=origin/dev dev	

然后git pull

如果合并有冲突,需要手动解决,解决的方法和分支管理中的解决冲突完全一样。解决后,提交,再push

查看标签 tag

查看所有标签

$ git tag

查看标签信息(按字母排序)

$ git show <tagname>

创建标签 tag

  1. 先切换到需要打标签的分支
  2. 然后使用git tag <tagname>创建标签
$ git tag <tagname>
  1. 使用commit id创建标签(先通过git log --pretty=oneline --abbrev-commit获取commit id
$ git tag <tagname> <commit id>
  1. 创建带有说明的标签,用-a指定标签名,-m指定说明文字
$ git tag -a <tagname> -m "describe" <commit id>

删除标签

$ git tag -d <tagname>

推送标签至远程仓库

  • 推送某个标签
$ git push origin <tagname>
  • 一次性推送所有标签
$ git push origin --tag

删除远程仓库标签

  1. 先删除本地仓库标签
$ git tag -d <tagname>
  1. git push删除远程仓库标签
$ git push origin:refs/tags/<tagname>

多人协作工作模式

  1. 首先,可以试图用git push origin <branch-name>推送自己的修改;
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  3. 如果合并有冲突,则解决冲突,并在本地提交;
  4. 没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值