git命令使用教程

一、git 安装&配置

(略)

二、 git 创建仓库

1、初始化成git可管理的仓库

git init 
git init 目录名 //指定目录

2、添加文件到暂存区

git add readme.txt 
git add *.c

3、添加说明

git commit -m "说明内容"
git commit -a //不用add,直接提交
git commit -am '说明内容'  //直接提交,并添加说明

三、本地版本管理

1、查看提交日志

git log
git log --pretty=oneline
git log --oneline //用 --oneline 选项来查看历史记录的简洁的版本
git log --oneline --graph //查看拓扑图
git log --reverse --oneline //逆向显示所有日志
git log --author=Linus --oneline -5 //查看指定用户的提交
git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges //查看指定日期

2、查看状态

git status
git status -s //展示简短信息

modified:改动、untracked 未添加

3、查看变更比对

git diff  //查看未缓存的改动
git diff --cached //查看已缓存的改动
git diff HEAD -- 文件名 //查看指定文件已缓存的改动
git diff HEAD //查看已缓存的与未缓存的所有改动
git diff --stat //显示摘要

4、丢弃变更

1、丢弃工作区变更
git checkout -- readme.txt
git checkout .  //放弃所有变更

2、丢弃暂存区变更,放回工作区
git reset HEAD 文件名

(1)修改了工作区文件,丢弃变更:git checkout – readme.txt
(2)修改了工作区文件并已暂存,丢弃变更:
  git reset HEAD readme.txt
  git checkout – readme.txt

5、回退到指定版本

git reset --hard HEAD^^ 
git reset --hard HEAD~2   //回退到上上个版本 
git reset --hard 1094a    //用commit id设置,前几位即可

HEAD为当前版本,HEAD^ 用^表示上几个版本,也可写成HEAD~3

6、回退到删除了的记录

git log //查看当前提交历史
git reflog  //查看历史命令,找到对应commit id
git reset --hard 1094a    //用commit id设置,前几位即可

7、删除文件

 rm test.txt   //删除工作区文件
 git rm test.txt   //删除仓库中该文件
 git rm -f 文件名 //如已暂存,需强制删除
 git rm --cached <file> //删除暂存区中文件,不删除本地文件
 git rm –r * //递归删除文件夹

四、远程仓库管理

1、本地关联到远程仓库关联

 git remote add origin 仓库地址

2、推送仓库所有内容

git push -u origin master

一般

3、推送变更

git push origin master

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

4、克隆远程仓库到本地

git clone <仓库地址>
git clone <仓库地址>  <指定目录> //克隆到指定目录

五、分支管理

1、分支管理

> 分支创建:
git checkout -b 分支名  //创建+切换
git branch 分支名

> 查看当前分支:
git branch

> 切换分支:
git checkout 分支名 

> 分支删除:
git branch -d 分支名
git branch -D 分支名 //强制删除,丢弃没有被合并过的分支

> 查看远程仓库信息
git remote
git remote -v  //查看origin地址

> 设置本地分支关联远程分支
git branch --set-upstream-to=origin/远程分支名字 本地分支名字

2、分支合并

> 查看分支合并图
git log --graph

> 分支合并: //合并指定分支到当前分支
git merge 分支名 

> 禁用Fast forward
git merge --no-ff -m "合并信息" 合并分支名
  • git merge 分支名,有冲突时,会提示,手动打开冲突文件进行修改,也可用git status 查看冲突文件

  • Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容
    < 为当前分支的修改 >为合并分支的修改

  • Fast forward模式(快速合并):这种模式下,删除分支后,会丢掉分支信息,采用git merge --no-ff -m “合并信息” 合并分支名可以强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

3、储存工作现场

> 储存工作现场
git stash //把当前工作现场“储藏”起来,等以后恢复现场后继续工作

> 查看存储内容
git stash list

> 恢复
git stash apply  //恢复后,stash内容并不删除,你需要用git stash drop来删除
git stash pop //恢复的同时把stash内容也删了

4、 推送&拉取&冲突

> 推送分支
git push origin 分支名字

> 拉取分支
git checkout -b 本地分支名 origin/分支名  //创建远程分支到本地,分支名最好一致

> 关联分支
 git branch --set-upstream branch-name origin/branch-name

> 解决冲突
git pull // 拉取远程分支
解决冲突
git push origin 分支名 //合并

>提交历史整理
git rebase
  • 如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin/

  • 冲突解决
    首先,可以试图用git push origin 推送自己的修改;
    如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
    如果合并有冲突,则解决冲突,并在本地提交;
    没有冲突或者解决掉冲突后,再用git push origin 推送就能成功!

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

六、git标签

> 添加标签
git tag 标签名  
git tag 标签名 commit_id //给指定提交添加标签
git tag -a 标签名 -m "说明内容" commit_id //带说明

> 查看标签
git tag
git show 标签名

> 删除本地标签
git tag -d 标签名   //删除本地标签

> 删除远程标签
git tag -d 标签名  //先删除本地标签
git push origin :refs/tags/标签名  //推送到远程

> 推送标签到远程
git push origin 标签名
git push origin --tags //推送所有标签

七、自定义git

1、忽略特殊文件

> 编写.gitignore文件,添加要忽略的文件,再把.gitignore文件提交到git
# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini

# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build

# My configurations:
db.ini
deploy_key_rsa

> 查看.gitignore中忽略某文件的命令
git check-ignore -v 文件

2、配置别名

> 配置指令别名
git config --global alias.别名 原命令名
git config --global alias.st status //eg

> 删除配置别名
在.git/config中删除alias后的别名

备注

  1. git跟踪范围
    · 只能跟踪文本文件的改动,如TXT文件、网页,所有的程序代码;
    · 图片、视频、Word文件这些二进制文件,没法跟踪文件的变化,只能监听到改动

  2. git管理分区
    工作区:修改文件的区域
    暂存区(stage):暂存变更内容

git会自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
在这里插入图片描述

3.git拉取协议:Git支持多种协议,包括https,其中最常用的是 ssh,因为速度较快,还可以配置公钥免输入密码。各种写法如下:
git clone [email protected]:fsliurujie/test.git --SSH协议
git clone git://github.com/fsliurujie/test.git --GIT协议
git clone https://github.com/fsliurujie/test.git --HTTPS协议

4.分支规范:master发布分支,dev开发主分支,feature开发分支

5.冲突解决
首先,可以试图用git push origin 推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin 推送就能成功!

6、git配置
–global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。
配置Git的时候,加上–global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。
每个仓库的Git配置文件都放在.git/config文件中。

猜你喜欢

转载自blog.csdn.net/github_36955602/article/details/89219966