git 使用总结

参考
 
一、安装
1. 从官网下载安装包 
 
2. 查看命令: 
1)查看是否安装git, 以及安装的版本
$ git --version

 

2)查看安装目录:
$ which git

 

二、安装完成后,设置账户
$ git config --global user.name “Your name"
$ git config --global user.email “email@exp.com"

 

三、创建版本库
1. 创建空目录
$mkdir learngit
$cd learngit
$pwd
pwd: linux 查看当前目录绝对路径
 
2.将空目录变成git可管理仓库
$git init
 
Initialized empty Git repository in /Users/zmm/learngit/.git/
.git是隐藏文件,可用 ls -ah 查看
 
3.将文件添加到版本库(创建文件)
只能跟踪记录文本文件的修改,因为文本文件有编码,图像、视频没有。
 
将文件readme.txt 放到learnt目录(或子目录)下,其内容如下:
Git is a version control system.
Git is free software.

 

1)把文件放到git仓库方式:
$git add readme.txt
(无显示)
提交多个文件用空格隔开
$git add file1 file2 file3
提交所有变化(的文件)
$git add -A #-A <=> -all, 是".""-u"功能命令的集合
提交所有变化到暂存区,包括文件修改内容,新文件,不包括删除文件
$git add .
提交已经被add的文件(修改或删除文件,不包括新文件)
$git add -u  #-u <=> -update

 

2)把文件提交到仓库
$git commit -m “wrote a read file"
[master (root-commit) cb 926e7] wrote a readme file 
1 file changed, 2 insertions(+)
create mode 100644 readme.txt

 

4.修改文件
1)修改readme.txt->
Git is a distributed version control system.
Git is free software.

 

2)查看修改
$git status
(能告诉状态:是否修改,但是不能告诉具体修改的信息)
 
另外一种,查看difference
$git diff

 

查看最近两次提交之间有哪些文件有修改
$git diff HEAD HEAD^ --stat

 

3)提交修改
与提交新文件一样
$git add readme.txt
$git commit -m “add distributed"

 

4)撤销add修改
仅从暂存区删除文件
$ git rm --cached "filepath" 

从暂存区删除文件 + 删除物理文件

$ git rm --f "filepath"

 

5.版本回退(已提交)
1)修改readme.txt->
Git is a distributed version control system.
Git is free software distributed under the GPL.

 

2)提交, 与提交新文件一样
$ git add readme.txt
$ git commit -m "append GPL"

 

3)查看日志
$git log
或
$git log --pretty==oneline
过滤除版本号及填写日志外的其他信息
 
4)回退到上一个版本
$git reset --hard HEAD^

 

5)查看内容(linux命令)
$cat readme.txt

 

6)恢复至某版本
$git reset --hard 3628164 (版本号不用写全,只用写前几位)

 

7)查看每次提交的版本的版本号
$git reflog

 

6.管理修改
将工作区修改放入暂存区
$git add filename

 

将暂存区修改提交
$git commit -m “a log"

 

查看git状态
$git status

 

查看文件内容
$cat filename

 

查看工作区与版本库最新版本区别
$git diff HEAD -- readme.txt

 

7.撤销修改(未提交)
1)文件未add(添加至缓冲区),丢弃工作区修改
$git checkout —— filename # 丢弃某个文件
$git checkout ——. # 丢弃全部

 

2)文件已add(添加至缓冲区),首先撤销缓冲区修改,然后丢弃工作区修改
$git reset HEAD filename
$git checkout — filename

 

3)文件已commit到本地分支,但未git push到远程服务器
$git log # 得到你需要回退一次提交的commit id
$git reset --hard <commit_id> # 回到某个想要的版本
$git reset --hard HEAD^ # 回到最新的一次提交(windows 下该命令后面需要再加^, 或者"head^"
$git reset HEAD^ # 代码保留, 回到git add之前

 

8.删除文件
删除步骤
  • 工作区删除文件
$rm readme.txt
  • 暂存区删除文件
$git rm readme.txt
  • git版本库删除文件(提交)
$git commit -m “remove readme.txt"
删错恢复,恢复至最近的最新版本
$git checkout --readme.txt

 

 
9.远程仓库
  • 创建SSH Key
$ssh -keygen -t rsa -C “my email@exp.com"
  • 登录github(将远程仓库建立在github,交由github托管)
 
  • 设置github 的SSH keys
title任意
key= /User/zmm/.ssh/id_ras.pub内容
 
10.在本地添加远程仓库
 
1)需要先在github创建版本库 ,然后根据相应命令行提示操作
 
2)在本地添加远程仓库
$ git remote add origin git@github.com:fortunely/learngit.git

"git@github.com:fortunely/learngit.git"为自己在远程github创建版本库生成的仓库地址

 
3)切换工作区间
如果提示错误:
fatal: Not a git repository (or any of the parent directories): .git
是因为没有将当前工作区间切换到git工作区(用$git init初始化过)
 
4)将内容推送到远程仓库
第一次推送 master分支,加上-u ,git会把本地master推送至远程master新分支,并且关联起来
$git push -u origin master

 

后续推送
$git push origin master
 
11.从远程仓库克隆
从远程仓库下载至本地
SSH方式
$git clone git$github.com:fortunely/gitskills.git
 
HTTPS方式
$git clone https://github.com/fortunely/datastructure.git

 

12.创建合并分支
1)创建dev分支,然后切换到dev分支
$git checkout -b dev
相当于
$git branch dev
$git checkout dev

 

2)查看当前分支, 带*表示当期分支
$git branch
 
3)修改文件->提交
$git add readme.txt
$git commit -m “branch test"

 

4)合并指定分支到当前分支
$git merge dev

 

5)删除分支
$git branch -d dev

 

13.解决冲突
1)创建新分支feature1
$git checkout -b feature1

 

2)修改文件->添加并提交
$git add readme.txt
$git commit -m “AND simple"

 

3)切换至master分支
$git checkout master

 

4)修改文件->添加并提交(与上一次修改不同)
$git add readme.txt
$git commit -m “& simple"

 

5)合并分支
$git merge feature1

 

导致冲突产生文件用
<<<<<<< HEAD
 
=======
 
>>>>>>> feature1
标记出了不同分支内容, 修改这些标记的内容,然后保存,再提交
$git add readme.txt
$git commit -m “conflict fixed"

 

6)查看分支合并情况
$ git log --graph --pretty=oneline --abbrev-commit

 

或者
$ git log --graph

 

删除feature1分支
$git branch -d feature1

 

14.分支管理
1)禁用Fast forward模式,因为这种模式下删除分支后,会丢掉分支信息;禁用ff模式,merge时产生新commit
 
2)创建并切换分支dev
$git checkout -b dev

 

3)修改文件->提交
$git add readme.txt
$git commit -m “add merge"

 

4)切换回master分支
$git checkout master

 

5)准备合并dev分支,同时禁用fast forward
$git merge --no-ff -m “merge with no-ff” dev

-m 参数的意思是创建一个新的commit

 
6)查看分支历史
$git log --graph --pretty=oneline --abbrev-commit

 

7)分支使用策略
master作为稳定版本
dev分支作为开发版本,不稳定
每个开发者都在dev分支上干活,并且有自己分支
 
 
 
 
 
 
 
 
posted @ 2021-06-12 10:55  明明1109  阅读(109)  评论(0编辑  收藏  举报