git使用指南

1.基础操作

1.1 初始化repo

git init

1.2 添加更改

git add

1.3 添加到暂存区

git commit -m "update"

1.4 克隆仓库

git clone

2.版本管理

2.1 查看repo状态

git status

2.2 查看文件变化

git diff

2.3 查看当前版本的log

git log

2.4 查看所有的log

git reflog

2.5 版本回退

git reset --hard HEAD^

注意:HEAD^ 的 个数指的是回到前面第几个版本,一个代表一个版本,如果你不想输入多个^可以使用HEAD~1

当然你也可以指定提交ID来转到指定的版本

2.6 撤销修改

git checkout -- readme.txt

readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

如果你已经把修改add了

用命令git reset HEAD <file>可以把暂存区的修改撤销掉(unstage)

如果你已经commit了

请用git reset --head HEAD^回到上个版本

2.7 删除文件

git rm

2.8 链接远程repo

git remote add origin git@github.com:michaelliao/learngit.git

添加后,远程库的名字就是origin

git push -u origin master

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

git remote

查看远程库在本地名字

2.9 查看远程库信息

git remote -v

2.9 删除远程库

先用git remote -v查看远程库信息

git remote rm origin

3.分支管理

3.1 创建分支并切换

git checkout -b dev

3.2 切换分支

git checkout master

3.3 查看当前分支

git branch

3.4 合并分支

git merge dev

Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。

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

git merge --no-ff -m "merge with no-ff" dev

3.5 解决合并冲突

git status查看我们冲突的文件:

Git用<<<<<<<=======>>>>>>>标记出不同分支的内容

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.
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1

我们解决冲突后保存

然后add 和commit

3.6 删除分支

// 删除本地分支
git branch -d localBranchName

// 删除远程分支
git push origin --delete remoteBranchName

4. BUG分支

当你开发工作进行到一办需要修一个bug,但是你的dev分支还没commit,不是你不想commit是你的工作还没完成,如果你直接切换到别的分支,暂存区的东西会被带过去

Git提供一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作

git stash

4.1 查看stash区

git stash list

4.2 恢复stash

需要恢复一下,有两个办法:

一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

另一种方式是用git stash pop,恢复的同时把stash内容也删了:

4.3 在dev分支应用bug修复

同样的bug,要在dev上修复,我们只需要把4c805e2 fix bug 101这个提交所做的修改“复制”到dev分支。注意:我们只想复制4c805e2 fix bug 101这个提交所做的修改,并不是把整个master分支merge过来。

Git专门提供了一个cherry-pick命令,让我们能复制一个特定的提交到当前分支:

git cherry-pick 4c805e2

5. feature分支

添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。

  1. 创建feature分支

git checkout -b feature-vulcan

  1. 开发 add & commit

  2. 切换dev分支

git checkouto dev

  1. 合并分支

git merge --no-ff -m "merge feature" feature-vulcan

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

6. 多人协作

6.1 推送分支

推送分支,就是把该分支上的所有本地提交推送到远程库

git push origin master

如果要推送其他分支,比如dev,就改成:

git push origin dev

当你的小伙伴从远程库clone时,默认情况下,你的小伙伴只能看到本地的master分支

现在,你的小伙伴要在dev分支上开发,就必须创建远程origindev分支到本地

git checkout -b dev origin/dev

6.2 解决冲突

推送失败,因为你的小伙伴的最新提交和你试图推送的提交有冲突,解决办法也很简单,Git已经提示我们,先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送:

git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置devorigin/dev的链接:

git branch --set-upstream-to=origin/dev dev

本文作者:TheGathering

本文链接:https://www.cnblogs.com/TheGathering/p/18031576

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   flose  阅读(26)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
🔑