Git命令记录

以下全部内容来自于廖雪峰的官方网站,作此贴只为记录学习,以便后续查询。

配置Git:

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

初始化一个Git仓库:

git init

添加文件到Git仓库,分两步:

使用命令git add <file>,注意,可反复多次使用,添加多个文件;

使用命令git commit -m <message>,完成。

要随时掌握工作区的状态:

git status

如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

git diff:工作区和暂存区

版本回退:

HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id

穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

git diff:

git diff 比较的是工作区文件与暂存区文件的区别(上次git add 的内容)

git diff --cached 比较的是暂存区的文件与仓库分支里(上次git commit 后的内容)的区别

内容回退:

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。

删除文件:

命令git rm用于删除一个文件

分支管理:

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除本地分支:git branch -d <name>

删除远程分支:git push origin --delete <name> = git push origin :<name>  推送空分支到远程分支,也相当于删除

冲突:

合并分支存在冲突,修改了同一文件的同一地方。

修改后再次合并,可用git log --graph查看分支合并图。

git log --graph --pretty=oneline --abbrev-commit

分支管理策略:

通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。

如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。 

git merge --no-ff -m "注释" <name>

在实际开发中,我们应该按照几个基本原则进行分支管理:

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

所以,团队合作的分支看起来就像这样:

git-br-policy

Bug分支:

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

Feature分支:

开发一个新feature,最好新建一个分支;

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

查看远程库信息:

git remote -v

向远程库推送:(需切换到待推送分支)(此处仅供参考,待学习更新)

git push的一般形式为 git push <远程主机名> <本地分支名>  <远程分支名> 

git branch -avv 查看关联

git push --set-upstream origin origin/<branch-name> <branch-name> 建立远程与本地分支的关联

如果本地分支与远程分支有关联:

  1. 关联名称相同:直接 git push <主机名>  # 如果只关联了远程一个仓库,可以省略主机名,主机名一般为origin
  2. 关联名称不同:git push origin HEAD:<远程分支>

如果本地分支与远程分支没有关联:

  1. git push -u origin/<远程分支>
  2. git push origin <本地分支>:<新远程分支> 在远程新建分支并推送

多人协作模式:

  1. 首先,可以试图用git push origin <branch-name>推送自己的修改;

  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

  3. 如果合并有冲突,则解决冲突,并在本地提交;

  4. 没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin/<branch-name> <branch-name>

Rebase变基操作:

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

  • rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

Git标签:

  • 命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id;

  • 命令git tag -a <tagname> -m "blablabla..."可以指定标签信息;

  • 命令git tag可以查看所有标签。

  • 命令git push origin <tagname>可以推送一个本地标签;

  • 命令git push origin --tags可以推送全部未推送过的本地标签;

  • 命令git tag -d <tagname>可以删除一个本地标签;

  • 命令git push origin :refs/tags/<tagname>可以删除一个远程标签。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值