git的基本使用

1)下载安装git 

2)配置git信息

  git config --global user.name "XXXXX"
  git config --global user.email "XXXXX"
  查看当前用户配置信息: git config  --global  --list

 3)  git的工作流程一般是

a:)在工作目录中添加,修改文件
b:)将需要进行版本管理的文件放入暂存区域  
     git add "文件名"  / git add . 添加所有修改
c:)将暂存区的文件提交到git仓库 
     git commit -m  “备注信息”

工作区 - 暂存区 - 仓库

如果你在工作区添加了新文件,就要使用 git add . [将所有新增文件加入跟踪状态]
然后使用 git commit -m "备注",否则commit 不了
直接git commit -am "备注" 也不行,对于新添加的文件,必须先git add .

如果你修改了已经被跟踪的文件,要先使用 git add .
在使用git commit -m "备注",否则commit 不了
当然可以直接使用 git commit -am "备注"

因此在实际项目开发中,总是有修改文件,和添加文件同时存在,因此可以使用
git add .
git commit -m "备注" 【或者 git commit -am "备注"】

4)常见命令

git status  查看当前文件状态
git reset HEAD  可以将上次add 的文件恢复到add 前
git checkout . 丢弃所有更改
git checkout -- 文件名  丢弃指定文件
git log 查看提交记录

5)回到过去

如果发现提交文件有错误,可以使用git reset HEAD~ 来进行回退暂存区的文件内容【只是针对提交的文件】
1)git  [mixed] reset HEAD~2: 回退2步  n回退n步
移动HEAD指向,将其指向上一个快照
将HEAD移动后指向的快照回滚到暂存区域

demo:
在一个文件中我们分别修改三次,也add ,commit 了三次
然后使用 git reset HEAD~ 这个时候,我们的暂存区的文件是恢复到了第二次提交后的状态,但是本地的文件还是最终的那个版本
本地文件待添加至“暂存区”

2)git  reset --soft HEAD~ 【相当于撤销上一步的commit】
移动HEAD 指向,将其指向上一个快照【本地文件已经被提交至暂存区】

3)git reset --hard HEAD~ 
移动HEAD指向,将其指向上一个快照
将HEAD移动后指向的快照回滚到暂存区域
将暂存区文件还原到工作目录【即修改了本地文件,丢弃了你修改的最新文件】

4)回滚个别文件
git reset 文件名/路径 但是不会改变指针

 5)想前滚

有可能在在项目操作的时候使用了git reset --hard HEAD~  造成文件丢失,但是我们可以使用git  reset --hard 版本快照

 6)删除文件

 删除工作区,以及暂存区文件
 git rm  file.name

 删除暂存区,保留工作区: 
git rm --cached file.name
 
强制删除: git rm -f filename

如果一个文件被错误的commit 到至缓存区

git rm fileName 

git reset soft --HEAD~

7)重命名

 git mv oldFilename newFileName

 8)有时候进行rebase 操作的的时候回发生冲突,这个时候会使用git rebase --skip 会发生文件丢失的问题

1.找回丢失的commit,几下那个commit id xxxx
git reflog

2.创建一个分支
git checkout -b recovery xxxxx

9)其他的补充

查看本地分支:git branch 

看所有分支:git branch -a

创建分支: git branch 分支名字

切换分支: git checkout 分支名字

git checkout -b feature

合并分支: git merge 分支名字 【将分支合并当前分支】

删除本地分支:git branch -d 分支名字

删除远程分支: git push origin --delete 名字

git add 的几种参数区别
保存所有的修改: git add -A 
保存新的添加和修改,但是不包括删除git add . 
保存修改和删除,但是不包括新建文件git add -u

10)常规操作

1)服务器拉去代码  
    git clone "地址"

2)创建本地分支并且关联远程分支release
    git checkout release

3) 更新本地代码,拉去release
    git pull --ff

4) 创建本地分支,并切换到feature
    git checkout -b feature
    git checkout feature 

5) 提交本地代码至feature分支
    git commit -a -m "XXXX"

6) 切换至develop 获取代码,并且返回feature(避免develop 分支上的冲突)
    git checkout release
    git pull --ff
    git checkout feature

7) 合并分支         
    git rebase release

8) 切换至develop 合并分支
    git checkout release
    git merge --no-ff feature

9)提交代码
    git push

遇到冲突: 手动解决,然后
git commit -a -m "deal conficlt"
git rebase --continue  
  ----apply '.....'表示合并成功-----
git rebase --skip
git rebase develop
git checkout develop
git merge --no-ff feature
          
git config core.ignorecase false关闭git忽略大小写配置,即可检测到大小写名称更改
原文地址:https://www.cnblogs.com/evaling/p/9159047.html