Git笔记

看的掘金小册然后顺便记一些

基本操作

拉取远程仓库

git clone  远程仓库地址

自动checkoutmaster分支

拉取远程仓库修改

git pull

查看提交历史

git log

q键退出

  • 添加-p或者--patch参数可以看到具体细节
  • 添加--stat参数查看简要

查看工作目录当前状态

git status 

出现红色文件名状态为未跟踪(untracked)

跟踪文件

git add 文件名或.

文件名变为绿色已暂存(staged);.会把所有改动放入暂存区
add添加的是文件*改动*而不是文件

添加提交信息

git commit -m 'message'

或者使用git commit命令,此时需要填写信息commit message,i进入编辑状态,写完esc后输入两个大写的ZZ保存退出

提交代码到远程仓库

git push

分支操作

查看分支
列出本地分支

git branch

创建分支

git branch branchname

切换分支

实质是checkout指定的commit

git checkout branchname

上面两个步骤可以合并成

git checkout -b branchname

删除分支

git branch -d branchname

HEAD指向的分支不能删除,需要checkout到其他分支后再删;
没有合并到过master的分支删除会失败,强制删除使用-D

git branch -D branchname

删除远程分支

git push origin --delete branchname

提交分支到远程仓库
本地创建的分支推送到远程目标分支,origin是远程仓库别名

git push origin branchname

默认不加originpush只能上传之前clonepull下来的分支,如果远程没有就需要添加origin参数

合并

从目标commit和当前commit(即HEAD所指向的commit)分叉的位置起,把目标commit的路径上的所有commit的内容一并应用到当前commit,然后自动生成一个新的commit

git merge branchname

这里填写提交信息和上面commit的地方类似

合并分支时,如果两个分支改了同一个文件的同一个地方就会有冲突

CONFLICT (content): Merge conflict in testgit.md
Automatic merge failed; fix conflicts and then commit the result.

可以手动修改冲突文件后再进行commit

取消merge
返回合并前的状态

git merge --abort

查看信息

查看某个commit
当前的commit

git show

指定commit

git show SHA-1

指定commit的指定文件

git show SHA-1 filename

对比
对比暂存区和上一次提交的差别

git diff --staged

查看工作目录和暂存区的差异

git diff

对比工作目录和上一次提交的差异

git diff HEAD

处理错误

只是commit

修复错误提交
修复上一次commit,覆盖了上一次commit的记录

git commit --amend

丢弃修改
丢弃修改,恢复到某次commit

git reset --hard SHA-1

但是这之后commit的记录并没有被删除,如果有记得SHA-1还能恢复到后续的提交

reset的本质是移动HEAD及它所指向的branch,实质行为并不是撤销

reset —-hard 会在重置 HEAD 和 branch 的同时,重置工作目录里的内容。就是你的未提交的修改会被全部擦掉

reset --soft会保留工作目录内容

不加参数会保留工作目录并清空暂存区

已经合并到master

git revert SHA-1

创建一个新的commit,和指定的那条commit的内容是相反的,互相抵消来达到撤销的效果

参考:
Explain Git with D3
掘金小册

Comments
Write a Comment