好久没用Git(分布式管理方案)了,以前的总结回顾一下

下载安装

Git下载地址https://git-scm.com/downloads  安装一般选择default editor, 传输模式选择openssl

 

配置git 用户名及邮箱

安装完成后,还需要最后一步设置,在命令行输入:
    $ git config --global user.name "Your Name"
    $ git config --global user.email "email@example.com"

 

证书生成及配置

ssh 公钥认证是ssh认证的方式之一。通过公钥认证可实现ssh免密码登陆,git的ssh方式也是通过公钥进行认证的。

使用 ssh-keygen 时,请先进入到 ~/.ssh 目录,不存在的话,请先创建。并且保证 ~/.ssh 以及所有父目录的权限不能大于 711

对于公钥和私钥文件也是: 当前用户一定要有执行权限,其他用户最多只能有执行权限。

不指定文件名和密钥类型的时候,默认生成的两个文件是:

id_rsa   id_rsa.pub    第一个是私钥文件,第二个是公钥文件

---------------------题外话----------------------------------------------------------------------

要达到A机器ssh登录B机器无需输入密码;

先在A机器  ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub,将 .pub 文件复制到B机器的 .ssh 目录, 并 cat id_dsa.pub >> ~/.ssh/authorized_keys;要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。

设置authorized_keys权限   设置.ssh目录权限
$ chmod 600 authorized_keys 
$ chmod 700 -R .ssh

加密方式选 rsa|dsa均可以,默认dsa。可以通过 -f 选项指定生成文件的文件名,不指定会询问 filename to save the key。 后面会询问是否需要输入密码。输入密码之后,以后每次都要输入密码。请根据你的安全需要决定是否需要密码,如果不需要,直接回车。

-C选项是公钥文件中的备注

 

客户添加秘钥

1、把专用密钥添加到 ssh-agent 的高速缓存中:

ssh-add ~/.ssh/id_dsa

2、从ssh-agent中删除密钥:

ssh-add -d ~/.ssh/id_xxx.pub

3、查看ssh-agent中的密钥:

ssh-add -l

 

------------------------------------------------------------------------------

SSH 公钥设置   (配置Github或码云。。。。)

https://gitee.com/help/articles/4191#article-header0

验证GIT登录

 

TortoiseGit安装配置使用

查看分支:git branch

创建分支:git branch <name>  


删除分支:git branch -d <name>


切换分支:git checkout <name>


创建+切换分支:git checkout -b <name>


合并某分支到当前分支:git merge <name>

[fengdj@hs-192-168-54-161 clone]$ git merge dev
Updating 1e6f2ce..a722c1b
Fast-forward
 test.txt |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

 

拉取服务器的代码的出现了冲突,记录下以供后续参考:
1.用git pull来更新代码的时候,遇到了下面的问题:error: Your local changes to the following files would be overwritten by merge: xxx/xxx/xxx.php Please, commit your changes or stash them before you can merge. Aborting

error: Your local changes to the following files would be overwritten by merge:
        03yxxxstemLIB/libxxxober/libxxxber.dll
Please commit your changes or stash them before you merge.
 

通过git stash将工作区恢复到上次提交的内容,同时备份本地所做的修改,之后就可以正常git pull了,git pull完成后,执行git stash pop将之前本地做的修改应用到当前工作区。

git stash
git pull
git stash pop

git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。

git pull:拉取服务器上的代码;

git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。

git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。

git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。


 

 

初始化一个Git仓库,使用git init命令。或者clone一个仓库。

1. 使用git init命令

  • 进入某个空的文件夹下,打开Git Bash命令窗口输入git init
  • 执行完上面的命令,当前目录下会自动生成.git隐藏文件夹,该隐藏文件夹就是git版本库
  • 也可以在当前目录下的指定子目录创建版本库  git init subDir
  • 裸仓库(bare仓库):所谓的裸仓库,就是没有工作区的仓库,直接将核心内容放置于指定目录    git init --bare


2. git clone -b +分支 + 地址

$ git clone git@github.com:michaelliao/gitskills.git
Cloning into 'gitskills'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 3
Receiving objects: 100% (3/3), done.


添加文件到Git仓库,分两步:
使用命令git add <file>,注意,可反复多次使用,添加多个文件;
使用命令git commit -m <message>,完成。

git status命令可以让我们时刻掌握仓库当前的状态,上面的命令输出告诉我们,
readme.txt被修改过了,但还没有准备提交的修改。

git diff readme.txt 

提交修改和提交新文件是一样的两步,第一步是git add:
$ git add readme.txt
$ git commit -m "add distributed"

版本回退
上一个版本就是HEAD^,上上一个版本就是HEAD^^,
当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
git reset --hard HEAD^
git reset --hard 71f63   恢复到指定版本

 

Git提供了一个 命令git reflog用来记录你的每一次命令    

git log 此命令可以查看commit提交历史记录,等同于git reflog | grep commit
git reflog 除了可看commit记录还有reset记录

现在假定是凌晨3点,你不但写了一些胡话,还git add到暂存区了:
$ git add readme.txt
在commit之前,你发现了这个问题。用git status查看一下,修改只是添加到了暂存区,还没有提交:
用命令git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区

 

git reset --hard指的是恢复到某一个库版本。

git reset HEAD <file>...指的是拉最近一次提交到版本库的文件恢复暂存区某一个文件。

git reset f0a1684 <file>. 指定库版本拉文件到暂存区,然后再git checkout -- <file> 命令来把 暂存区文件拉到工作区

(有时候工作区的修改可能不尽如人意,需要git checkout将暂存区内容还原到工作区。)

 

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

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

删除暂存区指定文件:

git rm --cached readme.txt //将暂存区中的内容删除,工作区中对应的文件并不会受到影响。

git rm readme.txt //不但将暂存区中的内容删除,并且工作区中对应的文件也会被删除。

上面两个命令如果要删除多个文件使用空格分隔文件名称即可。

清空暂存区,其实就是删除.git目录下的index文件

 

确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit:

----

---------

---------------------------需要注意的---------------------------------------------------------------------

git commit操作的是本地库,git push操作的是远程库。

git commit是将本地修改过的文件提交到本地库中。
git push是将本地库中的最新信息发送给远程库。

--------------------------------------------------------------------------------------------

--------------------

----

GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
现在,我们根据GitHub的提示,在本地的learngit仓库下运行命令:
$ git remote add origin git@github.com:michaelliao/learngit.git
请千万注意,把上面的michaelliao替换成你自己的GitHub账户名
下一步,就可以把本地库的所有内容推送到远程库上:

将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。

$ git push -u origin master 
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,
Git不但会把本地的master分支内容推送的远程新的master分支,
还会把本地的master分支和远程的master分支关联起来,

在以后的推送或者拉取时就可以简化命令。
$ git push origin master  如果当前分支只有一个追踪分支,那么主机名都可以省略。

//git push 默认只推送当前分支,这叫做simple方式。

 

git可以团队开发,难免会出现开发错误,可能要明确责任是由谁造成的。

加入在根目录下有index.html,那么可以使用如下命令:

 

[Shell] 纯文本查看 复制代码

1

$ git blame index.html

 

git blame -L 2,5 index.html

 

https://www.softwhy.com/article-8627-1.html 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

字正腔圆

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

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

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

打赏作者

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

抵扣说明:

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

余额充值