前言
记录一些工作中常用的git命令,以便经后查阅
将所有代码和.repo目录都删掉后要重新下载代码的操作
- 重新生成.repo目录 repo init -u git@ip:manifest
- 同步代码 repo sync
- 在所有git库都新开一个master分支 repo forall -c “git checkout -b master”
下载最新代码
- git pull origin master 或者用2、3
- git fetch origin master 下载
- git merge origin/master 合并到当前分支上
切换分支遇到错误 Your local changes to the following files would be overwritten by checkout
- git reset –hard //用代码库中的文件完全覆盖本地工作版本,reset是针对版本的
- git pull
- git checkout master
版本回退和切换分支
- git log //查看某个分支的commitid
- git branch //查看目前处于哪个branch
- git branch branch_name commitid //根据commitid创建分支branch_name
- git checkout branch_name //切换到新建的分支
放弃本地修改的代码
- repo forall -c “git reset –hard”
- repo forall -c “git pull origin master”
- repo forall -c “git checkout master”
切换代码分支
例如代码库上面新开了一个HOSTING分支,大家可以根据如下方法更新到HOSTING分支:
1、 全新下载方法:
repo init -u git@ip:manifest -m HOSTING.xml
repo sync
2、 在原有代码基础上更新成HOSTING分支的方法 :
repo forall -c “git fetch –all && git reset –hard origin/HOSTING”
对HOSTING代码的修改提交时要注意提交的HOSTING分支上,操作方法:
git push origin HEAD:HOSTING
一般在进行HOSTING代码修改前请先执行下面命令,使当前分支跟踪远程HOSTING分支:
git reset --hard origin/HOSTING
// 注意观察本地分支的哈希数和哪个远程分支一样,然后就可以正常进行修改提交和pull操作了
对于要提交到主分支和HOSTING分支的代码提交建议按如下操作:
1、 新建两个本地分支master、HOSTING
新建并跟踪主分支:
git checkout -b master remotes/origin/master
新建HOSTING跟踪分支:
git checkout -b HOSTING remotes/origin/HOSTING
2、 在master修改提交后记住commit-id
3、 切换到HOSTING分支后使用cherry-pick命令
git cherry-pick commit-id (master分支上的提交id号)
这样在master分支上对应提交被拷贝到了当前分支,然后就可以进行push操作了
克隆一个特定的远程分支
- git init
- git remote add -t BRANCH_NAME_HERE -f origin REMOTE_REPO_URL_PATH_HERE
- git checkout BRANCH_NAME_HERE
以某个远程branch最新的一个snapshot为基础创建一个新的branch
git checkout -b newbranch origin/remote_branch
从远程拉取dev分支到本地,并切换到dev分支
git checkout –track origin/dev
修改提交代码流程:
1、 检查当前分支与跟踪分支
git branch -a -v
2、 如果本地没有建master分支,则新建
git checkout -b master remotes/origin/master
如果已有master本地分支但是没有跟踪远程的master分支,则跟踪
git reset –hard origin/master
3、 更新最新代码
git fetch –all
git merge origin/master
4、 修改代码并提交
- 修改代码文件…
- git status
- git add file(添加修改的文件)/git add -u .(暂存当前的路径)
- git diff
- git commit -m “Description… ”
- git push origin HEAD:master