Git常用命令
- 1 在Windows上安装Git
$ git config --global user.name “Your Name”
$ git config --global user.email “email@example.com”
-
2 通过git init命令把这个目录变成Git可以管理的仓库
-
3 用命令git add告诉Git,把文件添加到仓库
$ git add readme.txt
- 4 用命令git commit告诉Git,把文件提交到仓库
$ git commit -m “wrote a readme file”
- 5 git diff可以查看修改内容
$ git diff readme.txt
-
6 git status命令可以让我们时刻掌握仓库当前的状态
-
7 git log命令显示从最近到最远的提交日志
-
8 把当前版本回退到上一个版本
git reset --hard HEAD^
-
9 Git提供了一个命令git reflog用来记录你的每一次命令
-
10 git checkout file 可以丢弃工作区的修改
> 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态 -
11 命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区
-
12 创建SSH Key:ssh-keygen -t rsa -C "youremail@example.com"
-
13 本地仓库和远程仓库关联
git remote add origin git@github.com:michaelliao/learngit.git
-
14 把本地库的所有内容推送到远程库上
git push -u origin master
我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。 -
15 先有远程仓库
git clone克隆一个本地库
$ git clone git@github.com:michaelliao/gitskills.git
- 16 分支管理
创建分支:git branch
切换分支:git checkout
创建+切换分支:git checkout -b
查看分支
git branch
合并分支
git merge dev
删除分支
git branch -d dev
一 难点
- 冲突解决
手动解决冲突
查看冲突
cat readme.txt
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,我们修改如下后保存
再提交
git add readme.txt
git commit -m “conflict fixed”
用git log --graph --pretty=oneline --abbrev-commit命令可以看到分支合并图。
最后,删除被合并分支:
- 17 bug分支
Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作
git stash
Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删了:
git stash list命令看看工作现场
-
18 如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除
-
19 查看远程库的信息
git remote /git remote -v
- 20 创建远程origin的dev分支到本地
git checkout -b dev origin/dev
二 难点
- 多人协作
你的小伙伴已经向origin/dev分支推送了他的提交,而碰巧你也对同样的文件作了修改,并试图推送:
推送失败,因为你的小伙伴的最新提交和你试图推送的提交有冲突,解决办法也很简单,Git已经提示我们,先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送:
git pull
git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接:
建立本地分支和远程分支的关联
git branch --set-upstream-to=origin/dev dev
git pull
这回git pull成功,但是合并有冲突,需要手动解决,解决的方法和分支管理中的解决冲突完全一样。解决后,提交,再push: