0.从服务器拉取项目
(找一个放项目的文件夹,右键git bash here)git clone -b 分支名 连接
1. 查看远程分支
git branch -a
带有“*”号的表示当前分支
2. 查看本地分支
带有“*”号的表示当前分支
git branch
3. 切换分支命令
git checkout (xxx)
4.切换到远程分支:
git checkout -b (xxx) origin/(xxx)
5.提交git push
拉取git pull
6.git 冲突解决
git add -A
git commit -m '123'
git push
7.手动提交
git status :查看文件状态
git add 文件 :添加文件
git staus :检查有没有没添加的
git commit -m "描述文字"
会失败
git commit -m "描述文字" --no-verify
git pull :提交
合并分支:git merge
8.git提交时报错:Updates were rejected because the tip of your current branch is behind
解决:
出现这样的问题是由于:自己当前版本低于远程仓库版本
有如下几种解决方法:
1.使用强制push的方法:
git push -u origin master -f
这样会使远程修改丢失,一般是不可取的,尤其是多人协作开发的时候。
2.push前先将远程repository修改pull下来
git pull origin master
git push -u origin master
3.若不想merge远程和本地修改,可以先创建新的分支:
git branch [name]
然后push
git push -u origin [name]
4.reset三种模式区别和使用场景
区别:
-
--hard:重置位置的同时,直接将 working Tree工作目录、 index 暂存区及 repository 都重置成目标Reset节点的內容,所以效果看起来等同于清空暂存区和工作区。
-
--soft:重置位置的同时,保留working Tree工作目录和index暂存区的内容,只让repository中的内容和 reset 目标节点保持一致,因此原节点和reset节点之间的【差异变更集】会放入index暂存区中(Staged files)。所以效果看起来就是工作目录的内容不变,暂存区原有的内容也不变,只是原节点和Reset节点之间的所有差异都会放到暂存区中。
-
--mixed(默认):重置位置的同时,只保留Working Tree工作目录的內容,但会将 Index暂存区 和 Repository 中的內容更改和reset目标节点一致,因此原节点和Reset节点之间的【差异变更集】会放入Working Tree工作目录中。所以效果看起来就是原节点和Reset节点之间的所有差异都会放到工作目录中。
使用场景:
-
--hard:(1) 要放弃目前本地的所有改变時,即去掉所有add到暂存区的文件和工作区的文件,可以执行 git reset -hard HEAD 来强制恢复git管理的文件夹的內容及状态;(2) 真的想抛弃目标节点后的所有commit(可能觉得目标节点到原节点之间的commit提交都是错了,之前所有的commit有问题)。
-
--soft:原节点和reset节点之间的【差异变更集】会放入index暂存区中(Staged files),所以假如我们之前工作目录没有改过任何文件,也没add到暂存区,那么使用reset --soft后,我们可以直接执行 git commit 將 index暂存区中的內容提交至 repository 中。为什么要这样呢?这样做的使用场景是:假如我们想合并「当前节点」与「reset目标节点」之间不具太大意义的 commit 记录(可能是阶段性地频繁提交,就是开发一个功能的时候,改或者增加一个文件的时候就commit,这样做导致一个完整的功能可能会好多个commit点,这时假如你需要把这些commit整合成一个commit的时候)時,可以考虑使用reset --soft来让 commit 演进线图较为清晰。总而言之,可以使用--soft合并commit节点。
-
--mixed(默认):(1)使用完reset --mixed后,我們可以直接执行 git add 将這些改变果的文件內容加入 index 暂存区中,再执行 git commit 将 Index暂存区 中的內容提交至Repository中,这样一样可以达到合并commit节点的效果(与上面--soft合并commit节点差不多,只是多了git add添加到暂存区的操作);(2)移除所有Index暂存区中准备要提交的文件(Staged files),我们可以执行 git reset HEAD 来 Unstage 所有已列入 Index暂存区 的待提交的文件。(有时候发现add错文件到暂存区,就可以使用命令)。(3)commit提交某些错误代码,或者没有必要的文件也被commit上去,不想再修改错误再commit(因为会留下一个错误commit点),可以回退到正确的commit点上,然后所有原节点和reset节点之间差异会返回工作目录,假如有个没必要的文件的话就可以直接删除了,再commit上去就OK了。
打标签:
git tag -a v1.0 -m "202004151426支付中心定版"
删除标签:
git tag -d <tagname>
1. 切换git远程分支,使用命令:git checkout -b 分支名称。
- 注意:切换远程分支一定要带伤-b 参数,只有切换本地分支的时候才不需要 -b参数,-b 的意思是 base,以当前分支为 base,新建一个名叫xxx 的分支 。如果使用 "git branch 远程分支名" 命令切换到远程服务器分支上,
则会导致如下错误提示:
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>
这时候再使用git branch 命令查看本地分支,就会发现当前分支是在一个 叫“(HEAD detached at 远程分支名)”上。detached是游离的意思,表名当前分支是在游离状态。
2. 远程服务器新建了分支,本地无法checkout ,或者本地看不到,使用命令: git branch -r 可以查看远程分支。
如果这时候直接使用 git checkout -b xxxx 去切换到远程分支,是会报如下错误的
error: pathspec 'branch170628_foo' did not match any file(s) known to git
请使用命令:git fetch 更新remote索引
取回所有分支(branch)的更新。如果只想取回特定分支的更新,可以指定分支名,例:$ git fetch <远程主机名> <分支名>
假设分支名称为oldName
想要修改为 newName
1. 本地分支重命名(还没有推送到远程)
git branch -m oldName newName
2. 远程分支重命名 (已经推送远程-假设本地分支和远程对应分支名称相同)
a. 重命名远程分支对应的本地分支
git branch -m oldName newName
b. 删除远程分支
git push --delete origin oldName
c. 上传新命名的本地分支
git push origin newName
d.把修改后的本地分支与远程分支关联
git branch --set-upstream-to origin/newName
============git基本配置============
配置全局用户名:git config --global user.name "nameVal"
配置全局邮箱:git config --global user.email "eamil@qq.com"
1、查看git配置信息
git config --list
2、查看git用户名
git config user.name
3、查看邮箱配置
git config user.email