catalogue:
- 初始化git仓库:第一次使用git
- 把文件放到git本地仓库
- 修改文件,再提交
- 查看历史版本
- 版本回退
- git与其他版本库区别
- 撤回
- 删除
- 远程资源库
- 关联远程git仓库,向远程推送
- 分支
- 查看远程仓库:添加、查看、该名、删除
- 提交代码
- 开发环境git库切换到测试环境git库
- merge冲突
- rebase冲突
- 合并开发分支到主分支
- 在开发分支开发时,主分支代码修改
- 从master分支拉新分支开发
- git免密操作
- 查看远程仓库提交历史
- 查看差异
content:
1.初始化git仓库:第一次使用git
git config --global user.name "用户名"
git config --global user.email "admin@admin.com"
git init
2.把文件放到git本地仓库:
git add xxx#
git commit -m "comments"
3.修改文件,再提交
git status#查看仓库状态
git diff xxx#查看文件xxx的差异
git add xxx
git status#查看仓库状态
git commit -m "comments"
git status#查看仓库状态
4.查看历史版本
git log#显示从最近到最远的提交日志
git log --pretty=oneline
Git log --oneline -p filename --查看差异内容
5.版本回退
首先查看当前版本,HEAD表示当前版本,上一个版本HEAD^,上上个版本HEAD^^,上100个版本HEAD~100
回退到上一个版本:git reset--hard HEAD^
查看回退文件的内容:cat xxx
查看版本库状态:git log
回滚后,上一个当前版本就消失了,如果要回滚,在旧的命令行窗口没有关闭的情况下,找到commit id:git reset --hard ID#版本号不必写全
如果命令行关闭了,使用reflog找到commit id:git reflog#记录用户的每一次命令
再使用:git reset --hard commit-id
git log
6.git与其他版本库区别
工作区:
暂存区:
版本库:
7.撤回
工作区撤回:git checkout -- filename#让文件xxx回到最近一次commit或者add时的状态;没有--命令变为切换分支;(--后有一个空格)
暂存区撤回:1. git reset HEAD xxx#把暂存区的修改撤销,放回工作区;
2. git checkout – xxx#让文件xxx回到最近一次commit或者add时的状态;
本地版本库撤回:git reset --hard HEAD^
取消文件跟踪(回到add之前的状态):git rm --cached filename
8.删除
git rm filename
git commit -m “comments”
如果是误删:git checkout -- filename
9.远程资源库
1.创建SSH Key:ssh-keygen -t -rsa -C
2.登陆github,添加
10.关联远程git仓库,向远程推送
远程创建空仓库test,把本地仓库推到远程的空仓库test1:
1.git remote add origin git@github.com:2******1@qq.com/test.git
git remote add origin git@server-name:path/repo-name.git
2.git push -u origin master#-u代表本地仓库推送到远程仓库,关联本地master与远程master;第一次向远程推送才加-u;
git push -u origin master
git push origin master
在本地下载远程仓库代码:
1.git clone git@github.com:243304561@qq.com/test.git
11.分支
1.创建分支并切换:git checkout -b xxx
等价于:1. git branch xxx 2. git checkout xxx
2.查看分支:git branch
3.修改分支名:git branch -m old new
4.切回主分支:git checkout master
5.合并分支xxx与主线:git merge xxx
6.删除分支:git branch -d xxx
如果git merge xxx有冲突(分支主线都有修改),需要手工把冲突文件修改正确,
再:1. git add xxx; 2. git commit -m “comments” 3. git push origin master
禁用快进模式并提交备注信息:git merge –no-ff -m “comments” xxx
查看分支合并情况:git log –graph –pretty=oneline –abbrev-commit
12.查看远程仓库:添加、查看、该名、删除
(1)添加远程仓库git remote add [远程库的简短名字,如:test] git://xxx
(2)git remote -v查看远程仓库克隆地址
(3)git remote查看远程仓库
(4)查看远程仓库信息:git remote show [仓库简短名]
(5)远程仓库重命名:git remote rename old new
(6)移除远程仓库:git remote rm [仓库简短名]
13.提交代码
修改代码后:1. git add . 2. git commit -m ‘comments’
抓取远程仓库有,本地仓库没有的:git fetch 仓库名
如果抓取到内容需要合并:git rebase origin test
推送数据到远程仓库:git push [remote-name] [branch-name]
14.开发环境git库切换到测试环境git库
git remote add mystore git@127.0.0.1:/home/git/git-repo/abc.git
git fetch mystore
#在本地创建一个feature-new分支用于跟踪远端的feature-new分支并切换到本地feature-new分支
git checkout --track mystore/feature-new
如果本地有修改,导致上条命令失败,则先暂存修改:$ git stash
git checkout --track mystore/feature-new
弹出暂存修改:
Git stash pop
Git add .
Git commit -m ‘commets’
获取远程库,检测是否有变更:
Git fetch mystore
有新变更则合并:
Git rebase mystore feature-new
推送到远程仓库:
Git push mystore feature-new
15.merge冲突
原因:
用 diff 工具生成 patch 时,我们所做的每一处修改都会连同它的“定位信息”(原始文件中的行号、修改处前三行和后三行的原始文本)
一并保存到 patch 文件中。patch 被应用时,会在目标文件中寻找“定位信息”,找到后再实施修改。可是,当我们把补丁应用时,
有可能找不到那些定位信息了,于是应用patch失败,即发生冲突。
在主分支:git merge 分支 #冲突
打开修改冲突文件:1. git add . 2. git commit -m ‘comments’
查看log:git log --graph --pretty=oneline --abbrev-commit
删除分支:git branch -d 分支
16.rebase冲突
解决冲突文件后:git add .
然后后执行:git rebase –continue继续操作
或者git rebase –skip忽略冲突。
17.合并开发分支到主分支
git checkout dev
git pull 仓库名 dev
git checkout master
git pull 仓库名 master
git merge dev
git push 仓库名 master
18.在开发分支开发时,主分支代码修改
git checkout master
git pull 仓库名 master
git checkout dev
git merge master
git push origin dev
19.从master分支拉新分支开发
git checkout master
git pull 仓库名 master
git checkout -b dev #从当前分支拉copy开发分支
git push origin dev #把新建的分支push到远端
git pull仓库名 #拉取远端分支
git branch --set-upstream-to=origin/dev #关联
git pull 仓库名#再次拉取 验证
20.git免密操作
每次使用 git pull 或者 git push ,需要输入用户名和密码,工作效率低,以下命令可以实现永久免登陆:
git config --global credential.helper store
git pull /git push (这里需要输入用户名和密码,以后就不用啦)
21.查看远程仓库提交历史:
gitk --all
22.查看差异
查看两个分支的差异
git log --oneline 分支1 ^分支2 :查看分支1有分支2没有
Git log --oneline branch1..branch2 :查看branch2比branch1多提交哪些内容
Git log --oneline branch1...branch2 :查看两个分支差异
Git log --left-right branch1...branch2 :查看每次提交在哪个分支
Commit后为右箭头,代表是master的提交