Git 基本命令
git clone git仓库地址在本地初始化?git fetch把远程信息同步到本地库,但不mergegit pull把远程信息同步到本地库,mergegit pull origin mastergit branch查看本地分支git branch -a查看本地和远程分支git add .将所有修改文件加入本地库git commit将add的文件提交到本地库gi
基本命令
git clone git仓库地址
git fetch
把远程信息同步到本地库,但不merge
git pull
把远程信息同步到本地库,merge
git pull origin master
git branch
查看本地分支
git branch -a
查看本地和远程分支
git add .
将所有修改文件加入本地库
git commit
将add的文件提交到本地库
git push
将本地库推送到远程库
git checkout branchname
切换到本地分支,若没有则新建
git remote -v
git查看远程仓库地址
git help # 显示command的help
git show # 显示某次提交的内容 git show $id
git co – # 抛弃工作区修改
git co . # 抛弃工作区修改
git add # 将工作文件修改提交到本地暂存区
git add . # 将所有修改过的工作文件提交暂存区
git rm # 从版本库中删除文件
git rm –cached # 从版本库中删除文件,但不删除文件
git reset # 从暂存区恢复到工作文件
git reset – . # 从暂存区恢复到工作文件
git reset –hard # 恢复最近一次提交过的状态,即放弃上次提交后的所有本次修改
git ci git ci . git ci -a # 将git add, git rm和git ci等操作都合并在一起做 git ci -am “some comments”
git ci –amend # 修改最后一次提交记录
git revert
本地初始化git
需要在https://github.com/用户名上面新建repository,再把代码上传。
git init
git add .
git commit -a -m "add README"
git remote add origin "https://github.com/mitsuhide1992/gitdemo.git"
注意,之前需要加入ssh-key到github上
git push -u origin master
在本地新建repository的方法暂时没找到
Git 获取远程分支
命令行:
运行 git fetch,可以将远程分支信息获取到本地,
再运行
git checkout -b local-branchname origin/remote_branchname
举例:
git checkout -b ly-devel origin/reload
就可以将远程分支映射到本地命名为local-branchname 的一分支。
修改git用户名密码
git config –global user.name “Your Name”
git config –global user.email you@example.com
查看git配置
git config –list
http://www.cnblogs.com/cspku/articles/Git_cmds.html
windows下的git命令行建立远程仓库需要openssh,略不方便:
http://blog.csdn.net/haomcu/article/details/8174805
删除远端文件
场景:不小心把.gitignore中不想提交被忽略的文件提交了,但是本地还不能删除。
删除文件夹:
git rm -r --cached .virtualenvs/djangodev/include/
删除文件:
git rm -r --cached .virtualenvs/djangodev/.Python
之后再
git push origin master
git忽略某些路径和文件
.git/info/exclude中修改:
output/
log/
smart-api-gateway-accessor/target/
*.iml
.idea
.gitignore中修改:
*.cab
*.msi
*.msm
*.msp
.idea/
node_modules/
app/bower_components
注意:已经track的文件不会被忽略,需要删除git缓存,然后提交才能忽略:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
见:
http://www.ifeegoo.com/git-code-management-dot-gitignore-file-has-no-effect-solution.html
git中忽略某文件夹,但不忽略文件夹下的子文件夹
场景:只想上传.virtualenvs/djangodev/lib/python3.5/site-packages/文件夹,但是.virtualenvs路径下其他文件夹全忽略,怎么做到?
网上写的是:
/node_modules/*
!/node_modules/layer/layer.js
注意写法 要忽略的文件夹一定要结尾 /* ,否则不忽略规则将无法生效
但是这个只对一层嵌套的文件夹管用,多层嵌套需要这么写:
/.virtualenvs/djangodev/.Python
/.virtualenvs/djangodev/*.json
/.virtualenvs/djangodev/*/*/*
/.virtualenvs/djangodev/bin/
/.virtualenvs/djangodev/include/
!/.virtualenvs/djangodev/lib/python3.5/site-packages/
git change-id
git log 查看下更新的是否生成了 change-id, 否则需要拷贝commit-msg 到当前.git/hook目录下, git log (仅针对持续集成服务器需要根据change-id来分辨提交id的情况)
在icode上废弃了评审之后,再想push,是不是要把changeid去掉
今天 15:03
是的,重新commit –amend -m “new message” 可以达到更换changeid的效果
Git报错Could not execute editor
error: There was a problem with the editor 'vi'.
是因为git中没有绑定vim
git config --global core.editor "/usr/bin/vim"
git将本地更改提交到远端某个分支
远端分支在git页面上创建,本地分支在修改后,需要提交到远端分支。
命令格式:
git push origin 本地分支:远端分支
如何查看远端分支:
git branch -r
结果会是下面这种:
origin/bugfix/dqc_bugfix_lc
origin/bugfix/falconWarn
去掉origin/,后面的就是远程分支名,所以提交时:
git push origin master:bugfix/falconWarn
然后需要在git页面上提交合并请求
git远端分支应用
首先clone
git clone git@github.com:mitsuhide1992/polo.git
在远端创建分支,如果本地有experiment分支,等价于把本地的experiment分支提交到远端作为experiment分支。如果本地没有experiment分支,则报错,提交失败。
git push origin experiment
上面这条命令等价于
git push origin experiment:experiment
把本地experiment分支提交到远端作为extra分支
git push origin experiment:extra
把本地head提交到远端作为kknd分支
git push origin head:kknd
HEAD(大写)是”current branch”(当下的分支)。当用git checkout切换分支的时候,HEAD 修订版本重新指向新的分支。有的时候HEAD会指向一个没有分支名字的修订版本,这种情况叫”detached HEAD“
head(小写)是commit对象的引用,每个head都有一个名字(分支名字或者标签名字等等),但是默认情况下,每个叫master的repository都会有一个head, 一个repository可以包含任意数量的head。在任何时候,只要这个head被选择成为”current head”,那么这个head就成了HEAD,总是大写
这里应该是指当前活跃分支。
远端分支可以有多级
git push origin head:tib/klo
删除远端分支
git push origin :refs/heads/tib/klo
git push origin :refs/heads/kknd
把远端origin/extra分支下载下来作为extra分支
git checkout -b extra origin/extra
把本地的master分支merge到当前分支
git merge master
注意,合并远端分支,只能在github页面上pull request后合并,合并之前需要在本地检测冲突,没有冲突才能合并。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)