git快速入门教程

  1. git环境搭建
  1. 初始化命令

git init把当前目录变成Git可以管理的仓库。

  1. 关联远程库

git remote add origin git@github.com:xxx/xxx.git

关联后,使用命令git push -u origin master第一次推送master分支的所有内容;

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

git fetch [remote-name]//该命令会到远程仓库中拉取所有你本地仓库中还没有的数据。

在Windows上更新了git 版本后,clone/pull时出现错误,

unable to negotiate with *.*.*.*: no matching key exchange methodfound. Their offer: diffie-hellman-group1-sha1

解决方法:在执行git pull/clone之前,输入:

export GIT_SSH_COMMAND='ssh -o KexAlgorithms=+diffie-hellman-group1-sha1' 

这种方法每次打开git窗口,都要重新输入一次。

可以在C:\Users\Spring\.ssh的config文件下,添加内容如下,

Host *.*.*.*

KexAlgorithms +diffie-hellman-group1-sha1

  1. git文件添加

添加文件到Git仓库,分两步:

命令:git add <file>命令把要提交的所有修改放到暂存区;

命令:git commit -m <message>,使更改上传至版本库中。

命令:git commit --amend修改提交,使用ESC+ZZ退出编辑或shift + : +wq即出

一旦提交后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的:

  1. git版本回退

用HEAD表示当前版本

上一个版本就是HEAD^

上上一个版本就是HEAD^^

上100个版本写成HEAD~100

git reset命令进行回退版本,git reset --hard HEAD^

git reset --hard 1094a(commit id),本地文件会被修改

git reset --soft 1094a(commit id),本地文件不会被修改

git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区。

  1. git文件回退

git checkout命令可以撤销修改:

1)修改后还没有被放到暂存区,撤销修改就回到和版本库一模一样的状态;

2)已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令

git checkout changeid filename//将文件回到changeid 对应的版本

$ git checkout .//当前目录所有修改的文件 从HEAD中签出并且把它恢复成未修改时的样子,如果其对应的文件被修改过,那么该修改会被覆盖掉。

  1. 从远程获取
  1. 远程克隆

git clone git@github.com:xxx/xxx.git远程库克隆至本地,目录名与远程库同名

$ git clone <版本库的网址> <本地目录名>//远程库克隆至本地,指定目录名

  1. 从远程获取

git fetch origin branch1:branch2

使用远程branch1分支在本地创建branch2(但不会切换到该分支),如果本地不存在branch2分支, 则会自动创建一个新的branch2分支,

如果本地存在branch2分支, 并且是`fast forward', 则自动合并两个分支, 否则, 会阻止以上操作

  1. 获取某次提交的文件

$ git checkout  commit_id file_name  #//取文件file_name的 在commit_id是的版本。commit_id为 git commit 时的sha值。

  1. 获取并合并

$git pull <远程主机名> <远程分支名>:<本地分支名>//取回远程主机某个分支的更新,再与本地的指定分支合并;

$ git pull origin next//取回origin/next分支,再与当前分支合并;

  1. 推送至远程

$ git push <远程主机名> <本地分支名>:<远程分支名>

从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

$git push origin master:master或$git push origin master  (在local repository中找到名字为master的branch,使用它去更新remote repository下名字为master的branch,如果remote repository下不存在名字是master的branch,那么新建一个)

$git push origin master:refs/for/mybranch (在local repository中找到名字为master的branch,用他去更新remote repository下面名字为mybranch的branch)

$git push origin HEAD:refs/for/mybranch (HEAD指向当前工作的branch,master不一定指向当前工作的branch,所以我觉得用HEAD还比master好些)

$git push origin    :mybranch (再origin repository里面查找mybranch,删除它。用一个空的去更新它,就相当于删除了)

其中refs/for 的意义在于我们提交代码到服务器之后是需要经过code review 之后才能进行merge的,而refs/heads 不需要。如:

git push origin HEAD:refs/for/QinlingS

  1. git分支操作

$ git branch dev//创建dev分支

$ git checkout master     #//取出master版本的head。

$git checkout -b dev//创建并跳转至dev分支

$git branch -d dev//删除本地dev分支

$git push origin –delete dev//删除远程dev分支

$ git checkout tag_name    #//在当前分支上 取出 tag_name 的版本

$ git checkout  master file_name  #//放弃当前对文件file_name的修改

$ git checkout  commit_id file_name  #//取文件file_name的 在commit_id是的版本。commit_id为 git commit 时的sha值。

$ git checkout -b newBranch origin/master//在远程master分支创建新分支newBranch

$ git checkout -b dev/1.5.4 origin/dev/1.5.4//从远程dev/1.5.4分支取得到本地分支/dev/1.5.4

$git merge dev//命令用于合并指定分支(dev)到当前分支

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

$git branch --set-upstream branch-name origin/branch-name//建立本地分支和远程分支的关联;

  1. git信息查看

$git log命令显示从最近到最远的提交日志

$git log -p file//查看file的变更记录,会列出具体更改内容

$git log file//查看file的变更记录,只列出更改commit-id及对应的log

$git reflog用来记录你的每一次命令

$git status查看本地仓库状态

$git remote -v查看远程库信息

  1. 其它命令

$ git stash//把当前工作现场“储藏”起来

$ git stash pop//恢复储藏的工作现场,同时把stash内容也删了

$ git cherry-pick commit-id//将commit-id的提交应用到当前分支,生成一个新的commit。

$ git revert commit-id//撤销指定的版本,撤销也会作为一次提交进行保存。

$ git rebase origin//把当前分支更新到最新的"origin"分支

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片机的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值