git命令联系
配置以及修改全局user信息
git config --global user.name 'you_name'
git config --global user.email '[email protected]'
现有设备中的所有配置
git config --list
现有设备中的所有配置
git config --list --local/--global/--system 优先级为 >
把已有项目纳入git管理
cd project
git init
新建项目
新建文件夹 www
cd www
git init you_project
cd you_project
添加文件需要两步
添加到缓存区
git add css/ index.js
提交文件
git commit git.text -m "本次提交说明内容"
git status 列出仓库的状态,未管理的文件
git add -u 对所有修改的文件做添加到暂存区
git status 会列出所有状态的文件
git commit -m"修改git.text文件"
git 修改文件名
mv index.js index.ts
git add index.ts
git rm index.js
git git status
git reset --hard 清除暂存区里面的数据,不会破坏版本历史
git修改文件名
git mv index.js index.ts
git status
git commit -m "重名名index.js为index.ts"
git log --oneline 简洁的查看
git log -n2 --oneline 查看最近的两个版本
git log --all --oneline 查看所有分支
$ git log --all --oneline --graph 图表方式查看所有分支
git commit -am"编辑git.text文件" 工作区的文件直接创建到版本库
.get目录的讲解
.get/HEAD 指向当前的分支 编辑改文件类似于git checkout master 切换分支的作用
HEAD 引用指向refs refs里面包括了(tags 里程碑标记主要标记位置 heads 分支 独立的空间,比如两个可以独立工作,然后合并到一个系统)
git checkout master 切换到主分支
cat ./.git/config 编辑改文件类似命令git config命令设置的作用
如果设置了local的用户,则会显示
git cat-file -t xxx 查看xxx的类型
git cat-file -p xxx 查看xxx的内容
git branch -av 查看所有分支
git checkout master 切换分支到master
git checkout -b fix_text fix_xxx 切换分支到fix_text
git branch -D xxx 删除分支xxx
git branch -av
git commit --amend 修改当前分支最近的commit的message
git log -l
git branch -av
git rebase -i 合并多个commite记录
git log --graph
git rebase -i xxxx xxxx 合并多个不连续的commit
git diff --cached 暂存区与HEAD的差距
git commit -m"确认没问题提交"
git diff 工作区与暂存区的差异
git diff -- index.html style.cxx 查看index.html style.cxx 差异
git status
git reset HEAD 暂存区恢复和HEAD一样(指向当前分支最新的commit)
git checkout -- index.html 工作区的文件恢复到暂存区
git reset HEAD -- style.css 取消部分暂存区文件的更改
git reset --head xxxx 消除最近几次的commit提交(工作、暂存区、HEAD恢复到某次提交)
git diff temp master查看两个分支中的差异
git diff temp master -- index.html 查看两个分支中index.html的差异
删除文件的方法一
rm index.html
git rm index.html
git status
git reset --hard HEAD
git status
git rm index.html 删除文件
git status
git stash save "20200731 modify git.txt"
git stash list
git stash apply 之前存放的内容放到工作区
git reset --hard HEAD
vi .gitignore 添加不受git控制的文件
git clone --bare /user/xxx 无进度条
git clone --bare file:///user/xxx 有进度条
git remote -v 查看所有远端
git remote add zhineng file:///user/xxx/zhineng.git 本地同步到远端
git push --set-upstream zhineng siyecao
ssh-keygen -t rsa -b 4096 -c "[email protected]"
git remote -v 查看所有远程仓库配置
git remote add github [email protected]:git2000/git_learning.git 新增一个远端的站点
git remote -v
git push github --all
先拉后推
gitk -all
git pull (先拉、合并,两步合并了)
git fetch github master
git branch -v
git branch -va 远端的也会列出
git checkout master
git merge github/master
git merge --allow-unrelated-histories github/master
gitk --all
git push github master
git commit -am"编辑git.text文件" 工作区的文件直接创建到版本库
git branch -v 查看分支信息
git branch -al 查看所有分支信息
git checkout -b temp b42031bbd85950 基于主分支创建的分支
git commit -am"在子分支编辑git.text文件"
git log 查看当前分支的历史
git log --oneline 查看当前分支的历史
git log --all 查看所有分支的版本历史
git log --all --oneline 查看所有分支的版本历史
git log --all --graph 查看所有分支的版本历史 图形化展示
git log --all -n4 --graph 查看所有分支的版本历史 图形化展
gitk 图形化的工具
git checkout master 切换分支到master上面
$ ssh-keygen -t rsa -b 4096 -C "[email protected]" 创建ssh秘钥,默认即可
git remote add githubgit [email protected]:lengyue1084/git_learning.git 添加远端仓库
git push remote githubgit --all
git pull 远端拉下来并且执行合并
git fetch githubgit master
gitk --all
git checkout master 切换主分支
手动合并冲突
git branch -v 查看本地有多少分支
git branch -va 列出所有本地与远端的分支
git checkout master 切换到本地master
git merge githubgit/master 合并本地与远端master 首次合并没有父子关系会出错
git merge -h 查看与历史相关的命令
git merger --allow-unrelated-histories githubgit/master 允许合并两个不相干的分支 弹出框默认:wq即可
git push githubgit master 把本地master push 到远端githubgit上
gitk --all
git commit -am"添加内容"
git push githubgit master
git commit -am"删除文件index.ts"
git push githubgit master
//另一个账号如果想推倒远端需要添加远端仓库
git remote add githubgit [email protected]:lengyue1084/git_learning.git
//把项目clone到本地的git_learning_02文件夹,默认为git_learning的文件夹
git clone [email protected]:lengyue1084/git_learning.git git_learning_02
clear 清屏
git config --add --local user.name "git02"
git config --add --local user.emal "[email protected]"
git config --local -l 查看本地仓库的信息
vi .git/config 可以直接修改用户信息
git branch -av
//依远端add_git_commands分支检出并创建本地分支
git checkout -b feature/add_git_commands origin/feature/add_git_commands
git branch -v
vi readme
git add -u
git status
git commit -m'Add commands description in readme'
git push ///此时可以省略
cd git_learning
git config --local -l
git branch -av
git fetch githubgit 会拉区新建分支add_git_commands
git branch -av
git checkout -b feature/add_git_commands github/feature/add_git_commands //第一个本地分支名 第二个远端分支名
git branch -av
vi index.html
git add -u
git commit -m"修改inex.html"
//第二个用户此时在修改文件
vi readem.md
git commit -am "fix readme"
git push
git status
git rm xxx
//第一个用户再push
git push githubgit 此时会报错
git fetch githubgit 拉区远端分支
git branch -av
git merge githubgit/feature/add_git_commands 本地跟远端年合并 此时远端已经修改一个,本地修改一个 此时修改文件不同 合并顺利
git push githubgit 此时会顺利进行
//不同人修改了同一个文件的不同区域
git pull githubgit 修改本地之前最好先执行pull
git branch -av
git fetch
git branch -av
git merge githubgti 或者 git merge 71abe04
弹出merge messge 可以:wq默认设置
git push githubgit
git branch -av
ls -al
cat git.txt
gtik -al
//不同人修改了同一个文件的相同区域
git pull githubgit
修改文件
git commit -ma"修改第一行"
git push githubgit 会感知与远端的不同 修改同一块地方,晚提交的人会遇到这个问题
git merge githubgit 会提示问题
git pull 远端与本地merge 会显示冲突问题
vi git.txt
修改不同人内容,此时需要人工介入,git无法决定
git status 查看是否有没有合并的问题
如果已经merge完了执行
git commit -am"resolved conflict by hand with 4 git commands" 本地生成了一个新的commit
git stauts
git push githubgit
同时更改了文件名和文件内容如何处理
git pull 更新本地版本
git mv index.html index.htm
git status
git commit -am"修改index后缀"
git push githubgit
第二个同学 基于index.html 修改了内容
git push githubgit 会弹出消息弹框 :wq默认即可 合把index.html修改index.htm,文件名字修改了
ls -al 文件名字已经修改成了index.htm git会智能处理
多人修改同一个文件的文件名为不同的文件名
git pull
git mv index.htm index1.htm
git commit -am"修改文件名字index1.htm"
git push githubgit
第二个人
git pull
git mv index.htm index2.htm
git commit -am"修改文件名字index2.htm"
git push githubgit 会报错
git pull
ls -al 会出现index1.htm index2.htm
diff index1.htm index2.htm 内容一样只是名字不同
git status 显示修改名字信息 需要两个人协商文件名,git 不做处理,需要人工介入
git rm index.htm
git add index1.htm
git status
git rm index2.htm
git status
ls -al
git commit -am"已经处理完文件名冲突,decide to mv index.htm to index1.htm"
gitk -al
慎用命令
checkout reset
git push -h 看push相关参数
强制禁止
git push -f 禁用
git log --online
git reset --hard 934ac 本地重置到934ac分支
git push -f origin feature/add_git_commands 强制更新远端分支,会去除很多已经变成的commit记录
禁止想集成分支执行变更历史的操作 不要更改历史的commit message
公众的分支历史禁止变更 因为其他人可能已经基于统一的commit做了工作导致提交失败
在集成分支只能向前进
不要修改合成分支的提价历史即不要rebase“变基”合成分支
远程仓库改了名字
修改远程仓库地址
git remote set-url githubgit [email protected]:lengyue1084/learning.git
或者先删除再添加
git remote rm origin
git remote add origin githubgit [email protected]:lengyue1084/learning.git
//查看git日志
git log --shortstat
//会展示
2 files changed, 3 insertions(+), 11 deletions(-)