Git

设置基本信息

$ git config --global user.name "Your Name":告诉git你是谁

$ git config --global user.email "[email protected]":告诉git怎么联系你

$ git config --global core.editor "编辑器名称":告诉git你设置的默认编辑器是什么

$ git config --global commit.template 模板名称或者模板绝对路径:告诉git你设置的提交模板是什么

创建版本库

git init :把这个目录变成Git可以管理的仓库;

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

git add :把文件添加到仓库,可反复多次使用,添加多个文件(实际上是把文件修改添加到暂存区);

git commit:把文件提交到仓库(把暂存区的内容提交到当前分支);

时光机穿梭

git status:掌握仓库当前的状态;

git diff:查看对文件做了哪些修改;

git log:显示从最近到最远的提交日志;

git reset --hard HEAD^:回退到上一个版本;

git reset --hard 3628164:回退到commit_id为3628164的版本;

git reflog:记录每一次命令commit_id;

git rm --cached 文件名:可以将文件状态还原为未暂存状态

git stash:将当前未提交到本地(和服务器)的代码推入到Git的栈中,这时候工作区和上一次提交的内容是完全一样的

git stash pop:把放在栈中的代码合并到本地

管理修改

git diff HEAD -- file:查看工作区和版本库里面最新版本的区别;

git checkout -- file:丢弃工作区的修改;

git reset HEAD file:把暂存区的修改撤销掉(unstage),重新放回工作区;

删除文件

git rm file:删除该文件;

git checkout -- file:把误删的文件恢复到最新版本;

远程仓库

ssh-keygen -t rsa -C "[email protected]":创建SSH Key;

如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

git remote add origin [email protected]:LAOZIZUIKU/learngit.git:把一个已有的本地仓库与你的github账号关联

git push -u origin master:把本地库的所有内容推送到远程库上;

git push origin master:把本地master分支的最新修改推送至GitHub;

git checkout --track origin/branch:是追踪一个远程分支,并且在本地创建和关联它,然后切换到这个分支

git branch --set-upstream debug origin/branch

从远程库克隆

git clone [email protected]:LAOZIZUIKU/gitskills.git:克隆一个本地库;

分支管理

git branch:查看分支;

git branch name:创建分支;

git checkout --track origin/branch:远程有分支,本地没有创建

git checkout name:切换分支;

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

git push origin branch:将本地新建分支push到自己的本地远程origin上;

git branch --set-upstream-to=origin/branch:把本地分支与远程origin的分支进行关联处理(通过 --set-upstream-to 命令)

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

git merge --no--ff -m "xxxxx" dev:当前分支和dev分支合并,并创建新的提交点;

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

git push origin --delete BranchName

合并时冲突是如何产生的

git的实现途径类似于一棵树,比如我们基于一个项目创建了两个分支,就好似两个结点,如果我们对于两个结点做了相同的操作,都对于同一个地方进行了修改,那么就不知道应该保留哪一个操作了,此时就会产生冲突。

如何解决冲突:保留自己修改的数据,同时保留别人的数据信息。先commit到本地仓库,再pull,使文件发生改变,直接修改文件中数据,将特殊符号删除,保存文件,此时再push

git库所在的文件夹中的文件大致有4种状态:

Untracked:未跟踪, 此文件在文件夹中,但并没有加入到git库,不参与版本控制。通过git add 状态变为Staged

Unmodify: 文件已经入库,未修改,即版本库中的文件快照内容与文件夹中完全一致。这种类型的文件有两种去处,如果它被修改,而变为 Modified。如果使用 git rm 移出版本库,则成为 Untracked 文件

Modified:文件已修改,仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过 git add 可进入暂存staged 状态, 使用git checkout 则丢弃修改过, 返回到 unmodify 状态,这个git checkout 即从库中取出文件,覆盖当前修改

Staged:暂存状态,执行git commit 则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为 Unmodify 状态. 执行git reset HEAD filename 取消暂存, 文件状态为Modified

应该提交哪些文件:提交的代码不会对项目带来负面影响

未完待续.....

你可能感兴趣的:(Git)