git常用命令

创建版本库

命令说明
git init创建版本库

全局参数设置

命令说明示例
git config --global全局参数设置git config --global user.name “PesenX”
常见用法:
设置姓名:git config --global user.name "PesenX"
设置邮箱:git config --global user.email "test@foxmail.com" 
Git diff ^M消除:git config --global core.whitespace cr-at-eol

提交修改

命令说明示例
git add把文件修改添加到暂存区git add readme.txt
git rm把文件修改从暂存区移除git rm test.txt
git commit把暂存区的所有内容提交到当前分支git commit -m “wrote a readme file”
工作区和暂存区

工作区为工作目录,工作区有一个隐藏目录.git,是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
这里写图片描述

查看修改状态

命令说明示例
git status查看工作区的状态,可以查看哪些文件被修改过git status
git diff查看工作区和版本库里面最新版本的区别git diff HEAD – readme.txt
常见用法:
git diff branch1 branch2 --stat   //显示 branch2 相对 branch1 的所有有差异的文件列表
git diff branch1 branch2 文件名(带路径)   //显示 branch2 相对 branch1 的指定文件的详细差异
git diff branch1 branch2                   //显示 branch2 相对 branch1 的所有有差异的文件的详细差异

版本回退

Git允许我们在版本的历史之间穿梭,穿梭前,用git log可以查看提交历史,以便确定要回退(使用命令git reset --hard commit_id 或者 git revert commit_id)到哪个版本。要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

命令说明示例
git log显示从最近到最远的提交日志git log --pretty=oneline
git reset回退到指定版本git reset --hard HEAD^; git reset --hard 3628164
git revertgit revert 撤销 某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销git revert HEAD 撤销前一次 commit; git revert HEAD^ 撤销前前一次 commit; git revert commit_id 撤销指定的版本,撤销也会作为一次提交进行保存。
git reflog查看当前分支的操作记录git reflog

git revert 和 git reset的区别

  1. git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
  2. 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。
  3. git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。
HEAD

HEAD指向的版本就是当前版本,使用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区 。

撤销修改

命令说明示例
git checkout用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。git checkout – file

git checkout – readme.txt意思就是把readme.txt文件在工作区的修改全部撤销,这里有两种情况:一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。总之,就是让这个文件回到最近一次git commit或git add时的状态。

用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区

使用场景

场景1:当改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。
场景2:当不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

远程仓库

添加远程仓库
命令说明示例
git remote add origin git@xxx.git关联一个远程库git remote add origin git@server-name:path/repo-name.git
git push将修改提交到远程仓库git push -u origin master

关联远程仓库后,第一次推送master分支的所有内容要使用命令git push -u origin master命令,之后推送可以省略“-u”参数:git push origin master;

示例

cd existing_folder
git init
git remote add origin git@gitlab.tuling123.com:bigmarket/turing-tools.git
git add .
git commit
git push -u origin master

从远程仓库克隆
命令说明示例
git clone从远程仓库克隆git clone git@xxx.git

######示例
cd existing_folder
touch README.md
git add README.md
git commit -m “add README”
git push -u origin master
git clone [ib branch] @giturl

分支管理

分支操作
命令说明示例
git branch查看分支git branch
git branch bname创建分支git branch dev
git checkout bname切换分支git checkout dev
git checkout -b bname创建并切换分支git checkout -b dev
git branch -d bname删除分支git branch -d dev
git branch -D bname强制删除分支git branch -D dev
git push [远程名] :[分支名]删除远程分支git push origin :serverfix
git merge bname将远程分支的内容合并到当前分支git merge origin/serverfix
git log --graph查看分支合并情况git log --graph --pretty=oneline --abbrev-commit

切换到新建的 serverfix 本地分支,其内容同远程分支 origin/serverfix 一致:git checkout -b serverfix origin/serverfix

git push [远程名] [本地分支]:[远程分支] 语法,如果省略 [本地分支],那就等于是在说“在这里提取空白然后把它变成[远程分支]”。

因为创建、合并和删除分支非常快,所以Git鼓励使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。

现场管理

并不是你不想提交,而是工作只进行到一半,还没法提交,预计完成还需1天时间。但是,必须在两个小时内修复该bug,怎么办?幸好,Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作

命令说明示例
git stash保存现场git clone git@xxx.git
git stash list查看现场git stash list
git stash apply恢复现场,后,stash内容并不删除,需要用git stash drop来删除git stash list
git stash pop查看现场,恢复的同时把stash内容也删了git stash list
git stash clear清空所有现场git stash clear
分支策略
分支类型说明
master分支master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活。
bug分支软件开发中,bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。

详见:https://blog.csdn.net/ifwinds/article/details/81673315

多人协作
命令说明示例
git remote要查看远程库的信息。git remote
git remote -v查看远程库,显示更详细的信息。git remote -v
git push origin dev将修改推送到远程库的dev分支。git push origin dev
git fetch同步远程仓库git fetch origin dev
git pull同步远程仓库并合并,等同于git fetch + git mergegit pull origin dev
git branch --set-upstream branch-name origin/branch-name关联本地分支与远程分支,如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,需要使用该命令创建。git branch --set-upstream dev origin/dev

标签管理

命令说明示例
git tag查看标签git tag
git show tagname显示标签信息git show tagname
git tag tagname打一个新标签git tag tagname
git tag -d tagname删除本地标签git tag -d tagname
git push origin :refs/tags/tagname删除远程标签git push origin :refs/tags/tagname
git push origin tagname推送某个标签到远程git push origin tagname
git push origin --tags一次性推送全部尚未推送到远程的本地标签git push origin --tags

打标签步骤:1. 切换到需要打标签的分支上;2. 在分支上打标签
删除远程标签步骤:1. 先从本地删除;2. 从远程删除

Merge Request

详见:https://blog.csdn.net/ifwinds/article/details/81673315

常见问题

https模式git总让输入用户名及密码问题

只要是使用git操作,不管是同步,拉去,克隆,总是输入用户名及密码,是一件很繁琐的事情

解决方法:打开终端,cd到仓库位置,执行如下命令。

git config --global credential.helper store

原理是在 .gitconfig 文件中添加了 [credential] helper = store 配置,设置为记住密码(长期存储)。
在这里插入图片描述
更多命令:

命令说明
git config –global credential.helper store长期存储密码
git config –global credential.helper cache设置记住密码(默认15分钟)
git config credential.helper ‘cache –timeout=3600’设置密码一个小时之后失效

参考文献:
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
http://blog.csdn.net/yourlin/article/details/48996001

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值