Git

1、安装

  1. 1、下载安装https://gitforwindows.org/
  2. 2、进入cmd 输入 git config --list查看配置:
  3. C:\Users\zhang>git config --list
  4. diff.astextplain.textconv=astextplain
  5. filter.lfs.clean=git-lfs clean -- %f
  6. filter.lfs.smudge=git-lfs smudge -- %f
  7. filter.lfs.process=git-lfs filter-process
  8. filter.lfs.required=true
  9. http.sslbackend=openssl
  10. http.sslcainfo=C:/software/Git/mingw64/ssl/certs/ca-bundle.crt
  11. core.autocrlf=true
  12. core.fscache=true
  13. core.symlinks=false
  14. pull.rebase=false
  15. credential.helper=manager
  16. user.name=zhangyuboo
  17. user.email=zhangyubo@kungeek.com
  18. 3、设置全局用户名和全局邮箱:
  19. git config --global user.name "LingHuZhangHao"
  20. git config --global user.email "woailinghu@163.com"
  21. 4、查看是否有秘钥:
  22. 进入git bash应用:输入 $ cd ~/.ssh
  23. 若出现“No such file or directory”,则表示需要创建一个ssh keys
  24. 5、进入cmd中创建秘钥:
  25. 程序会提示您输入密钥的文件名、密码、确认密码,按三个回车即可。
  26. 将来在使用密钥的时候需要提供这个密码。确认完毕后,程序将生成一对密钥存放在当前文件夹下:
  27. ssh-keygen -t rsa -C "zhangyubo@kungeek.com"
  28. 输入文件名保存公私秘钥,默认创建至:C:\Users\zhang/.ssh/id_rsa
  29. 输入两次密码即可
  30. 6、进入文件夹:C:\Users\zhang/.ssh
  31. 有两个文件:id_rsa id_rsa.pub
  32. 私钥保存在自己的电脑上,公钥交项目负责人添加到服务器上。
  33. 用户必须拥有与服务器公钥所配对的私钥,才能访问服务器上的代码库

2、国内镜像

https://hub.fastgit.org/

https://github.com.cnpmjs.org/

3、没有签出最新的代码就开发了,提交git到远端提交失败的解决办法

1、首先在本地建新的dev分支
2、将远端的master分支拉取到本地覆盖dev分支
3、在本地将master分支合并到本地dev分支
4、将合并后的dev分支推到远端分支比如dev,并在远端合并到master分支
5、将远端合并后的master拉取到本地master分支
6、删除本地的dev分支

4、git命令

1、创建一个git仓库(实际上是创建一个.git文件)
git init

2、将所有文件放入暂存区(实际上是把所有的修改放入暂存区,准备提交)

git add --all

git add filename

3、撤销放入暂存区
git reset HEAD --all

git reset HEAD filename

4、提交修改
git commit -m "提交的说明"

5、查看未提交的文件状态(未add红色和已add绿色)
git status

6、提交前查看文件修改状态
git diff filename

7、查看提交日志
git log

8、回滚到某一版本
git reset --hard d7b5

9、查看本地所有分支
git branch 

查看远端所有分支
git branch -r

10、创建分支
git branch 分支名

11、切换到指定分支
git checkout 分支名

12、创建分支并切换到新分支
git checkout  -b 分支名

13、合并某分支修改到当前分支
git merge 分支名

14、分支合并图
git log --graph

15、删除分支
git branch -d 分支名

16、添加远端仓库
git remote add origin ‘url’

17、移除远端仓库
git remote remove origin

18、提交到远端仓库(第一次提交加上-u表示推送master分支的所有内容,后面推送就不需要了)
git push -u origin master

提交到指定分支
git push origin feature/HDATA-1159:feature/HDATA-1159

19、拉取远端分支并合并到当前分支 (git fetch+ git merge命令。git fetch用于获取远程某个仓库的某个分支,然后git merge会将拉取的分支与本地分支进行合并)
git pull origin develop

20、克隆
git clone 'url'

21、对比连个分支内容
git diff  分支1 分支2 --stat (加上 --stat 是显示文件列表, 否则是文件内容diff)

5、查看一个文件的修改历史

1. git log filename
可以看到fileName相关的commit记录

2. git log -p filenam
可以显示每次提交的diff

3. 只看某次提交中的某个文件变化,可以直接加上fileName
git show c5e69804bbd9725b5dece57f8cbece4a96b9f80b filename

6、上线流程

方案一:每次都先新建分支,然后在新分支上修改
1、维护一个上线表格,标记修改的文件,简单描述修改内容

2、在idea中测试后,上生产测试,测试通过后,依据表格创建sublime文件上传git发布即可

方案二:每次在master分支上修改,然后创建新的分支,将master分支内容合并到新分支提交:

7、git修改回退

git checkout -- file

8、报错

1、error: src refspec master does not match any. error: failed to push some refs to 'notebook
问题:远程仓库notebook为空

2、fatal: refusing to merge unrelated histories
问题:拒绝合并不相关的历史

解决:加上git pull origin master --allow-unrelated-histories

3、warning: LF will be replaced by CRLF in target/classes/log4j.properties.
The file will have its original line endings in your working directory.
问题:LF和CRLF其实都是换行符,但是不同的是,LF是linux和Unix系统的换行符,CRLF是window 系统的换行符。这就给跨平台的协作的项目带来了问题,保存文件到底是使用哪个标准呢? git为了解决这个问题,提供了一个”换行符自动转换“的功能,并且这个功能是默认处于”自动模式“即开启状态的。
这个换行符自动转换会把自动把你代码里 与你当前操作系统不相同的换行的方式 转换成当前系统的换行方式(即LF和CRLF 之间的转换),这样一来,当你提交代码的时候,即使你没有修改过某个文件,也被git认为你修改过了,从而提示"LF will be replaced by CRLF in *****"

解决:在项目下执行:git config core.autocrlf false (仅对当前git仓库有效)


4、fatal: --author 'zyb17310606952@163.com' is not 'Name <email>' and matches no existing author

解决:修改参数 git config user.name = xxx
git config user.name = xxx
如果不行加上--global改全局参数