Git 笔记

*

廖雪峰 git 教程

git clone git地址

git pull 拉取文件到本地

如果需要提交文件,先push

废弃某个加在了缓冲区的文件
git checkout -- aa.txt

------------- git添加一个文件 --
git add aa.txt

------------- git撤销本地所有未提交的更改 [有效]-------------------
1. git clean -df
2. git reset --hard
第一个命令只删除所有untracked的文件,如果文件已经被tracked, 修改过的文件不会被回退。
而第二个命令把tracked的文件revert到前一个版本,对于untracked的文件(比如编译的临时文件)都不会被删除。

====================
git push origin master

gitk 可以打开可视窗口

================== 20170511 ============
1,新增加一个文件,修改从工作区添加到stage区
git add file1 [file2] [file3] 可以添加多个文件
2,git commit -m "你的备注"

git init 初始化仓库

git checkout -- filename, 舍弃这个文件的修改

git diff filename,查看文件修改的地方

修改文件后,提交时,依然两步走,add,commit
如果直接commit提交,会说 not staged for commit,意思是文件还没有准备好提交

git log --pretty=oneline 可以看提交记录

============== 版本回退 =========
当前版本是HEAD,前一个版本是HEAD^,再前一个版本是HEAD^^,往上100个版本是 HEAD~100
git reset --hard HEAD^,返回到上一个版本,开始一直出错,后来键盘改为大写 写HEAD^,就可以了

如果【git bash】窗口还没有关闭,上面用git log是看到了一长串id,例如 9c4102.....,
如果恢复到上面几个版本后,后悔了,可以重新找回来,例如 git reset --hard 9c4102,就这几位数字就可以,能唯一标识就行
a001,b002,c003,版本,从c一直还原到a,然后又想恢复到c版本,则可以用上面的 git reset --hard c003XX

如果【git bash】关闭了,例如第二天开机来找,后悔了,又忘记了commit id,怎么办,git reflog
可以记录你每次的命令记录
==========
HEAD指向当前版本,git reset --hard commit_id 允许你在各个版本中来回穿梭
想回到过去,git log 看一下你想去过去哪个版本
想回到未来,git reflog 看一些你想去当前时光轴往后(即未来)的 哪个版本
==========

git diff HEAD filename 工作区和当前版本比较
============== 工作区,stage区,master
git checkout -- filename,修改还没有add到暂存区了,舍弃修改,(从工作区舍弃修改)
git reset HEAD filename,修改已经add到暂存区了,舍弃修改(从stage区舍弃stage状态,但还在工作区),
然后还辅以git checkout -- filename,让工作区的也舍弃修改,世界和谐了
==============
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- filename。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
==============

提交的文件删除后,git检测到了
如果确实要删除,两个步骤:1,git rm 文件名,2,git commit -m "备注:删除了某个文件"
如果这个文件是误删,则 git checkout -- test.txt,(git checkout)其实是用版本库中的版本替换工作区的版本,如论工作区修改或删除,都可以一键还原
---------------
远程仓库
[email protected]:luojq/learngit.git

一,本地先有了一个learngit的项目,然后push到远程仓库
1,在gitlab上面建立了一个learngit的项目,然后让本地与远程仓库关联
git remote add origin [email protected]:luojq/learngit.git
2,把本地推送给远程,-u是因为远程仓库现在是空的
git push -u origin master
3,以后本地提交,
git push origin master ?? origin/master
二,远程仓库先有了一个项目,然后clone到本地
[email protected]:archive/workprocess.git
git clone [email protected]:archive/workprocess.git
[email protected]:luojq/catAPI.git

========== 分支
新建一个分支dev,并切换到该分支上,【-b 表示创建并切换】
git checkout -b dev
相当于1,git branch dev, 2,git checkout dev

在分支上修改,然后切换到master上,合并分支的修改,步骤:
1,git checkout dev 切换到分支dev上,然后去修改东西,例如readme.txt
2,git checkout master ,切换回到主干
3,git merge dev,在主干上合并dev分支的修改【合并某分支到当前分支】
4,git branch -d dev ,dev完成了它的使命,删除该分支,这 过河拆桥啊

显示的好看一些
git log --graph --pretty=oneline --abbrev-commit

使用【强制禁用fast forward模式合并分支:--no-ff】
git merge --no-ff -m "merge with no-ff" devbranch

git stash 暂存
git stash list 查看
1,git stash apply [[email protected]{0}] 重新恢复[指定的stash,如果有多个]
2,git stash drop 删除暂存stash

1和2 可以合并为 git stash pop,恢复并删除
说明stash 是一个栈

git branch -D <分支名>,如果一个分支上的修改已经add,commit了,然后删除,会提示没有merge,此命令强制删除分支

============= 从远程仓库clone下来的项目 ==========
1,git remove -v 查看远程 抓取和推送的 具体信息
2,
git push origin master
git push origin <目的分支例如dev>

在本电脑的另一个目录clone下远程仓库,
然后
想把远程的dev 创建到本地来,
git checkout -b dev origin/dev 出现问题,原因是我clone前 之前的一个版本没有将dev分支 push 到远程仓库
所以先 1, git pull
2, git checkout -b dev origin/dev 就可以了

3,我在dev分支上,git push origin dev,将本地dev分支的更新push到远程dev分支上去了
共三步,add,commit,push

其他人在自己的dev分支修改后,提交到了远程的dev分支
你想把远程的dev更新 同步到 本地的dev分支上
1,git branch --set-upstream dev origin/dev (指定本地dev 与 远程dev 的链接)
2,git pull(仅这步是不行的)

===============================
因此,多人协作的工作模式通常是这样:

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

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

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

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

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

这就是多人协作的工作模式,一旦熟悉了,就非常简单。
=============================================

标签

git tag v1.0
git log --pretty=oneline --abbrev-commit
git tab v0.9 6577556 ,有时候忘了给之前的打一下标签,可以git log 查看标签,然后 此处末尾的是commit_id

git show <tagname>

*

时间: 2024-10-19 23:09:49

Git 笔记的相关文章

git笔记:通过给grunt-inline打tag看tag操作

晚上review了下grunt-inline的issues,看到有个兄弟pull request,修正了0.3.0版本的一个bug.于是就merge了下,然后发布了0.3.1版本(这里). npm publish后,突然想到一个问题,发布了这么多个版本了,但好像都没有打过tag,这个不利于版本回溯以及bug trace.svn版本管理里有tag的概念,git里八九不离十也有,虽然还没用过.就简单百度了下,打完tag后顺便做下笔记: 查看tag git tag 比如我在grunt-inline的项

git笔记之多账户的使用

一:加载wifi驱动模块 在hardware/libhardware_legacy/wifi/wifi.c调用函数 insmod(DRIVER_MODULE_PATH, DRIVER_MODULE_ARG) 其中 DRIVER_MODULE_PATH = /system/lib/dhd.ko DRIVER_MODULE_ARG  = "firmware_path=/etc/wifi/40181/fw_bcm40181a2.bin nvram_path=/etc/wifi/40181/nvram.

git笔记之eclipse使用github远程仓库进行版本管理

这里记录一下eclipse开发工具中git的使用说明. 环境:centOS,eclipse-jee-kepler-SR2-linux-gtk-x86_64.tar.gz eclipse的使用需要依赖Java环境,这边CentOS系统里面已经安装好了JDK: 不能使用open-jdk,此版本会出现不明异常. 1.eclipse安装egit插件: eclipse里面,help --> Eclipse Marketplace 搜索egit 按照eclipse默认要求一步一步安装即可. 2.New Pr

git笔记之安装使用

git是什么? 简单介绍一下,Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.Git是目前世界上最先进的分布式版本控制系统,没有传说中的之一. Git诞生? Git 是 Linus为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件.在过去一段时间里,Linux的开发并没有使用到版本控制,天呐!Linux这么牛逼的系统曾经在开发过程中居然没有使用到版本控制,这个放眼于现在这个阶段觉得很不可思议,当时确实是这样的,世界各地的志愿者把源代码文件

GIT笔记:将项目发布到GITHUB

GIT笔记:将项目发布到GITHUB 本机配置 1.在项目目录初始化GIT $ git init 2.用命令git add告诉Git,把文件添加到仓库 $ git add . // 这里是所有文件,用了(.) 3.用git commit把项目提交到仓库 -m 必填 $ git commit -m 'All Code' [master(根提交) 11e6a9a] All Code 62 files changed, 3680 insertions(+) create mode 100644 .gi

每天学点Git -- 笔记(四)

现在,我们考虑一种情况,当你修改了文件,但是此时你想撤销它,怎么办?下面,我们用代码试验一下: (1)在readme.txt中添加新的一行: $ cat readme.txt Git is a distributed version control system. Git is free software distributed under the GPL. Git has a mutable index called stage. Git tracks changes of files. My

【Git笔记】&quot;error:0D0890A1:asn1 encoding routines:ASN1_verify:unknown message digest algorithm&quot;的解决方法

       备注:本笔记所描述的问题的前提是机器上已安装成功git且通过配置ca证书支持以https方式获取远程仓库,如果使用git时碰到这篇文章描述的问题,那么按那篇文章给出的办法解决即可. 最近从github clone repo时,git clone命令报错如下(以vim代码补全插件youcompleteme为例): $ git clone https://github.com/Valloric/YouCompleteMe.git Cloning into 'YouCompleteMe'

版本控制之道 — 使用Git 笔记

第一次看这本书,是在两年以前了,最近又看了一遍,发现好多东西已经忘记了,另外,在最近两年的工作中,有些很有用的命令我居然一次都没用过, 所以,为以后查阅方便和更有效率的工作,写一篇笔记吧. 一.概述 版本库和工作目录树: 1.使用Git相关命令初始化版本库,即生成".git"目录,于是,".git"目录的父目录就是工作目录树 2.克隆(clone)一个已有的版本库,也就连带创建了工作目录树 Git安装完成之后,配置相关参数: --global参数代表配置的是全局参数

Git笔记

1.版本控制系统 VCS - Version Control System 版本控制是一种记录一个或若干文件内容变化,以便将来查看特定版本修订情况的系统. 记录文件所有的历史变化 随时可恢复到任何一个历史状态 多人协作开发或修改 错误恢复 多功能并行开发 2.Git分布式版本控制系统 Git是最初开发是为了取代 BitKeeper ,由 Linux 创始人 Linus Torvalds 开发,作为 Linux 内核代码管理系统使用.

android studio的git笔记

git公钥修改(公钥在c盘user下面的.ssh/id_rsa.pub里):我修改用的是:gitGUI工具(http://www.cnblogs.com/banzhuan/p/6544951.html) 命令是: ssh-keygen -t rsa -C "[email protected]"     //注册github的邮箱 说一下:默认是不用修改的(),直接把公钥弄到github上新建一个公钥就可以了(在setting/SSH and GPG keys,然后new一个,用.ssh