把云端的花色克隆到地方,舍弃工作区修改

Git

翻看、添加、提交、删除、找回,重置修改文件

》》》》》》》》》》》》

git help <command> # 显示command的help

git clone <项目地址,http(s)>

git show # 显示某次提交的内容 git show $id

把云端的档次克隆到当地

git co — <file> # 放任工作区修改

 

git co . # 废弃工作区修改

 

git add <file> # 将工作文件修改提交到当地暂存区

 

git add . # 将具备修改过的工作文件提交暂存区

git pull            如果有争辨,就先保存本地代码

git rm <file> # 从版本库中剔除文件

git stash         暂时搁置当前已做的改动

git rm <file> –cached # 从版本库中删除文件,但不删除文件

git stash pop stash@{0}  还原暂存的情节

git reset <file> # 从暂存区苏醒到工作文件

查看搁置使用     git stash
list

git reset — . # 从暂存区苏醒到工作文件

 

git reset –hard #
復苏以来三遍提交过的图景,即甩掉上次提交后的所有本次修改

git log  查看日志,可以看push到云端的笔录

git ci <file> git ci . git ci -a # 将git add, git rm和git
ci等操作都合并在联合做                                    git
ci -am “some comments”

$ git log -p -2

git ci –amend # 修改最终一次提交记录

我们常用 -p 选用展开突显每一趟提交的始末差距,用 -2 则仅显示近年来的两回立异

git revert <$id> #
恢复生机某次提交的情事,复苏动作本身也开创次提交对象

 

git revert HEAD # 恢复生机末了一回提交的状态

 

查阅文件diff

 

git diff <file> # 相比当前文件和暂存区文件差别 git diff

git revert <md5>

git diff <id1><id1><id2> #
相比一次提交之间的异样

git push

git diff <branch1>..<branch2> # 在八个分支之间比较

留神:恢复生机以前的commit,还要 git push下才算是成功的,不push的话,只是一个commit,并不曾推到云端

git diff –staged # 比较暂存区和版本库差别

 

git diff –cached # 比较暂存区和版本库差距

 

git diff –stat # 仅仅比较计算新闻

 

翻看提交记录

git branch -a             查看所有的支行名称

git log git log <file> # 查看该公文每便提交记录

git checkout <分支名称>   切换来指定的道岔上去

git log -p <file> # 查看每一次详细修改内容的diff

 

git log -p -2 # 查看近来两回详细修改内容的diff

 

git log –stat #查看提交统计新闻

 

tig

git diff       可以查看你在地面转移的情节

Mac上得以选用tig代替diff和log,brew install tig

git diff –stat  查看不一致的总结

Git 本地分支管理

 

查阅、切换、创立和删除分支

 

git br -r # 查看远程分支

》》》》》》》》》》》》

git br <new_branch> # 创制新的支行

用纯命令来是上传代码

git br -v # 查看各类分支最终交给音信

1.先是你改改好了代码

git br –merged # 查看已经被统一到目前支行的支行

2.Git add <你的文件>  当前文件      #一旦是git add .  默许全部改过文件

git br –no-merged # 查看尚未被统一到当前支行的道岔

3.Git commit -m ‘你的诠释都在这中间’

git co <branch> # 切换来某个分支

4.Git push origin master

git co -b <new_branch> # 成立新的分支,并且切换过去

 

git co -b <new_branch> <branch> #
基于branch创建新的new_branch

git co $id #
把某次历史提交记录checkout出来,但无分支音讯,切换来其余分支会自动删除

git co $id -b <new_branch> #
把某次历史提交记录checkout出来,创设成一个分层

git br -d <branch> # 删除某个分支

git br -D <branch> # 强制删除某个分支
(未被联合的分段被删除的时候须求强制)

 分支合并和rebase

git merge <branch> # 将branch分支合并到眼前支行

git merge origin/master –no-ff #
不要法斯特(Fast)-Foward合并,那样可以生成merge提交

git rebase master <branch> # 将master rebase到branch,相当于:
git co <branch> && git rebase master && git co master && git merge
<branch>

 Git补丁管理(方便在多台机械上付出同步时用)

git diff > ../sync.patch # 生成补丁

git apply ../sync.patch # 打补丁

git apply –check ../sync.patch #测试补丁能否成功

 Git暂存管理

git stash # 暂存

git stash list # 列所有stash

git stash apply # 苏醒暂存的始末

git stash drop # 删除暂存区

Git远程分支管理

git pull # 抓取远程仓库所有支行更新并统一到地面

git pull –no-ff # 抓取远程仓库所有支行更新并联合到当地,不要快进合并

git fetch origin # 抓取远程仓库更新

git merge origin/master # 将长途主分支合并到本地当前支行

git co –track origin/branch # 跟踪某个远程分支成立相应的当地分支

git co -b <local_branch> origin/<remote_branch> #
基于远程分支创造本地分支,成效同上

git push # push所有分支

git push origin master # 将地面主分支推到长途主分支

git push -u origin master #
将当地主分支推到长途(如无远程主分支则创设,用于伊始化远程仓库)

git push origin <local_branch> # 创制远程分支,
origin是长途仓库名

git push origin <local_branch>:<remote_branch> #
创制远程分支

git push origin :<remote_branch> #先删除本地分支(git br -d
<branch>),然后再push删除远程分支

Git远程仓库管理

GitHub

git remote -v # 查看远程服务器地址和库房名称

git remote show origin # 查看远程服务器仓库状态

git remote add origin git@ github:robbin/robbin_site.git #
添加远程仓库地址

git remote set-url origin git@ github.com:robbin/robbin_site.git #
设置远程仓库地址(用于修改远程仓库地址) git remote rm <repository>
# 删除远程仓库

创制远程仓库

git clone –bare robbin_site robbin_site.git #
用带本子的种类创设纯版本仓库

scp -r my_project.git git@ git.csdn.net:~ # 将纯仓库上传到服务器上

mkdir robbin_site.git && cd robbin_site.git && git –bare init #
在服务器成立纯仓库

git remote add origin git@ github.com:robbin/robbin_site.git #
设置远程仓库地址

git push -u origin master # 客户端第一次提交

git push -u origin develop #
第一次将地面develop分支提交到长途develop分支,并且track

git remote set-head origin master # 设置远程仓库的HEAD指向master分支

也得以命令设置跟踪远程库和本地库

git branch –set-upstream master origin/master

git branch –set-upstream develop origin/develop

 

转载:http://www.cnblogs.com/cspku/articles/Git\_cmds.html

git init

     在本地新建一个repo,进入一个类型目录,执行git
init,会开头化一个repo,并在脚下文件夹下创制一个.git文件夹.

 

git clone

     获取一个url对应的长距离Git repo, 创设一个local copy.

     一般的格式是git clone [url].

     clone下来的repo会以url最后一个斜线前面的名号命名,创立一个文件夹,如若想要指定特定的称呼,可以git
clone [url] newname指定.

 

git status

     查询repo的状态.

     git status -s: -s表示short,
-s的出口标记会有两列,第一列是对staging区域而言,第二列是对working目录而言.

 

git log

     show commit history of a branch.

     git log –oneline –number: 每条log只显示一行,展现number条.

     git log –oneline –graph:可以图形化地代表出分层合并历史.

     git log branchname可以显得特定分支的log.

     git log –oneline branch1
^branch2,能够查阅在分层1,却不在分支2中的提交.^表示免除那个分支(Window下可能要给^branch2加上引号).

     git log –decorate会显示出tag音信.

     git log –author=[author name] 可以指定作者的交给历史.

     git log –since –before –until –after 根据提交时间筛选log.

     –no-merges可以将merge的commits排除在外.

     git log –grep 按照commit音信过滤log: git log –grep=keywords

     默许情形下, git log –grep
–author是OR的关联,即知足一条即被重返,假使你想让它们是AND的涉及,可以添加–all-match的option.

     git log -S: filter by introduced diff.

     比如: git log -SmethodName (注意S和前边的词之间从未等号分隔).

     git log -p: show patch introduced at each commit.

   
 每一个付给都是一个快照(snapshot),Git会把每一遍提交的diff统计出来,作为一个patch展现给你看.

     另一种办法是git show [SHA].

     git log –stat: show diffstat of changes introduced at each commit.

     同样是用来看改动的相对新闻的,–stat比-p的出口更简约一些.

    

git add

     在交付从前,Git有一个暂存区(staging
area),可以放入新加上的公文或者参加新的改动.
commit时提交的变更是上三次进入到staging
area中的改动,而不是我们disk上的改动.

     git add .

     会递归地抬高当前工作目录中的所有文件.

 

git diff

     不加参数的git diff:

     show diff of unstaged changes.

     此命令相比较的是做事目录中当前文件和暂存区域快照之间的反差,也就是修改以后还尚未暂存起来的更动内容.

 

     若要看已经暂存起来的文本和上次提交时的快照之间的反差,可以用:

     git diff –cached 命令.

     show diff of staged changes.

     (Git 1.6.1 及更高版本还同意利用 git diff –staged,效果是同一的).

 

     git diff HEAD

     show diff of all staged or unstated changes.

     也即对比woking directory和上次交付之间具有的改动.

 

     假使想看自从某个版本之后都改变了怎么,可以用:

     git diff [version tag]

     跟log命令一样,diff也足以添加–stat参数来简化输出.

 

     git diff [branchA] [branchB]可以用来相比多个分支.

     它实在会回来一个由A到B的patch,不是大家想要的结果.

     一般大家想要的结果是三个支行分开之后各自的更动都是怎么,是由命令:

     git diff [branchA]…[branchB]给出的.

     实际上它是:git diff $(git merge-base [branchA] [branchB])
[branchB]的结果.

 

 

git commit

     提交已经被add进来的改动.

     git commit -m “the commit message”

     git commit -a
会先把所有曾经track的文件的变更add进来,然后交到(有点像svn的四次提交,不用先暂存).
对于从未track的文件,照旧须要git add一下.

     git commit –amend 增补提交.
会动用与当下交由节点相同的父节点举办一回新的交付,旧的交付将会被废除.

 

git reset

     undo changes and commits.

   
 那里的HEAD关键字指的是方今支行最末尾最新的一个提交.也就是版本库中该支行上的最新版本.

     git reset HEAD: unstage files from index and reset pointer to HEAD

   
 那一个命令用来把不小心add进去的文件从staged状态取出来,能够独立针对某一个文件操作:
git reset HEAD – – filename, 这么些- – 也得以不加.

     git reset –soft

     move HEAD to specific commit reference, index and staging are
untouched.

     git reset –hard

     unstage files AND undo any changes in the working directory since
last commit.

     使用git reset —hard
HEAD举行reset,即上次提交未来,所有staged的改观和行事目录的更改都会熄灭,还原到上次付出的状态.

     那里的HEAD可以被写成其余三回提交的SHA-1.

     不带soft和hard参数的git reset,实际上带的是默许参数mixed.

 

     总结:

     git reset –mixed
id,是将git的HEAD变了(也就是付诸记录变了),但文件并没有改动,(也就是working
tree并不曾改观). 打消了commit和add的内容.

     git reset –soft id. 实际上,是git reset –mixed id 后,又做了两次git
add.即打消了commit的内容.

     git reset –hard id.是将git的HEAD变了,文件也变了.

     按改动范围排序如下:

     soft (commit) < mixed (commit + add) < hard (commit + add +
local working)

 

git revert

   
 反转打消提交.只要把失误的交由(commit)的名字(reference)作为参数传给命令就足以了.

     git revert HEAD: 废除近年来的一个提交.

     git revert会成立一个反向的新交付,可以通过参数-n来告诉Git先不要提交.

    

git rm

     git rm file: 从staging区移除文件,同时也移除出办事目录.

     git rm –cached: 从staging区移除文件,但留在工作目录中.

     git rm –cached从功用上等同于git reset
HEAD,清除了缓存区,但不动工作目录树.

 

git clean

     git clean是从工作目录中移除没有track的文件.

     日常的参数是git clean -df:

     -d代表还要移除目录,-f表示force,因为在git的配备文件中,
clean.requireForce=true,如若不加-f,clean将会拒绝执行.

 

git mv

     git rm – – cached orig; mv orig new; git add new

 

git stash

     把当前的变动压入一个栈.

     git
stash将会把当前目录和index中的所有变更(但不包罗未track的公文)压入一个栈,然后留下你一个clean的工作意况,即地处上两回最新提交处.

     git stash list会突显那几个栈的list.

     git stash
apply:取出stash中的上一个品种(stash@{0}),并且使用于当下的做事目录.

     也可以指定其他项目,比如git stash apply stash@{1}.

     假若您在运用stash中项目标同时想要删除它,可以用git stash pop

 

     删除stash中的项目:

     git stash drop: 删除上一个,也可指定参数删除指定的一个项目.

     git stash clear: 删除所有项目.

 

git branch

     git branch可以用来列出分层,创造分支和删除分支.

     git branch -v可以瞥见每一个支行的末尾一次提交.

     git branch: 列出地方所有支行,当前分支会被星号标示出.

     git branch (branchname):
创设一个新的分层(当你用那种方法创立分支的时候,分支是依照你的上一遍提交建立的). 

     git branch -d (branchname): 删除一个分支.

     删除remote的分支:

     git push (remote-name) :(branch-name): delete a remote branch.

     那么些是因为完全的命令形式是:

     git push remote-name local-branch:remote-branch

     而那里local-branch的一对为空,就意味着除去了remote-branch

 

git checkout

  git checkout (branchname)

 

 

 切换来一个分支.

     git checkout -b (branchname): 创造并切换来新的分支.

     那么些命令是将git branch newbranch和git checkout
newbranch合在联名的结果.

     checkout还有另一个功效:替换本地转移:

     git checkout –<filename>

   
 此命令会使用HEAD中的最新内容替换掉你的办事目录中的文件.已添加到暂存区的改动以及新文件都不会遭到影响.

     注意:git checkout
filename会删除该公文中拥有没有暂存和提交的改变,这么些操作是不可逆的.

 

git merge

     把一个分段merge进当前的分支.

     git merge [alias]/[branch]

     把远程分支merge到眼前分支.

 

     即使出现争执,必要手动修改,可以用git mergetool.

     解决争辩的时候可以用到git diff,解决完以后用git
add添加,即意味着争辩已经被resolved.

 

git tag

     tag a point in history as import.

   
 会在一个付给上树立永久性的书签,平日是发表一个release版本或者ship了怎么东西之后加tag.

     比如: git tag v1.0

     git tag -a v1.0, -a参数会同意你添加一些音信,即make an annotated
tag.

     当您运行git tag -a命令的时候,Git会打开一个编辑器让你输入tag新闻.

     

     大家可以运用commit SHA来给一个谢世的交由打tag:

     git tag -a v0.9 XXXX

 

     push的时候是不包括tag的,如若想包罗,可以在push时添加–tags参数.

     fetch的时候,branch HEAD可以reach的tags是自行被fetch下来的, tags
that aren’t reachable from branch heads will be
skipped.假设想确保所有的tags都被含有进来,须要加上–tags选项.

 

git remote

     list, add and delete remote repository aliases.

     因为不需求每回都用全体的url,所以Git为每一个remote
repo的url都创设一个别名,然后用git remote来治本那些list.

     git remote: 列出remote aliases.

   
 若是您clone一个project,Git会自动将本来的url添加进入,别名就称为:origin.

     git remote -v:可以看见每一个别名对应的骨子里url.

     git remote add [alias] [url]: 添加一个新的remote repo.

     git remote rm [alias]: 删除一个设有的remote alias.

     git remote rename [old-alias] [new-alias]: 重命名.

     git remote set-url [alias] [url]:更新url.
可以加上—push和fetch参数,为同一个别名set分化的存取地址.

 

git fetch

     download new branches and data from a remote repository.

     可以git fetch [alias]取某一个远程repo,也足以git fetch
–all取到全部repo

     fetch将会取到所有你本地没有的数量,所有取下来的支行能够被称呼remote
branches,它们和地点分支一样(可以看diff,log等,也可以merge到其它分支),不过Git不容许你checkout到它们. 

 

git pull

     fetch from a remote repo and try to merge into the current branch.

     pull == fetch + merge FETCH_HEAD

     git pull会首先实施git fetch,然后实施git merge,把取来的分层的head
merge到当下分支.那一个merge操作会暴发一个新的commit.    

     倘若应用–rebase参数,它会实施git rebase来取代原来的git merge.

  

 

git rebase

     –rebase不会生出合并的付出,它会将当地的保有提交临时保存为补丁(patch),放在”.git/rebase”目录中,然后将如今支行更新到最新的道岔尖端,最终把保存的补丁应用到支行上.

   
 rebase的进度中,也许会见世顶牛,Git会为止rebase并让您解决争辨,在化解完争论之后,用git
add去立异那个情节,然后无需举行commit,只须求:

     git rebase –continue就会持续打余下的补丁.

     git rebase –abort将会停下rebase,当前支行将会回去rebase以前的状态.

 

git push

     push your new branches and data to a remote repository.

     git push [alias] [branch]

   
 将会把近年来支行merge到alias上的[branch]分支.假诺分段已经存在,将会更新,要是不存在,将会助长那么些分支.

     即使有几个人向同一个remote repo push代码,
Git会首先在您准备push的分层上运行git
log,检查它的历史中是不是能来看server上的branch现在的tip,假如地点历史中不能够看出server的tip,表明地方的代码不是风靡的,Git会拒绝你的push,让您先fetch,merge,之后再push,这样就确保了所有人的更改都会被考虑进来.

 

git reflog

     git
reflog是对reflog进行管理的下令,reflog是git用来记录引用变化的一种机制,比如记录分支的浮动或者是HEAD引用的变化.

     当git reflog不指定引用的时候,默许列出HEAD的reflog.

     HEAD@{0}代表HEAD当前的值,HEAD@{3}代表HEAD在3次生成以前的值.

     git会将转移记录到HEAD对应的reflog文件中,其路径为.git/logs/HEAD,
分支的reflog文件都放在.git/logs/refs目录下的子目录中.

 

 

特殊符号:

     ^代表父提交,当一个交由有三个父提交时,能够透过在^前边跟上一个数字,表示第多少个父提交:
^相当于^1.

     ~<n>相当于三番两回的<n>个^.

 

转载:http://www.cnblogs.com/mengdd/p/4153773.html

 

相关文章