后面的命令必定要进入项目目录,即包含 .git 的目录html
$ git pull <远程主机名> <远程分支名>:<本地分支名> # 合并至当前本地分支,则 :和 :后能够省略 $ git push origin dev_lyy(本地):dev_lyy(远程) # 推送至远程分支,没有则新建远程分支 拉取远程分支并建立本地分支:git checkout -b 本地分支名x origin/远程分支名x 显示分支关联:git remote show origin git stash save "save message" 携带备注 git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储 git stash apply stash@{num}:应用好比第二个:git stash apply stash@{1} git stash pop stash@{$num} ,好比应用并删除第二个:git stash pop stash@{1} git reset HEAD~:本地最近一次commit撤回 远程建立分支后 git fetch => git checkout 分支名 => git push
当master领先本身本地一个分支时,即其余同事合并了代码,而我本地也作了修改
git:(dev) git rebase mastergit
git 所作操做:首先,git 会把 dev 分支里面的每一个 commit 取消掉;
其次,把上面的操做临时保存成 patch 文件,存在 .git/rebase 目录下;
而后,把 dev 分支更新到最新的 master 分支;
最后,把上面保存的 patch 文件应用到 dev 分支上;github
提醒算法
在 rebase 的过程当中,也许会出现冲突 conflict。在这种状况,git 会中止 rebase 并会让你去解决冲突。在解决完冲突后,用 git add 命令去更新这些内容。 [注意]此步骤你无需执行 git-commit,只要执行 continue git rebase --continue 这样 git 会继续应用余下的 patch 补丁文件。 固然,在任什么时候候,咱们均可以用 --abort 参数来终止 rebase 的行动,而且分支会回到 rebase 开始前的状态。 git rebase —abort
Git 使用 SHA-1 算法计算数据的校验和,经过对文件的内容或目录的结构计算出一个 SHA-1哈希值,做为指纹字符串。
该字串由 40个十六进制字符(0-9及 a-f)组成,看起来就像是:24b9da6552252987aa493b52f8696cd6d3b00373
Git 的工做彻底依赖于这类指纹字串,因此你会常常看到这样的哈希值。实际上,全部保存在 Git数据库中的东西都是用此哈希值来做索引的,而不是靠文件名。数据库
Git 管理项目时,文件流转的三个工做区域:vim
基本的 Git 工做流程以下:app
分为俩种状况:fetch
$ git init # 初始化;产生一个 .git 文件
$ git remote add origin git地址 # 添加远程仓库;origin-远程仓库名字可自定义spa
$ git clone git://github.com/schacon/grit.git # 在当前目录下建立一个名为“grit”的目录,其中包含一个 .git 的目录,用于保存下载下来的全部版本记录,而后从中取出最新版本的文件拷贝。code
$ git branch --set-upstream-to=origin/test test 与远程分支创建链接 $ git branch:不加参数 列出本地 -r # 列出远程分支 -a # all -name # 新建分支 -track # 本地/远程(建立分支而且关联远程) -v # verbose详细信息 -d/-D name # 删除指定分支 -m old_name new_name # 修改分支名 $ git push origin --delete branch_name # 删除远程分支 $ git checkout -b branch_name [branch/commit] # 建立并切换分支
$ git remote add name git_address # 关联远程库 $ git stash # 储藏当前工做,接着到另外一分支处理问题 $ git stash list # 查看储藏栈 $ git stash pop # 提取最新工做并从栈删除 $ git cherry-pick # 能够理解为”挑拣”提交,它会获取某一个分支的单笔提交, 并做为一个新的提交引入到你当前分支上。 $ git diff 具体修改了那些地方 git diff <local branch> <remote>/<remote branch>对比远程分支 $ git remote:管理主机名 不带参数 -列出全部远程主机 -v 参看远程主机的网址 -show <主机名>查看详细信息 忽略文件:建立一个名为 .gitignore的文件,列出要忽略的文件模式。 如:*.a #忽略全部 .a 结尾的文件 !lib.a #但 lib.a 除外
撤销 add:git reset HEAD 合并 commit: 1. 追加至上一个 commit :git commit --amend;commit 的时间是不会变的;可加上--no-edit 2. 合并多个:git rebase -i commit(-i 后参数可写commitHSAH值即你想合并至哪个commit 或者-i HEAD~n(HEAD将它看作 你的上一次提交 的别名)HEAD~1 上个版本 HEAD~n 上n个版本) - 紧接着进入vim界面:pick为保留,s或者squash为删除commit - 又另外一个vim界面:commit msg 保留本身须要的或者修改,用#删除别的commit msg 如何重置某个文件到未修改的状态? # git checkout -- <filepath> 如何重置全部文件到未修改的状态? # git reset --hard 如何重置到某个 commit? # git reset <commit SHA> git reset用于撤销未被提交到remote的改动,即撤销local的修改。除了移动当前分支的HEAD, 还能够更改workspace和index: git reset --soft HEAD^上一个commit,想撤回俩个用HEAD~2: --soft:修改HEAD,不修改index和workspace。 --mixed:修改HEAD和index,不修改workspace。默认行为。 --hard:修改HEAD、index、workspace。把index和workspace的修改所有撤销。
则在pull命令后紧接着使用--allow-unrelated-history选项来解决问题(该选项能够合并两个独立启动仓库的历史)。