【Git】Git环境搭建及工作中经常要用到的git命令总结

Git环境搭建

第一种方法:原生方法搭建

想了一下,本文标题是CentOS7搭建git 服务器,还是讲一下原生方式搭建git服务器吧!

第一步,安装git:

$ yum install git

第二步,创建一个git用户,用来运行git服务:

$ sudo adduser git

第三步,创建证书登录:

收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到

/home/git/.ssh/authorized_keys

文件里,一行一个。(也是通过这个方法关联git公钥的)

第四步,初始化Git仓库:

先选定一个目录作为Git仓库,假定是/srv/haorooms.git,在/srv目录下输入命令:

$ sudo git init --bare haorooms.git

Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git(git用户):

$ sudo chown -R git:git haorooms.git

第五步,禁用shell登录:

出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash

改为:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

第六步,克隆远程仓库:

现在,可以通过git clone命令克隆远程仓库了,在各自的电脑上运行:

$ git clone git@server:/srv/haorooms.git
Cloning into 'sample'...
warning: You appear to have cloned an empty repository.

剩下的推送就简单了。

这个方式的缺点我最上面写过了,git是全路径,假如你是放到/home/www/git/haorooms.git,那个clone地址就是:

 $ git clone git@server:/home/www/git/haorooms.git
或者
 $ git clone git@server:haorooms.git

 

Git使用笔记

1、第一次使用github

=============================================

1)github注册账号 使用邮箱注册账号

先不要创建版本库

2)安装git

Linux请参考网上教程,这里演示windows操作。

TortoiseGit是Windows版的Git,从https://tortoisegit.org/download/下载,然后按默认选项安装即可。

说明:git命令操作和Linux命令差不多,很多命令可以直接使用,比如cd,vi

3)安装完成后,还需要最后一步设置,在命令行输入:

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

4)创建SSH Key

在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

$ ssh-keygen -t rsa -C "youremail@example.com"

会让你输入

. ssh /id_rsa

文件的路径,默认即可

 

然后输入新密码,确认即可。

5)登陆GitHub,打开"Account settings","SSH Keys"页面:

然后,点"Add SSH Key",填上任意Title,在Key文本框里粘贴 

id_rsa.pub

文件的内容:

  为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
  当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。

6)创建本地版本库(我选的D盘)

$ cd /d/phpsetup/www/git/
$ mkdir fhyblog
$ cd fhyblog
$ pwd
/d/phpsetup/www/git/fhyblog

7)通过 git init 命令把这个目录变成Git可以管理的仓库:

$ git init

Initialized empty Git repository in /Users/52fhy/fhyblog/.git/

瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个 .git 的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。

8)在本地版本库fhyblog里放入一些代码或文件

我放了src目录和一个readme.txt文件

9)进入版本库目录:

$ cd /d/phpsetup/www/git/fhyblog/

10)更新本地版本库(.指当前所有目录及文件)

$ git add .

当然,如果你仅仅是提交一个文件,可以这样写

$ git add readme.txt

更新一个目录这样写:

$ git add src/

此时还没有真正提交到版本库,只是放在暂存区。提交请继续往下看:

11)执行更新操作:

$ git commit -m "相关说明"

[master 91115af] .
1 file changed, 53 insertions(+)
create mode 100644 "\345\215\207\347\272\247\346\227\245\345\277\227.txt"

12)更新至远程(Github):

要关联一个远程库,使用命令 

$ git remote add origin git@github.com:yourname/yourgit.git

关联后,使用命令

git push -u origin master

进行第一次推送master分支的所有内容;

所以,远程github上确保你的版本库是空的,否则你在这一步可能会不成功。

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

$ git push origin master

Warning: Permanently added the RSA host key for IP address '192.30.252.129' to the list of known hosts.
Enter passphrase for key '/c/Users/YJC/.ssh/id_rsa':
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 292 bytes | 0 bytes/s, done.
Total 2 (delta 0), reused 0 (delta 0)
To git@github.com:52fhy/fhyblog.git
efe4969..91115af master -> master
Branch master set up to track remote branch master from origin.

Admin@YJC-PC /d/phpsetup/www/git/fhyblog (master)

如果完成到这里,恭喜你!你已经有了本地和远程版本库了。

===================================================

2、再次使用git

以后本地版本库里有更新,使用  git add 添加,使用命令 

git commit

提交。

 

更新至远程使用命令 

git push origin master

推送

 

===================================================

3、从远程更新至本地版本库

要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。

$ git clone git@github.com:52fhy/fhyBlog.git

Cloning into 'fhyBlog'...
Enter passphrase for key '/c/Users/YJC/.ssh/id_rsa':
remote: Counting objects: 284, done.
remote: Compressing objects: 100% (238/238), done.
remote: Total 284 (delta 28), reused 283 (delta 27)R
Receiving objects: 94% (267/284), 644.00 KiB | 12.00 KiB/
Receiving objects: 100% (284/284), 676.81 KiB | 12.00 KiB/s, done.
Resolving deltas: 100% (28/28), done.
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

git 删除远程仓库的某次提交

删除上一次远程仓库的提交,修改上次提交的代码,做一次更完美的commit。

git reset commitId (注:不要带–hard)到上个版本

git stash 暂存修改

git push origin --force 分支名   强制push,远程的最新的一次commit被删除

git stash pop 释放暂存的修改,开始修改代码

git add . -> git commit -m "massage" -> git push
------------------------------------------------------------------------------------------------------------------

分支操作

  1. git branch 创建分支

  2. git checkout -b 创建并切换到新建的分支上

  3. git checkout -b 分支名 --track origin/分支名  创建本地分支并切换到新建的本地分支上,并且追踪远程的分支
  4. git checkout 切换分支

  5. git branch 查看分支列表

  6. git branch -v 查看所有分支的最后一次操作

  7. git branch -vv 查看当前分支

  8. git brabch -b 分支名 origin/分支  名 创建远程分支到本地

  9. git branch --merged 查看别的分支和当前分支合并过的分支

  10. git branch --no-merged 查看未与当前分支合并的分支

  11. git branch -d 分支名 删除本地分支

  12. git branch -D 分支名 强行删除分支

  13. git branch origin :分支名 删除远处仓库分支

  14. git merge 分支名 合并分支到当前分支上

  15. git push origin --delete 分支名   删除远处仓库分支

文件暂存操作

  git add xx命令可以将xx文件添加到暂存区,如果有很多改动可以通过 git add -A .来一次添加所有改变的文件。

  注意 -A 选项后面还有一个句点。 git add -A表示添加所有内容, git add . 表示添加新文件和编辑过的文件不包括删除的文件; git add -u 表示添加编辑或者删除的文件,不包括新添加的文件。

储藏操作

  1. git stash 暂存当前修改 -------- 实际应用中推荐给每个stash加一个message,用于记录版本,使用git stash save取代git stash命令 git stash save "test-cmd-stash"。

  2. git stash apply 恢复最近的一次暂存

  3. git stash pop 恢复暂存并删除暂存记录

  4. git stash list 查看暂存列表

  5. git stash drop 暂存名(例:stash@{0}) 移除某次暂存

  6. git stash clear 清除暂存

  7. git stash save -u  名称   暂存当前修改(包含未跟踪的文件)
  8. git stash show 暂存号   显示暂存的基本信息
  9. git stash show -p 暂存号   显示暂存的基本信息(详细)

回退操作

      方法:
     git reset --hard <commit_id>
     git push origin HEAD --force 

     git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
        git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
        git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容

  1. git reset --hard HEAD^ 回退到上一个版本

  2. git reset --hard ahdhs1(commit_id) 回退到某个版本

  3. git checkout -- file撤销修改的文件(如果文件加入到了暂存区,则回退到暂存区的,如果文件加入到了版本库,则还原至加入版本库之后的状态)

  4. git reset HEAD file 撤回暂存区的文件修改到工作区

标签操作

  1. git tag 标签名 添加标签(默认对当前版本)

  2. git tag 标签名 commit_id 对某一提交记录打标签

  3. git tag -a 标签名 -m '描述' 创建新标签并增加备注

  4. git tag 列出所有标签列表

  5. git show 标签名 查看标签信息

  6. git tag -d 标签名 删除本地标签

  7. git push origin 标签名 推送标签到远程仓库

  8. git push origin --tags 推送所有标签到远程仓库

  9. git push origin :refs/tags/标签名 从远程仓库中删除标签

其它操作

常规操作

  1. git push origin test 推送本地分支到远程仓库

  2. git rm -r --cached 文件/文件夹名字 取消文件被版本控制

  3. git reflog 获取执行过的命令

  4. git log --graph 查看分支合并图

  5. git merge --no-ff -m '合并描述' 分支名 不使用Fast forward方式合并,采用这种方式合并可以看到合并记录

  6. git check-ignore -v 文件名 查看忽略规则

  7. git add -f 文件名 强制将文件提交

git创建项目仓库

1. git init 初始化
2. git remote add origin url 关联远程仓库
3. git pull
4. git fetch 获取远程仓库中所有的分支到本地

忽略已加入到版本库中的文件

1. git update-index --assume-unchanged file 忽略单个文件
2. git rm -r --cached 文件/文件夹名字 (. 忽略全部文件)

取消忽略文件

git update-index --no-assume-unchanged file

拉取、上传免密码

git config --global credential.helper stor

 

Git fetch远程分支操作

 

  1.  git fetch origin 拉取远端所有分之提交,获取所有的提交记录

  2.  git fetch origin master:dev 拉取远端分支到本地分支dev

  3.  git branch -a 查看拉取到本地的分支列表,包含远端的所有分支

  4.  git checkout -b dev origin/dev 创建本地分支dev

 

git删除某次提交(某个commit)的方法

例如我的提交历史如下

commit 58211e7a5da5e74171e90d8b90b2f00881a48d3a
Author: test <test@36nu.com>
Date: Fri Sep 22 20:55:38 2017 +0800
add d.txt
commit 0fb295fe0e0276f0c81df61c4fd853b7a000bb5c
Author: test <test@36nu.com>
Date: Fri Sep 22 20:32:45 2017 +0800
add c.txt
commit 7753f40d892a8e0d14176a42f6e12ae0179a3210
Author: test <test@36nu.com>
Date: Fri Sep 22 20:31:39 2017 +0800
init
假如要删除备注为add c.txtcommit为0fb295fe0e0276f0c81df61c4fd853b7a000bb5c的这次提交

首先找到此次提交之前的一次提交的commit7753f40d892a8e0d14176a42f6e12ae0179a3210
执行如下命令
git rebase -i 7753f40
弹出如下界面
```

将0fb295f这一行前面的pick改为drop,然后按照提示保存退出

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值