git常用的基本命令,以及解决部分代码问题的一些基本步骤。
一、初始化本地git仓库
git init
二、建立与远程仓库的联系
git remote add origin (仓库地址)
三、删除关联的origin的远程库
git remote rm origin
四、查看关联的远程分支
git remote -v
五、克隆代码(-b/-branch+分支名称 是克隆的是指定分支,无则克隆master分支)
git clone [-b/-branch] [分支名称] (仓库地址)
六、检出(切换)到本地分支(-b 表示新建分支并切换)(clone默认是在本地主分支)
git checkout [-b] (分支)
git branch -d (分支) 删除分支
七、分支基本操作命令
1、 查看本地当前的分支
git branch 列出本地分支
git branch -r 列出远程分支
git branch -a 列出本地和远程分支
git branch -vv 列出本地和远程分支的对应关系
2、拉取分支
git fetch origin 将某个远程主机的更新全部取回本地
git merge (本地分支) 用于在git fetch 之后合并到本地分支上
git fetch origin (分支名称) 取回特定分支的更新
3、Pull下拉代码
说明: git pull命令相当于git fetch+ git merge命令。git fetch用于获取远程 某个仓库的某个分支,然后git merge会将拉取的分支与本地分支 进行合并
1. 将与本地当前分支同名的远程分支拉取到本地当前分支上(需先关联远程分支)
[仓库地址] [分支] 可写可不写,不写默认当前分支自动与唯一一个追踪分支进行合并
git pull [仓库地址] [分支]
2. 将远程指定分支 拉取到 本地指定分支上
git pull origin <远程分支名>:<本地分支名>
3. 将远程指定分支 拉取到 本地当前分支上
git pull origin <远程分支名>
4、push 提交到远程分支
1. 将本地当前分支 推送到 与本地当前分支同名的远程分支上(需先关联远程分支)
[仓库地址] [分支] 可写可不写,不写默认当前分支自动与唯一一个追踪分支进行合并
git push
git push [仓库地址] [分支]
2. 将本地当前分支推送到远程指定分支上(注意:pull是远程在前本地在后,push相反)
git push origin <本地分支名>:<远程分支名>
3. 将本地当前分支 推送到 与本地当前分支同名的远程分支上(注意:pull是远程在前本地在后,push相反)
git push origin <本地分支名>
5、 git diff 查看不同命令
1. 查看不同
git diff
2. 这种是比较工作区和暂存区
git diff filename
3. 比较暂存区与最新本地版本库
git diff --cached filename
4. 比较工作区和最新版本
git diff HEAD filename
5. 比较工作区与指定的 commit -id 的差异
git diff commit-id filename
6. 比较暂存区与指定 commit-id 的差异
git diff --cached commit-id filename
7. 比较两个 commit -id 的差异
git diff commit-id commit-id
6、将本地分支与远程同名分支相关联
git push --set-upstream origin/<本地分支名>
简写方式:git push -u origin/<本地分支名>
7、隐藏当前工作空间改动代码,切换分支,防止直接切换分支时修改的代码丢失
隐藏工作空间改动的代码
git stash
切换回来恢复隐藏的代码
git stash pop
8、回滚commit
先查询commit几次
git status
恢复到commit次数之前
git reset --soft HEAD~(次数)
注意:soft是不删除工作空间代码,撤销commit,不撤销add
mixed是不删除工作空间,撤销commit并也撤销add
hard是删除工作空间代码,撤销commit和add
keep是删除工作空间代码,不撤销commit和add
9、终止merge操作
git merge --abort
八、在本地解决冲突的基本步骤(仅供参考)
1.先将本地修改存储起来 git stash
使用git stash命令,这样本地的所有修改就都被暂时存储起来 。其中stash@{0}就是刚才保存的标记。后续可以通过此标记访问。
2.再次拉取代码git pull
3.还原暂存的内容git stash pop stash@{0}
4.解决冲突
在存在冲突的文件中,Updated upstream 和=====之间的内容为拉取下来的代码,=====和stashed changes之间的内容就为本地修改的代码。解决完成之后,就可以正常的提交了。
5.删除stash
使用git stash drop stash@{0}命令,如果不加stash编号,默认的就是删除最新的,即编号为0的。或者git stash clear命令,清除所有stash
九、分支回滚步骤
常用用于分支误提交合并或想回滚到指定的提交时
1、git reflog 先看到提交的代码的id,
2、git reset --hard [id] id是你要回退的代码的id
3、本地分支回滚后,版本将落后远程分支,必须使用强制推送覆盖远程分支,否则无法推送到远程分支
回退远程分支(本地强制推送到远程分支)
git push -f origin <分支名称>
十、撤销操作
可以直接使用命令 git reset HEAD
这个是整体回到上次一次操作
绿字变红字(撤销add)
如果是某个文件回滚到上一次操作: git reset HEAD 文件名
红字变无 (撤销没add修改)
git checkout -- 文件
十一、忽略跟踪单个文件或文件夹
本地文件修改后忽略提交到版本库(相当于将文件或文件夹踢出版本控制,修改了也不会提交)
忽略跟踪
git update-index --assume-unchanged 路径或文件
恢复跟踪
git update-index --no-assume-unchanged 路径或文件
如果忽略的文件多了,可以使用以下命令查看忽略列表
git ls-files -v | grep '^h\ '
提取文件路径,方法如下
git ls-files -v | grep '^h\ ' | awk '{print $2}'
所有被忽略的文件,取消忽略的方法,如下git ls-files -v | grep '^h' | awk '{print $2}' |xargs git update-index --no-assume-unchanged