liuyongjiesail / GitCommand

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Credit

############ 本地仓库 ###########

#把当前目录变为git仓库 git init

#查看工作区修改状态 git status

#查看工作区所有文件修改不同对比 git diff

#查看工作区某个文件修改不同对比 git diff text.txt

#把当前目录下所有文件从工作区添加进入暂存区 git add .

#将text.txt文件从工作区添加进入暂存区 git add text.txt

#把暂存区的修改提交到git仓库( -m '修改说明') git commit -m "add distributed"

#查看某个文件内容 cat text.txt

#回退到指定版本 git reset a9d00b7

#回退到上一次修改 git reset --hard HEAD^

#查看修改历史 git reflog

#查看commit log git log --pretty=oneline

#Git删除某个文件 git rm test.txt

#恢复上一步操作 git checkout -- test.txt

#撤销本地所有修改 git checkout .

############ 远程关联仓库 ###########

#删除远程origin git remote rm origin

#把本地仓库和远程仓库关联 git remote add origin git@github.com:liuyongjiesail/Credit.git

#拉取远程仓库 git pull origin master

#合并两个仓库 git pull origin master --allow-unrelated-histories

#推送到远程仓库master git push origin master

#克隆一个远程仓库到本地 (ssh协议和http协议) git clone git@github.com:liuyongjiesail/Credit.git git clone https://github.com/liuyongjiesail/Credit.git

#将本地分支与远程分支关联 git branch --set-upstream-to origin/newName

############ 分支 ########### #创建并切换到dev分支 git checkout -b dev

#创建分支 git branch dev

#切换分支 git checkout dev

#查看所有分支 git branch

#合并分支 git merge dev

#删除分支 git branch -d dev

#查看合并分支图 git log --graph git log --graph --pretty=oneline --abbrev-commit

#注意:如果你目前在一个分支上开发功能,但是临时要在另一个分支上修复bug,但是你在目前的分支上已经做了很多修改而又不想commit(为什么在切换分支的时候一定要commit呢? 其实不commit,也能切换分支,但是会把工作区的修改一起带过去到切换的分支上,这不是我想要的,所以说一般切换分支都要进行commit,原则就是“切换分支过去,给它一个比较干净纯洁的工作区”),可以用git stash把修改保存在当前分支的存储区,回来的时候再用命令 git stash pop(这个命令进行了两个操作 git stash apply -- 恢复, git stash drop -- 删除) 把存储的内容还原回工作区

#查看储存区的内容 git stash list

#把工作去的内容储存起来 git stash

#恢复内容 git stash apply

#删除储存区内容 git stash drop

#恢复并删除 git stash pop

#************************ 标签 ****************************

#打一个标签 git tag v1.0

#查看所有标签 git tag

#对某次commit打一个标签 git tag v0.9 6224937

#查看某次tag git show v0.9

#对某次commit打标签,并加说明 git tag -a v0.1 -m "version 0.1 released" 3628164

#对某次commit打一个标签,并PGP签名标签 git tag -s v0.2 -m "signed version 0.2 released" fec145a

#删除某个标签 git tag -d v0.1

#推送某个标签到远程 git push origin v1.0

#一次性推送全部尚未推送到远程的本地标签 git push origin --tags

#删除远程标签 git push origin :refs/tags/v0.9

#************************** 实用命令 **************************

#删除远程的某次commit,先回退到某次提交,然后强制推送到远程 git reset --hard 12345
git push --force

#值得注意的是,这类操作比较比较危险,例如:在你的commit 3之后别人又提交了新的commit 4,那在你强制推送之后,那位仁兄的commit 4也跟着一起消失了。

#修改最近一次的提交说明 git commit --amend

#如果远程已经修改,强制提交 git push -f

#把目前的修改同步提交到上一次commit git add . git commit --amend

#把目前分支上的某段 commit 合并到 另一个分支上 git rebase [startpoint] [endpoint] --onto [branchName]

#将某个commit 合并到 另一个分支,切换到当前分支,找到那个commitId git cherry-pick [commidId]

#rebase - i 操作 git rebase -i [commitid]

#p, pick = use commit #r, reword = use commit, but edit the commit message #e, edit = use commit, but stop for amending #s, squash = use commit, but meld into previous commit #f, fixup = like "squash", but discard this commit's log message #x, exec = run command (the rest of the line) using shell #d, drop = remove commit

pick: 保留该commit reword: 只修改commit描述,想让哪几个commit改描述,直接在把pick改成reword即可,确定以后按顺序修改描述即可 edit: 不单单能修改commit描述,还能修改本次提交的内容。添加或者删除都可以,完毕后git commit --amend 后在这里就可以修改描述了,最后git rebase --continue 结束即可 squash: 合并 使用squash标注的commit 到上一个commit中,并且几个commit 的描述都保留 fixup: 合并 使用fixup标注的commit 到上一个commit中,但是不保留几个commit 的描述 drop: 删除drop标注的commit

About

License:Other