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 [email protected]: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分支。
- 创建feature分支
git checkout -b feature-vulcan
-
开发 add & commit
-
切换dev分支
git checkouto dev
- 合并分支
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
分支上开发,就必须创建远程origin
的dev
分支到本地
git checkout -b dev origin/dev
6.2 解决冲突
推送失败,因为你的小伙伴的最新提交和你试图推送的提交有冲突,解决办法也很简单,Git已经提示我们,先用git pull
把最新的提交从origin/dev
抓下来,然后,在本地合并,解决冲突,再推送:
git pull
也失败了,原因是没有指定本地dev
分支与远程origin/dev
分支的链接,根据提示,设置dev
和origin/dev
的链接:
git branch --set-upstream-to=origin/dev dev
标签:origin,Git,dev,git,master,使用指南,分支 From: https://www.cnblogs.com/TheGathering/p/18031576