使用多个仓库
git push cangkuming fenzhiming
删除远程仓库
git push 远程仓库名 :删除目标分支 # 需要先删除本地目标分支
git pull <远程主机名> <远程分支名>:<本地分支名> //取回远程主机某个分支的更新,再与本地的指定分支合并。
使用Git下载指定分支命令为:git clone -b 分支名仓库地址
Git常用命令
工作区(file) --> git add file(暂存区) --> git commitf -m 'x'(版本库)
mkdir itsgit 创建也个git管理用的版本库
cd itsgit
git init 将该目录变成git能够管理的仓库
将需要管理的文件添加到仓库里
git add filename,filename2 --将工作区文件放入暂存区
git commit -m '说明' --一次性把暂存区的所有修改提交到分支(master)HEAD指向master。
git log 查看历史记录
git log --pretty=oneline
版本回退
上一个版本就是HEAD^,上上一个版本就是HEAD^^,
当然往上100个版本写100个^比较容易数不过来,所以写成HEAD`100
git reset --hard HEAD^
多返回了版本 只要还知道commit id
git reset --hard id
git reflog用来记录了每一次commit id
git怎样跟踪file
git跟踪并管理的是修改,而非文件。
执行: 修改file --> git add file --> 再次修改file --> git commit
git diff HEAD -- file 查看版本库最新file和工作区file的区别
git在这个过程只记录了第一次修改的内容,第二次将不会记录,如果版本回退在跳回来,第二次修改的内容会丢失
git放弃修改
1.仅仅工作区的修改时,用命令git checkout -- file
2.工作区修改后,并add到暂存区 先git reset HEAD file(文件到了add之前在工作区的状态),在执行上述第一点
3.并且commit了,使用版本回退功能
删除文件
工作区 rm file ;版本库 git rm file .可以放弃删除,by git reset HEAD file and git checkout file
在工作区失误删除了file(前提该file存在暂存区或版本库)
git checkout file
查看当前分支
git branch
-- 本地库连接远程库
提交到远程仓库 git分布式版本库
远程仓库Github git init 初始化本地项目 git add projiect git commit -m 'say something' git remote add `anyname` https://github.com/tangpinggui/oasystem 连接远程仓库 git push -u `anyname` master 第一次提交
git push 以后提交 or 多个仓库不同分支 git push anyname A:B A:本地分支名 B:远程分支名
git push -u origin master报错 是因为 版本内容不同步
To https://github.com/tangpinggui/oasystem.git ! [rejected] master -> master (fetch first) error: failed to push some refs to 'https://github.com/tangpinggui/oasystem.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. (tornado1) pyvip@Vip:~/oasystem$ git remote add origin git@github.com:tangpinggui/oasystem.git fatal: remote origin already exists.
解决方法:
git pull --rebase origin master 同步远程文件
或者:
git pull origin master --allow-unrelated-histories git merge origin/master git push -u origin master
git clone https://github.com/tangpinggui/remotelibrary 克隆版本库 ,成功后就有了这个 remotelibrary 目录
创建分支:
创建与合并分支
在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master
分支。HEAD
严格来说不是指向提交,而是指向master
,master
才是指向提交的,所以,HEAD
指向的就是当前分支。
一开始的时候,master
分支是一条线,Git用master
指向最新的提交,再用HEAD
指向master
,就能确定当前分支,以及当前分支的提交点:
之前状态:
‘
创建dev分支
git checkout -b dev
创建之后:Git新建了一个指针叫
dev
,指向master
相同的提交,再把HEAD
指向dev
,就表示当前分支在dev
上。再次commit时,则指针dev移动,master则不移动加入修改了某个文件,并且commit。它则被 dev记录
这时跳回master,修改内容消失。说明master指针未移动,在次转回dev,内容还在。
git checkout master
完事后在合并指针,将dev工作成果合并到master ps:需要去到 git checkout master分支 在执行合并
git merge dev
合并完成后删除dev git branch -d dev
--------------------------------------------------------------------------------------
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
ex: 一个简单的分支合并思路
1. master
commit1 - commit2 - commit3 - commit4 - commit5
2.checkout newbrabch 新的分支在master commit创建,并新增功能
commit2 - newcommit1
3.将newcommit1和commit5合并
首先checkout commit5
然后marge into current, 如果只是单纯的增加了代码,那么会直接合并。如果是修改了代码,需要手动选择应该留下的代码
另外在git init的目录下创建 .gitignore文件。
在该文件可以申明不追踪的目录,比如 加入 static/