查看远程分支 和删除远程分支
查看远程分支:
git branch -a
删除远程分支
git branch -r -d origin/branch-name
git push origin :branch-name
安装:
$ git config --global user.name "Your Name" $ git config --global user.email "[email protected]"
创建仓库:
$ mkdir learngit $ cd learngit $ pwd /Users/knight/learngit
$ git init
$ git add readme.txt
$ git commit -m "wrote a readme file"
$ git add file1.txt $ git add file2.txt file3.txt $ git commit -m "add 3 files."
时光穿梭机
$ git status
$ git diff readme.txt
$ git diff HEAD -- readme.txt
$ git status
$ git commit -m "add distributed"
$ git status
版本回退:
$ git log
$ git log --pretty=oneline #显示更加清楚.git log --help可以看文档
撤销修改:
$ vi readme.txt
$ git add readme.txt
$ vi readme.txt
$ git status
$ git checkout -- readme.txt #撤销更改
删除文件
$ git add test.txt $ git commit -m "add test.txt"
$ rm test.txt
$ git status
$ git rm test.txt #版本库中删除
$ git commit -m "remove test.txt"
创建与合并分支
$ git checkout -b dev #创建dev分支 Switched to a new branch 'dev'
#git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
$ git branch dev
$ git checkout dev Switched to branch 'dev'
$ git branch #查看当前的分支,当前分支会显示一个* 号
$ git add readme.txt
$ git commit -m "branch test"
$ git checkout master # 切换到主分支
$ git branch
$ git merge dev #把分支合并到主分支
合并完成后,就可以放心地删除dev分支了:
$ git branch -d dev #删除分支
$ git branch #查看是否删除
解决冲突
$ git checkout -b feature1
#修改readme.txt最后一行,改为:
Creating a new branch is quick AND simple.
$ git add readme.txt $ git commit -m "AND simple"
$ git checkout master #切换到master
$ git add readme.txt $ git commit -m "& simple"
$ git merge feature1
$ git status
$ cat readme.txt
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
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,我们修改如下后保存:
Creating a new branch is quick and simple.
$ git add readme.txt $ git commit -m "conflict fixed"
用带参数的git log也可以看到分支的合并情况:
$ git log --graph --pretty=oneline --abbrev-commit * 59bc1cb conflict fixed |\ | * 75a857c AND simple * | 400b400 & simple |/ * fec145a branch test ...
$ git branch -d feature1 #删除分支
分支管理策略
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
$ git checkout -b dev
修改readme.txt文件,并提交一个新的commit:
$ git add readme.txt $ git commit -m "add merge"
$ git checkout master
$ git merge --no-ff -m "merge with no-ff" dev #合并dev分支,请注意--no-ff参数,表示禁用Fast forward:
$ git log --graph --pretty=oneline --abbrev-commit #查看历史版本
git 的多人协作
$ git remote -v #查看远程分支信息
$ git push origin master #推送分支
$ git push origin dev #推送dev分支
抓取分支
$ git clone [email protected]:michaelliao/learngit.git
$ git branch $克隆下来只能看到master分支
$ git checkout -b dev origin/dev #创建远程origin的dev分支到本地
$ git commit -m "修改远程的dev分支到本地,并做文件修改"
$ git push origin dev #推送分支
$ git pull #如果推送失败,就从远程dev 拉代码下来,修改再push 从而解决冲突问题