Git Clone远程仓库项目到本地
1. git clone 远程项目地址
克隆了远程项目到本地仓库,默认分支是master
2. git checkout -b develop # 从master创建本次开发分支,并切换到该分支
3. git add . 以及 git commit -m "fix bug 1" ...
4. 本次开发完毕。更新master到最新,把master的代码更新合并到本次开发分支。
git checkout master #切换到master分支
git pull # 更新master到最新
git checkout develop
git merge master # 合并master到本次开发分支,如果有冲突,请解决冲突。j解决完冲突 ,需要再
git add . 和 git commit -m " "
5. 切换到master,merge dev,好了之后 Push
6. 接着在开发分支开发,之后要提交到远程仓库前,从第4步开始即可。
其他:
1、创建本地分支 local_branch
git branch local_branch
2、创建本地分支local_branch 并切换到local_branch分支
git checkout -b local_branch
3、切换到分支local_branch
git checkout local_branch
4、推送本地分支local_branch到远程分支 remote_branch并建立关联关系
a.远程已有remote_branch分支并且已经关联本地分支local_branch且本地已经切换到local_branch
git push
b.远程已有remote_branch分支但未关联本地分支local_branch且本地已经切换到local_branch
git push -u origin/remote_branch
c.远程没有有remote_branch分支并,本地已经切换到local_branch
git push origin local_branch:remote_branch
5、删除本地分支local_branch
git branch -d local_branch
6、删除远程分支remote_branch
git push origin :remote_branch
git branch -m | -M oldbranch newbranch 重命名分支,如果newbranch名字分支已经存在,则需要使用-M强制重命名,否则,使用-m进行重命名。
git branch -d | -D branchname 删除branchname分支
git branch -d -r branchname 删除远程branchname分支
7、查看本地分支
git branch
8、查看远程和本地分支
git branch -a
git 将本地分支上传至远程分支
一、上传一个独立的分支(比如代码是从工程中直接DOWNLOAD ZIP文件,该文件与原MASTER分支是独立的)
1、git init (在本地工程目录下)
2、git add .
3、git commit -m "luyang" (”luyang“为分支名)
4、git branch luyang (创建分支)
5、git checkout luyang (切换分支)
6、git remote add origin http://192.168.36.10:10080/quantum_rng_testing/nist (”quantum_rng_testing/nist“ 为工程的目录)
7、git push origin luyang (将分支上传)
注意:如果提示 "please tell me who you are“
在.git 目录下的config文件,在最后添加
[user]
name = xxxx
email = xxxxxxx@xx.com
关联 or 切换远程分支
关联: git remote add origin git@github.com:git_username/repository_name.git
切换:
git remote remove origin
git branch --set-upstream-to origin/develop develop
//或者
git remote add origin git@github.com:git_username/repository_name.git
二、上传一个与MASTER相关的分支(该分支是从MASTER中git clone 得到,相关信息在 .git 文件中)
修改后源码后,在进行如下操作
1、git add .
2、git commit -m "luyang" (”luyang“为分支名)
3、git branch luyang (创建分支)
4、git checkout luyang (切换分支)
5、git push origin luyang:luyang
有时候远程分支已经存在,但是本地查不到,则需要更新一下远程分支
Git更新远程分支列表:
git remote update origin --prune,这里要注意下,如果你的remote branch不是在origin下,按你得把origin换成你的名字。
Git-远程分支,远程跟踪分支,跟踪分支的区别
远程分支
远程分支对应的英文为remote branch,其就是在远程仓库的普通分支,比如远程仓库上的master,自己在远程仓库创建的分支,以及自己推送到远程仓库上去的在远程仓库上的分支。当运行git push (仓库名) 分支名 的命令时,便会在远程仓库创建远程分支。如下图中的框出的master分支既是远程分支。
远程跟踪分支
远程跟踪分支对应的英文名称为remote-tracking branch,虽然仅仅多了tracking这个词,但是其作用与性质却与远程分支有很大的不同,远程跟踪分支是本地仓库对远程仓库中的某个远程分支的状态的记录,它们以 “(远程仓库名)/(分支名)” 形式命名。
远程跟踪分支的作用是告诉用户其所跟踪的远程分支的状态(即指向哪一个commit),因而它在本地是只读的,用户是无法自行修改它的指向。其指向将在用户与远程仓库通信时自动改变,这里的通信是指执行诸如git fetch等从远程仓库获取数据的操作。
假设你的网络里有一个在 git.ourcompany.com 的 Git 服务器。 如果你从这里克隆,Git 的 clone 命令会为你自动将其命名为 origin,拉取它的所有数据,创建一个指向它的 master 分支的指针,并且在本地将其命名为 origin/master,这便是指向远程分支master的远程跟踪分支。 Git 也会给你一个与 origin 的 master 分支在指向同一个地方的本地 master 分支,正是这个本地分支才使得用户可以在本地对master分支进行修改
如果你在本地的 master 分支做了一些工作,然而在同一时间,其他人推送提交到git.ourcompany.com 并更新了它的 master 分支,那么你的提交历史将向不同的方向前进。 也许,只要你不与 origin 服务器连接,你的 origin/master 指针就不会移动。
如果要同步你的工作,运行 git fetch origin 命令。 这个命令查找 “origin” 是哪一个服务器(在本例中,它是 git.ourcompany.com),从中抓取本地没有的数据,并且更新本地数据库,移动origin/master 指针指向新的、更新后的位置。
为了演示有多个远程仓库与远程分支的情况,我们假定你有另一个内部 Git 服务器,仅用于你的 sprint 小组的开发工作。这个服务器位于 git.team1.ourcompany.com。 你可以运行 git remote add命令添加一个新的远程仓库引用到当前的项目。 将这个远程仓库命名为 teamone,将其作为整个 URL 的缩写。
现在,可以运行 git fetch teamone 来抓取远程仓库 teamone 有而本地没有的数据。 因为那台服务器上现有的数据是 origin 服务器上的一个子集,所以 Git 并不会抓取数据而是会设置远程跟踪分支teamone/master 指向 teamone 的 master 分支。
跟踪分支
跟踪分支的英文名称为tracking branch,从一个远程跟踪分支产生出的一个本地分支便是跟踪分支,该本地分支对应的远程跟踪分支称为上游分支。跟踪分支是与远程分支有直接关系的本地分支,当克隆一个仓库时,它通常会自动地创建一个跟踪 origin/master 的 master 分支。创建跟踪分支可以使用
git checkout -b [branch] [remotename]/[branch],如:
$ git checkout -b serverfix origin/serverfix
Branch serverfix set up to track remote branch serverfix from origin.
Switched to a new branch 'serverfix'
还可以使用--track快捷方式,如:
$ git checkout --track origin/serverfix
Branch serverfix set up to track remote branch serverfix from origin.
Switched to a new branch 'serverfix'
那么跟踪分支有什么作用呢?跟踪分支为本地分支和远程分支之间建立了一种联系,方便了远程分支和本地分支的同步。 如果在一个跟踪分支上输入 git pull,Git 能自动地识别去哪个服务器上抓取、合并到哪个分支。同时,跟踪分支还能查看本地分支与对应的远程分支之间的超前落后情况,如使用git branch -vv语句
$ git branch -vv
iss53 7e424c3 [origin/iss53: ahead 2] forgot the brackets
master 1ae2a45 [origin/master] deploying index fix
* serverfix f8674d9 [teamone/server-fix-good: ahead 3, behind 1] this should do it
testing 5ea463a trying something new
这里可以看到 iss53 分支正在跟踪 origin/iss53 并且 “ahead” 是 2,意味着本地有两个提交还没有推送到服务器上。 也能看到 master 分支正在跟踪 origin/master 分支并且是最新的。 接下来可以看到 serverfix 分支正在跟踪 teamone 服务器上的 server-fix-good 分支并且领先 3 落后 1,意味着服务器上有一次提交还没有合并入同时本地有三次提交还没有推送。 最后看到 testing 分支并没有跟踪任何远程分支。
Ref:
http://www.cnblogs.com/Lostork/p/git_remote_remote-tracking_tracking_branch.html