git 无法拉取新的远程分支
是想把远程分支 dev 拉到本地来,但是有时候没有用,提示远程分支不存在,我们需要通过下面的命令来操作
git fetch origin
其他人的需要统一本地和线上的HEAD
那么如何去解决呢?很简单,用这个命令
git reset --hard origin/分支
cherry pick 合并单个 commit
git cherry-pick 248cba8e77231601d1189e3576dc096c8986ae51(commit_id)
回退指定版本
git reset --hard 248cba8e77231601d1189e3576dc096c8986ae51(commit_id)
撤销上次commit,还原文件
git reset HEAD^
git reset HEAD~1 // 回退几步
撤销上次commit,抛弃修改
git reset --hard HEAD^
查看合并或提交类别集合
git reflog
clone远程分支
git clone -b 远程分支 git@lab.com:org/project.git
checkout 创建,拉取并切换远程分支
git checkout -b dev origin/dev
branch 删除分支
git branch -D 分支
合并分支,保持线性的commit记录
git rebase master
// 冲突是解决冲突
git add .
// 继续循环
git rebase --continue
// 直到修复完成
// 切换并合并
git merge dev
查看commit记录
gitk
- 场景:你是第一天来公司上班的,项目代码托管在GitLab,项目地址:git@lab.com:org/project.git,现在有一处代码需要你修改。请下完成此项任务中,与git/gitlab相关的操作步骤。
第一步: ssh-keygen -t rsa -C zhangsan@abc.com
第二步:拷贝公钥到gitlab
第三步:
git config —global user.name zhangsan
git config —global user.email zhangsan@abc.com
第四步:git clone git@lab.com:org/project.git
第五步:git checkout -b project-20170227-zhangsan-bugfix
第六步:修改代码
第七步:git status
第八步:git add .
第九步:git commit -am ‘bugfix’
第八步:git push --set-upstream origin project-20170227-zhangsan-bugfix
你的用户信息
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
初始提交
echo "#xxx" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin xxxx
git push -u origin master
git status 命令可以让我们时刻掌握仓库当前的状态
git diff顾名思义就是查看difference,显示的格式正是Unix通用的diff格式,能看看具体修改了什么内容
拉取远程的Repo到本地(如果已经在本地,可以略过)
$ git clone xxxxxx
在本地仓库删除文件
$ git rm 我的文件
在本地仓库删除文件夹
$ git rm -r 我的文件夹/
此处-r表示递归所有子目录,如果你要删除的,是空的文件夹,此处可以不用带上-r。
提交代码
$ git commit -m"我的修改"
推送到远程仓库(比如GitHub)
$ git push origin xxxxxx
补充: git rm
查看git rm的说明文档:
$ git rm -h
用法:git rm [<选项>] [--] <文件>...
-n, --dry-run 演习
-q, --quiet 不列出删除的文件
--cached 只从索引区删除
-f, --force 忽略文件更新状态检查
-r 允许递归删除
--ignore-unmatch 即使没有匹配,也以零状态退出
使用git pull代码时,经常会碰到有冲突的情况,提示如下信息:
error: Your local changes to 'c/environ.c' would be overwritten by merge. Aborting.
Please, commit your changes or stash them before you can merge.
这个意思是说更新下来的内容和本地修改的内容有冲突,先提交你的改变或者先将本地修改暂时存储起来。
处理的方式非常简单,主要是使用git stash命令进行处理,分成以下几个步骤进行处理。
1、先将本地修改存储起来
修改文件加入
$ git stash
新建文件也加入缓存
$ git stash -u
这样本地的所有修改就都被暂时存储起来 。是用git stash list可以看到保存的信息:
其中stash@{0}就是刚才保存的标记。
2、pull内容
暂存了本地修改之后,就可以pull了。
$ git pull
3、还原暂存的内容
$ git stash pop stash@{0}
系统提示如下类似的信息:
Auto-merging c/environ.c
CONFLICT (content): Merge conflict in c/environ.c
意思就是系统自动合并修改的内容,但是其中有冲突,需要解决其中的冲突。
4、解决文件中冲突的的部分
打开冲突的文件,会看到类似如下的内容:
其中Updated upstream 和=====之间的内容就是pull下来的内容,====和stashed changes之间的内容就是本地修改的内容。碰到这种情况,git也不知道哪行内容是需要的,所以要自行确定需要的内容。
解决完成之后,就可以正常的提交了。
5.add commit 一起用
git commit -am ""
-a, --all commit all changed files(提交所有被修改的文件)
注:创建新文件是不会加入commit。
6:首次关联提交冲突
提交时使用git push origin master
出现failed to push some refs to git
可以通过以下方式解决
git pull --rebase origin master
执行后可以看到本地代码中多了README.md文件
再次执行git push origin master即可完成代码上传
如果本地已存在 冲突文件,得先处理冲突。