1.git-基本用法
git
Git 有三种状态,你的文件可能处于其中之一:已提交(committed)、已修改(modified)和已暂存(staged)。由此引入 Git 项目的三个工作区域的概念:Git 仓库、工作目录以及暂存区域
配置信息
查看配置
# 查看配置信息
$ git config user.name
$ git config user.email
修改配置
# 配置信息是新安装git后需要配置的
# 配置name
git config --global user.name '[name]'
# 配置 email
git config --global user.email '[email address]'
# 这个配置很重要,以后上传github,gitlib时,这个上传的显示 name 和 email,
# 用户名和邮箱地址是本地git客户端的一个变量,不随git库而改变。
# 每次commit都会用用户名和邮箱纪录。
# github的contributions统计就是按邮箱来统计的。
本地添加远程仓库
git remote add origin 远程仓库地址
设置忽略文件或目录
新建了一个.gitignore
# 添加需要忽略的文件路径
# 忽略 pycharm 版本信息
.idea/
创建项目
git init [project-name]
初始化
git clone [url]
从github,gitee 上抓取项目
基本操作
文件添加
查看文件状态
git status
提交到暂存储区
git add .
git add file1 file2
添加所有未跟踪文件用
git add -A
git commit -m '[dscriptive message]'
添加所有未跟踪文件并且提交用
git commit -a
上传到服务器
git push
文件删除
git pull origin master
下载到本地
删除工作区文件,并且将这次删除放入暂存区
git rm [file1] [file2] ...
删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除
git rm -f <file>
分支
列出分支
列出本地分支
git branch
- main
master列出远程分支
git branch -r
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/master2列出所有分支
git branch -a
- main
master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/master2
创建和切换分支
创建本地分支
新建分支
git branch branch_name
新建并进入分支
git branch -b branch_name
-b 创建并切换分支切换分支
git checkout branch_name
创建远程分支
git push origin [name]
远程没有分支> 将本地分支关联到远程origin上
推送本地的branch_name(冒号前面的)分支到远程origin的branch_name(冒号后面的)分支(没有会自动创建)
git push origin branch_name:branch_name
git push origin master_1:master_1
删除分支
删除本地分支
git branch -d [branch-name]
删除远程分支
git push origin --delete <BranchName>
合并分支
合并之前先要到合并后的 分支上
例如 将dedug分支 合并到 master上
git checkout master
git merge debug
合并冲突要手动合并解决
修改设置默认主分支
git branch --set-upstream-to=origin/master—_1 master
日志
# 获得历史修改记录
git log
# 简要日志
git reflog
git log --follow [file]
查看文件的修改内容
git diff
git show
回滚
git reset [file]
撤销文件
git reset --hard 回滚号
git reflog
git reset --hard 回滚号
主要问题
git中新建分支后push时的"no upstream branch"问题
建立 本地和远程分支的联系
git branch --set-upstream-to=origin/master master
git pull
git config --global push.default current
git push -u
Git中push.default
可以指定在没有明确指定远程分支的情况下,默认push的远程分支,其取值可以是:
- nothing - push操作无效,除非显式指定远程分支
- current - push当前分支到远程同名分支,如果远程同名分支不存在则自动创建同名分支(central 和 non-central workflows都适用)
- upstream - push当前分支到它的upstream分支上(通常用于central workflow)
- simple - simple和upstream是相似的(通常用于central workflow),只有一点不同,simple必须保证本地分支和它的远程 upstream分支同名,否则会拒绝push操作
- matching - push所有本地和远程两端都存在的同名分支
There is no tracking information for the current branch
方法1
git checkout 指定分支
git pull origin 指定分支
方法2
git branch --set-upstream-to=origin/newmaster newmaster