git常用方法

Posted 红豆是个笨小孩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git常用方法相关的知识,希望对你有一定的参考价值。

1、第一次初始化

  • git init
    git add .
    git commit -m ‘first commit’
    git remote add origin git@github.com:帐号名/仓库名.git
    git pull origin master
    git push origin master # -f 强推
  • git clone git@github.com:git帐号名/仓库名.git

2、工作基本操作

  • git checkout master 切到主分支
  • git fetch origin 获取最新变更
  • git checkout -b dev origin/master 基于主分支创建dev分支
  • git add . 添加到缓存
  • git commit -m ‘xxx’ 提交到本地仓库
  • git fetch origin 获取最新变更

3、初始化仓库

git init

4、查看仓库当前状态

git status

5、文件相关操作

将文件添加到仓库

  • git add 文件名 将工作区的某个文件添加到暂存区
  • git add . 将当前工作区的所有文件都加入暂存区
  • git add -u 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件
  • git add -A 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件
  • git add -i 进入交互界面模式,按需添加文件到缓存区

将暂存区文件提交到本地仓库

  • git commit -m “提交说明” 将暂存区内容提交到本地仓库
  • git commit -a -m “提交说明” 跳过缓存区操作,直接把工作区内容提交到本地仓库

比较文件异同

  • git diff 工作区与暂存区的差异
  • git diff 分支名 工作区与某分支的差异,远程分支这样写:remotes/origin/分支名
  • git diff HEAD 工作区与HEAD指针指向的内容差异
  • git diff 提交id 文件路径 工作区某文件当前版本与历史版本的差异
  • git diff –stage 工作区文件与上次提交的差异(1.6 版本前用 –cached)
  • git diff 版本TAG 查看从某个版本后都改动内容
  • git diff 分支A 分支B 比较从分支A和分支B的差异(也支持比较两个TAG)
  • git diff 分支A…分支B 比较两分支在分开后各自的改动

另外:如果只想统计哪些文件被改动,多少行被改动,可以添加 –stat 参数

6、查看历史记录

  • git log 查看所有commit记录(SHA-A校验和,作者名称,邮箱,提交时间,提交说明)
  • git log -p -次数 查看最近多少次的提交记录
  • git log –stat 简略显示每次提交的内容更改
  • git log –name-only 仅显示已修改的文件清单
  • git log –name-status 显示新增,修改,删除的文件清单
  • git log –oneline 让提交记录以精简的一行输出
  • git log –graph –all –online 图形展示分支的合并历史
  • git log –author=作者 查询作者的提交记录(和grep同时使用要加一个–all–match参数)
  • git log –grep=过滤信息 列出提交信息中包含过滤信息的提交记录
  • git log -S查询内容 和–grep类似,S和查询内容间没有空格
  • git log fileName 查看某文件的修改记录

7、代码回滚

  • git reset HEAD^ 恢复成上次提交的版本
  • git reset HEAD^^ 恢复成上上次提交的版本,就是多个^,以此类推或用~次数
  • git reflog
  • git reset –hard 版本号
  • –soft:只是改变HEAD指针指向,缓存区和工作区不变;
  • –mixed:修改HEAD指针指向,暂存区内容丢失,工作区不变;
  • –hard:修改HEAD指针指向,暂存区内容丢失,工作区恢复以前状态;

8、版本库相关操作

  • 删除版本库文件:git rm 文件名
  • 版本库里的版本替换工作区的版本:git checkout — test.txt

9、远程仓库相关操作

同步远程仓库:git push -u origin master

本地仓库内容推送到远程仓库:git remote add origin git@github.com:帐号名/仓库名.git

从远程仓库克隆项目到本地:git clone git@github.com:git帐号名/仓库名.git

查看远程库信息:git remote

拉取远程分支到本地仓库

  • git checkout -b 本地分支 远程分支 # 会在本地新建分支,并自动切换到该分支
  • git fetch origin 远程分支:本地分支 # 会在本地新建分支,但不会自动切换,还需checkout
  • git branch –set-upstream 本地分支 远程分支 # 建立本地分支与远程分支的链接

同步远程仓库更新::git fetch origin master

10、分支相关操作

创建分支:git checkout -b dev -b表示创建并切换分支
上面一条命令相当于一面的二条:
git branch dev 创建分支
git checkout dev 切换分支

查看分支:git branch

合并分支

  • git merge dev #用于合并指定分支到当前分支
  • git merge –no-ff -m “merge with no-ff” dev #加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并

删除分支:git branch -d dev

查看分支合并图:git log –graph –pretty=oneline –abbrev-commit

11、git相关配置

安装完Git后第一件要做的事,设置用户信息(global可换成local在单独项目生效):

  • git config –global user.name “用户名” # 设置用户名
  • git config –global user.email “用户邮箱” #设置邮箱
  • git config –global user.name # 查看用户名是否配置成功
  • git config –global user.email # 查看邮箱是否配置

12、其他查看配置相关

  • git config –global –list # 查看全局设置相关参数列表
  • git config –local –list # 查看本地设置相关参数列表
  • git config –system –list # 查看系统配置参数列表
  • git config –list # 查看所有Git的配置(全局+本地+系统)
  • git config –global color.ui true //显示git相关颜色

13、撤消某次提交

  • git revert HEAD # 撤销最近的一个提交
  • git revert 版本号 # 撤销某次commit

14、标签

  • git tag 标签 //打标签命令,默认为HEAD
  • git tag //显示所有标签
  • git tag 标签 版本号 //给某个commit版本添加标签
  • git show 标签 //显示某个标签的详细信息

git的常用的使用方法

apt-get install git #Ubuntu 下安装git
yum install git # Centos下安装git
#安装git之后简单的设置
git config --global user.name "joedlut"
git config --global user.email "[email protected]"

创建一个版本库(git仓库)

mkdir /home/joedlut/learngit #常见一个目录
cd /home/joedlut/learngit
git init # 创建版本库,即让该目录下的文件可以被git管理

如何向仓库中添加文件?

cd /home/joedlut/learngit # 要想让git管理文件,必须将文件放到git仓库中
vim readme.txt # 添加两行数据
git add readme.txt #将文件添加到仓库中
git commit -m "add a readme.txt" #将文件提交到仓库中 -m指定提交的说明,建议不要省略
# 可以一次添加多个文件,然后一次性提交 如下
git add file1.txt
git add file2.txt file3.txt
git commit -m ‘add three files‘

查看仓库的状态

git status #可以看到那些文件做出了修改但是没有提交到版本库

查看仓库的一个文件具体改动了什么

git diff readme.txt  #格式和linux下的diff命令显示的内容一样

将一个文件的修改提交到版本库 (分两步 add 与commit)

git add readme.txt #注意 添加修改同样使用的是add
git commit -m ‘modified the content of readme.txt‘

查看版本库的提交记录(方便做后面的回退操作)

git log #由近及远的显示提交日志
git log --pretty=oneline # 同样显示提交日志,但是输出信息相比git log得到了简化

利用git可以回退到版本库在历史中的任意一个版本,git使用HEAD表示当前版本,使用HEAD^表示上一个版本,使用HEAD^^表示上上一个版本 那如何会退到上一个版本呢

git reset --hard HEAD^

如何会退到历史的某个版本后, 又想再回到原来新的版本,此时要想回到原先“未来”的版本,必须知道当时未来版本的提交号 也是就是commit_id 查看这个commit_id可以使用reflog

git reflog #这个命令可以显示每一次git执行的命令
git reset --hard commit_id # 这个id是你想回到的版本的commit_id

git的区域分为工作区和暂存区,我们对于文件的修改都是在工作区内完成的,git add做的事情就是将新建的文件后者文件的修改添加到暂存区,文件只有在暂存区下才可以被跟踪管理,git commit做的事情就是将暂存区的修改一次性提交到分支。由此可见,修改必须添加到(git add)暂存区中才可以被提交

查看工作区与版本库里最新版本的区别

git diff HEAD -- readme.txt

如何撤销文件的修改?分为两种情况

第一种 修改了文件但是没有使用git add将文件的修改添加到暂存区的

git checkout -- readme.txt # 注意不要省略--  否则会变成切换到另一个分支的命令

第二种 已经将文件的修改使用git add提交到了暂存区

git reset HEAD readme.txt #撤销暂存区的修改
git checkout -- readme.txt


如何从版本库中删除一个文件?注意,从版本库中删除一个文件,就无法恢复了

git rm test.txt
git commit -m ‘remove test.txt‘

如何仅仅是从工作区中删除了一个文件,而没有从版本库中删除一个文件,则可以恢复这个文件

git checkout -- test.txt

如何连接到git仓库?

ssh-keygen -t rsa -C ‘[email protected]‘
cd  ~/.ssh
将公钥id_rsa.pub添加到github端

将本地库与远程库相关联

git add remote origin [email protected]:joedlut/learngit.git #origin是远程库的名字,建议是origin
#假设远程库上
git push -u origin master #将本地库的内容推送到远程库,注意,第一次推送要使用-u选项,-u会将本地的master与远程master关联
git push origin master # 之后每次本地做了修改,可以通过该命令实现本地库与远程库的同步

假设github有个远程库gitskills 如何将该库克隆到本地?

git clone [email protected]:joedlut/gitskills.git

创建一个分支dev,,并且切换到该分支

git checkout -b dev #相当于两条命令git branch dev ; git checkout dev

查看分支

git branch #查看所有分支,当前分支会带有一个*号

切换到master分支

git checkout master

将dev分支合并到master分支

git merge dev # 默认会采用fast-forward的方式合并

删除dev 分支

git branch -d dev

当master分支与另一个分支(feature1)都有git add 跟git commit操作的时候,合并分支的时候会发生冲突而失败,此时应该解决冲突之后再执行git add 和git commit,然后再执行git branch -d  feature1

查看分支的合并情况

git log --graph --pretty=oneline

 技术分享

git merge默认会采用fast-forward方式,此时会丢失分支信息(即使用git log查看的时候不会显示分支的合并),要想保存分支信息,可以使用--no-ff选项

git merge -no-ff feature1
git log --graph --pretty=oneline --abbrev-commit

当在dev分支工作时候,需要临时修改bug的时候,可以使用git stash保存现场后,在切换到master分支,然后在创建bug分支,修改bug后再返回到master分支,合并bug分之后,返回dev分支后,在使用git stash pop 恢复现场,完整过程如下

git stash  # dev分支
git checkout master
git checkout -b bug101
############ 修改bug git add git commit....###############
git checkout master
git merge --no-ff bug101
git checkout dev
git stash list # 查看保存的现场信息
git stash pop # 恢复现场,并且删除现场信息,即通过git stash list看不到任何内容

如果需要添加一个新功能,需要创建一个feature分支,当在该feature分支上执行git add和git commit,没有执行合并(git merge)的话,无法通过git branch -d feature 删除该分支,若要强行删除该分支,需要执行

git branch -D feature #强行删除该分支

 查看远程库的信息

git remove -v # -v选项显示详细信息


本文出自 “厚积薄发” 博客,请务必保留此出处http://joedlut.blog.51cto.com/6570198/1911913

以上是关于git常用方法的主要内容,如果未能解决你的问题,请参考以下文章

Git常用命令及方法大全

Git常用命令及方法大全

git的常用的使用方法

Git常用方法

git工具使用方法及常用命令

Git常用命令及方法大全