git命令总结

2019-12-05 16:01:08来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

git命令总结

git命令总结

基本命令

  • git init 创建版本库
  • git add filename 将文件添加到版本库的暂存区
  • git commit -m "版本描述" 将文件从暂存区提交到版本库的当前分支
  • git status 查看当前仓库状态
  • git diff filename 查看文件不同版本的区别
  • git log 查看历史记录,显示从最近到最远的提交日志
  • git log --pretty=oneline
  • git reset --hard HEAD^ 回退到上一个版本
  • git reset --hard HEAD^^ 回退到上上个版本
  • git reset --hard HEAD~100
  • git reset --hard commit_id 指定回退到某个版本
  • git reflog 记录每一次命令,可用来查找未来版本的commit_id
  • git diff HEAD -- filename 查看工作区和版本库里最新版本的区别
  • git checkout -- filename 丢弃工作区的修改,即使用版本区的版本替换工作区的版本
  • git reset HEAD filename 将暂存区的修改撤销掉,重新放回工作区
  • git rm filename 从版本库中删除文件

远程仓库


1 创建ssh key

  • ssh-keygen -t rsa -C "**********@163.com"

2 进入 https://github.com/settings/keys
3 在key文本框中粘贴id_rsa.pub中的内容

添加远程仓库

在github中创建一个新的仓库
Repository name填入learngit,点击添加
按照提示在本地的learngit仓库运行命令:

  • git remote add origin https://github.com/UserName/learngit.git

把本地库所有内容推送到远程库

  • git push -u origin master

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
自此,可以通过命令:git push origin master将本地提交的最新修改推送到github中了。

从远程库克隆

1 登录github,创建一个新的仓库:gitskills
我们勾选Initialize this repository with a README,这样GitHub会自动为我们创建一个README.md文件。
2 git clone https://github.com/UserName/gitskills.git
git clone git@github.com:UserName/gitskills.git(推荐使用)

分支管理

每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。
截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。
HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,
HEAD指向的就是当前分支。
一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点。
当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上
1 创建分支、合并分支

  • git checkout -b 新分支 创建并切换到新分支

相当于以下两个命令:

  • git branch dev
  • git checkout dev
  • git branch 查看当前分支
  • git checkout master 切换回naster分支
  • git merge dev 将dev合并到当前分支
  • Fast-forward信息:快进模式,直接把master指向了dev的当前提交
  • git branch -d dev 删除dev分支

更科学的切换命令:

  • git switch -c dev 创建并切换到新的dev分支
  • git switch master 切换到已有的master分支

合并冲突

创建新的分支feature1,是master分支和feature1分支各自有新的提交,这种情况下,git无法执行快速合并,只能试图把各自的修改合并起来,该合并有可能会有冲突
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容

  • git log --graph --pretty=oneline --abbrev-commit 查看分支的合并情况

分支管理策略
通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
--no-ff:表示禁用Fast forward

  • git merge --no-ff -m "merge with no-ff" dev 合并分支,禁用Fast forward

在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

  • git stash 将当前工作现场储藏起来,等回复现场后继续工作
  • git stash list 查看工作现场去了哪
  • git stash pop 恢复现场并将stash内容删除(相当于git stash apply+git stash drop)
  • git stash apply stash@{0} 恢复指定的stash
  • git cherry-pick 4c805e2 复制一个特定的提交到当前分支
  • git branch -D feature-vulcan 强制删除分支
  • git remote -v 查看远程库的信息
  • git checkout -b branch-name origin/branch-name 在本地创建和远程分支对应的分支

当other的最新提交和自己的有冲突时:

  • git pull 将最新提交从远程抓下来
  • git branch --set-upstream-to=origin/dev dev 指定dev和origin/dev的连接
  • git rebase

rebase操作可以把本地未push的分叉提交历史整理成直线;
rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

标签管理

切换到指定分支

  • git tag v1.0 创建一个新的标签
  • git tag 查看所有标签
  • 默认标签是打在最新提交的commit上的

git tag v0.9 f52c633
标签不是按时间顺序列出,而是按字母排序的

  • git shwo tagname 查看标签信息
  • git tag -a v0.1 -m "version 0.1 released" 1094adb 创建带有说明的标签

注意:标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。

  • git tag -d tagname 删除标签
  • git push origin tagname 推送某个标签到远程
  • git push origin --tags 一次性推送全部尚未推送到远程的本地标签
  • git push origin :refs/tags/v0.9 删除远程标签(要将标签先在本地删除)

git关联码云

1 注册登录码云,上传ssh公钥
2 创建仓库用于与本地关联

  • git remote -v 查看远程库信息
  • git remote rm origin 删除原有的远程库
  • git remote add gitee git@gitee.comUserName/learngit.git 关联码云远程库
  • git remote add github git@github.com:UserName/learngit.git 关联github远程库
  • git push 远程库 本地库 推送到远程库

GUI:SourceTree

  • $ git config --global alias.st status 配置别名 git st=git status
  • $ git config --global alias.co checkout
  • $ git config --global alias.ci commit
  • $ git config --global alias.br branch
  • $ git ci -m "bala bala bala..."
  • git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

 

每个仓库的Git配置文件都放在.git/config文件中
当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中

搭建git服务器

1 安装git: sudo apt-get install git
2 创建一个git用户,用来运行git服务:sudo adduser git
3 创建证书登录
收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。
4 初始化git仓库
先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:

  • sudo git init --bare sample.git

把owner改为git:

  • $ sudo chown -R git:git sample.git

5 禁止shell登录
编辑/etc/passwd文件
找到类似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
6 克隆远程仓库

  • git clone git@server:/srv/sample.git

 


原文链接:https://www.cnblogs.com/mfsdebug/p/11992378.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Linux - CentOS 7 通过Yum源安装 MySql 5.7

下一篇:linux 动态链接库查找方法;查找动态链接库位置; LIBRARY_PATH