【Git】常用命令

git init     初始化git文件夹

git add  <filename[,filename2,filename3]> 将修改的文件添加到暂存区(stage)

git commit -m "提交添加的注释"      将暂存区的所有内容提交到当前分支

git-repo

git status 查看当前仓库状态

add 之前的状态

add之后,commit之前的状态

commit 所有修改之后的状态

git diff <filename> 查看具体文件具体被修改的地方

git log 查看日志

git log --pretty=oneline 美化信息格式

每行首一大串字符称为commit id 版本号,由SHA1计算出来的16进制

git reset 版本回退

  • git reset HEAD 表示当前版本
  • git reset HEAD^ 表示上个版本
  • git reset HEAD^^ 表示上上个版本
  • git reset HEAD~n 表示往上第n个版本
  • git reset <commitId> 表示指向某个具体commitId版本

注意在windows环境中由于cmd控制台中换行符默认是^,而不是\,所以会出现以下错误

解决方法如下:

  • 加双引号 git reset --hard "HEAD^"
  • 加一个^ 个人理解应该类似编程里的转义 git reset --hard HEAD^^
  • 换成~ git reset --hard HEAD~ 或者 git reset --hard HEAD~1

git reflog 查看git操作日志

git checkout -- <filename> 将具体文件的修改撤销,包括两种情况:

  • 修改文件后,add 之前执行,则工作区与版本库内容一模一样
  • add之后,commit之前执行,则执行之后文件恢复到add之后的状态

也就是说此命令将文件恢复到最近一次git add 或者 git commit 之后的状态。

git reset HEAD <filename> 可以撤销暂存区(stage)的修改(unstage):

以下例子说明,原本被add到暂存区的readme.txt文件,reset之后,状态又恢复到了not staged for commit。

git rm <filename> 删除文件

git remote add origin git@github.com:<yourRepoName>/learngit.git 关联本地与远程仓库,origin 表示远程仓库

git push -u origin master 推送到用远程仓库

git clone git@github.com:<yourusername>/<yourReopName>.git 从远程仓库克隆一个库到本地

创建与合并分支

git checkout -b dev 表示创建分支dev并切换到dev,

$ git checkout -b dev
Switched to a new branch 'dev'

等同于以下两条分开的命令:

$ git branch dev
$ git checkout dev
Switched to branch 'dev'

git branch 列出所有分支,当前分支前面有一个*星号

$ git branch
* dev
  master

git merge dev 将dev分支合并到master分支:

git branch -d <分支名> 删除分支

$ git branch -d dev
Deleted branch dev (was b17d20e).

git log --graph 查看分支合并图

合并加上 --no-ff 参数,合并之后记录分支历史,如果fast forward 则不会记录合并过的分支信息

git stash  将工作区状态暂时存储起来

$ git stash
Saved working directory and index state WIP on dev: f52c633 add merge

git stash list 查看暂时保存起来的工作现场

git stash apply 将保存的工作现场恢复

git stash drop 将之前保存的现场清除

git stash pop 效果与 apply 之后 drop 一样

 操作顺序一般是 git stash 然后切换分支做优先级高的任务,之后切回当前分支,git stash pop 接着工作(注意我实验的2.18 windows 版本中,假如在git stash之前有未add的修改,以及已经add未commit的修改,在stash,stash pop操作之后,这两种修改都会变成未add的修改)

feature分支

如果要删除一个未合并的分支需要通过 git branch -D <branchName> 强行删除

多人协作

git remote 查看远程仓库信息

git remote -v 查看更详细信息(fetch 和push 分别表示拉取和推送权限)

git push <origin> <需要推送到远程仓库的分支>

$ git push origin master
$ git push origin dev
  • master分支是主分支,因此要时刻与远程同步;

  • dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;

  • bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;

  • feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

git pull 拉取远程仓库最新的提交

指定本地  dev 与 origin/dev 分支的链接:git branch --set-upstream-to <branch-name> origin/<branch-name>

$ git branch --set-upstream-to=origin/dev dev
Branch 'dev' set up to track remote branch 'dev' from 'origin'.
  • 查看远程库信息,使用git remote -v

  • 本地新建的分支如果不推送到远程,对其他人就是不可见的;

  • 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

  • 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

  • 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name

  • 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

git rebase 操作可以把本地未push的分叉提交历史整理成直线;

以上参考了廖雪峰官网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值