Git个人总结笔记
初始化一个Git仓库
使用git init命令。
添加文件到Git仓库
分两步:
- 使用命令git add
,注意,可反复多次使用,添加多个文件; - 使用命令git commit -m
,完成。
查看git仓库状态
要随时掌握工作区的状态,使用git status命令。
如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
版本回退
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset —hard commit_id。
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
如:git reset —hard HEAD^要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
如:git reset —hard commit_id
git diff HEAD — readme.txt:
查看工作区和版本库里面最新版本的区别
撤销修改
git checkout — readme.txt
把readme.txt文件在工作区的修改全部撤销
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
就是让这个文件回到最近一次git commit
或git add
时的状态
git reset HEAD
可以把暂存区的修改撤销掉(unstage),重新放回工作区
- 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout — file。
- 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD
,就回到了场景1,第二步按场景1操作。 - 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
git rm —cached
远程仓库
创建SSH Key:
$ ssh-keygen -t rsa -C “youremail@example.com”
github添加SHH
本地仓库进行远程同步
1 | git remote add origin git@github.com:michaelliao/learngit.git |
1 | git push -u origin master |
第一次push加上-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来
以后只要本地作了提交,就可以通过命令:
1 | $ git push origin master |
远程仓库tips:
要关联一个远程库,使用命令
1
git remote add origin git@server-name:path/repo-name.git;
关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
远程仓库克隆
1 | git clone git@github.com:michaelliao/gitskills.git |
分支管理(重要)
master指向最新的提交
HEAD指向的就是当前分支
只有master分支的时候:
每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长
当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上:
从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变
假如我们在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最简单的方法,就是直接把master指向dev的当前提交,就完成了合并:
合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了一条master分支:
下面开始实战。
首先,我们创建dev分支,然后切换到dev分支:
git checkout -b dev
git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
1 | git branch dev |
git branch命令查看当前分支
把dev分支的工作成果合并到master分支上:
git merge dev
合并后删除分支:
git branch -d dev
总结:
Git鼓励大量使用分支:
1 | 查看分支:git branch |
本地库上使用命令git remote add把它和码云的远程库关联
1 | git remote add origin git@gitee.com:liaoxuefeng/learngit.git |
git remote -v查看远程库信息
1 | git remote -v |
删除已关联的名为origin的远程库:
1 | git remote rm origin |
关联GitHub的远程库
1 | git remote add github git@github.com:michaelliao/learngit.git |
关联码云的远程库:
1 | git remote add gitee git@gitee.com:liaoxuefeng/learngit.git |
1 | git remote -v |
如果要推送到GitHub,使用命令:
1 | git push github master |
如果要推送到码云,使用命令:
1 | git push gitee master |
为开源项目贡献代码
1 | git clone git@github.com:enfangzhong/bootstrap.git |
添加推特公司bootstrap项目远程仓库
git remote add upstream git@github.com:twbs/bootstrap.git
查看建立连接的远程仓库
1、首先拉取推特公司最新代码
git pull upstream master
2、自己创建分支
git checkout -b feature/add_sth
然后去修改你自己代码
git status查看状态
git add ./
git commit -m “add sth”
3.切换到主分支,继续拉取网上最新代码
git checkout master
git pull upstream master
4.切换到分支,进行测试,
git checkout feature/add_sth
5.合并分支
git rebase master
git push origin feature/add_sth