git 常用命令汇总

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzg_inspur/article/details/82252467

1 获取git的版本
git --version   

2 初始化仓库
git init   初始化一个本地仓库
git --version   获取git的版本
git config --global user.name "yourname"
git config --global user.email "youremail"
第3 4 条 就是给一个身份,标记修改文件,推送文件是谁操作的的,
--global选项在整个仓库生效

3 修改文件(包括新增,编辑,删除)
git add file     添加一个文件到暂存区
git commit -m "desc"    提交一个文件到版本库
git add .  提交所有修改的文件到暂存区
git rm <file>   删除文件之后再提交文件  Git  commit  -m “desc” 

4 辅助工具 
git status  或者此次版本库的状态
git diff    判断本地工作区和版本库的差异
git log     显示一行 --pretty=oneline    显示日志 --graph 图形方式
git reflog 记录每一次命令历史    


5 撤销操作
git reset --hard HEAD   回退版本
HEAD^(上一个版本)  head^^(上两个版本)   head~100(上一百个版本)
git reset --hard commit-id  回退到commit-id的版本
撤销修改三种情况:
1 修改内容还未到达暂存区
撤销方法:直接把编辑的删除,或者通过命令 git checkout -- filename 此时就会丢掉工作区的修改
2 修改内容已经到达暂存区
git reset HEAD <file> 可以把暂存区的修改撤销掉(unstage),重新放回工作区
3 如果修改内容已经推送到版本库中,可以通过回退版本命令
git reset --hard HEAD^/commit-id

6 添加远程库
以github为例
git remote add <remotename> [email protected]:kontar-wang/study.git
显示远程库
git remote -v
显示具体远程库
git remote show <remotename>
推送代码到远程库
git push -u origin master
从远程库拉代码
git pull origin master
克隆版本库
git clone url/ssh  (不同的协议)
example
git clone [email protected]:kontar-wang/studygit.git

7 分支功能
新增:
git branch -b branch-name 创建并切换分支
git branch branch-name 创建分支
git checkout branch-name 切换分支
git branch --track remote/branch 创建一个可跟踪的分支基于远程的一个分支
删除:
git branch -d branch-name
合并分支:
git merge branch-name  合并分支到HEAD所在的分支
冲突的解决办法:
1 解决冲突,最后add commit -m “desc”
分支合并的两种方式差别:
git会用Fast forward模式(默认方式),但这种模式下,删除分支后,会丢掉分支信息
--no-ff方式的gitmerge合并分支时,加上--no-ff参数就可以用普通模式合并,
合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。

8 stash保护现场的功能:
git提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作
git stash 保护工作现场
Git stash list  显示工作现场
git stash apply  恢复工作现场,但是恢复后,stash内容并不删除,
需要用git stash drop来删除;
git stash pop,恢复的同时把stash内容也删了
工作的时候你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令
 git stash apply stash@{0}


9 分支推送原则:
但是,并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?
master分支是主分支,因此要时刻与远程同步;
dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

10 多人协作的工作模式
首先,可以试图用git push origin <branch-name>推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!
注意:如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。

11 标签
git tag tagname   在最新的一次commit打标签
git tag tagname   commit-id   在commit-id处打标签
Git tag show 展示标签  
git tag -a tagname -m “desc” commit-id 
git tag -d tagname  删除标签
git push origin tagname  推送标签
git push origin --tags 一次性推送全部尚未推送远程的本地标签
如果标签推送到远程删除分为两步:
git tag -d tagname
git push origin :refs/tags/v0.9

12 配置文件-过滤掉那些文件不需要推送
忽略某些文件时,需要编写.gitignore;
.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!

13  配置别名,输入命令省事
配置别名
$ git config --global alias.st status
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
配置文件存放在.git/config
git fetch <remote> 下载所有的改变,但是没有加入到HEAD中
Git pull origin branch
Git push origin branch

猜你喜欢

转载自blog.csdn.net/wzg_inspur/article/details/82252467