标签:mode git reset 指针 epo app 远程 记录 comm 学习
git init #把这个目录变成Git可以管理的仓库
git add readme.txt # 把文件添加到git仓库
git commit -m ‘wrote a readme file‘ # 告诉git把文件提交到仓库, -m 后面输入的是本次提交的说明
git status # 查看当前仓库的状态,有什么文件被修改了,新增了什么文件。。。
git diff readme.txt #查看文件比上次提交的时候,修改了哪些内容
git log --pretty=oneline # 查看commit提交的历史记录,可以查看到commit id,加上--pretty=online显示简化内容, 不加选项的话显示详细内容
git reset --hard HEAD^ # 回退到上一次commit的版本,回退之后,这个commit版本之后commit的版本通过git status就看不到了。不过也没事儿,git reflog可以看到每一次执行的命令,这样即使你退回了之前的版本,想回到将来的版本,也是没问题的。
git reset --hard 4dc0ecf331b6245a9704c5b14163b7553b5411bf # 回退到指定的commit id对应的版本。 Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD的指向修改了而已。
git reflog # 查看你的每一次命令
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本
git 有一个暂存区,git add 的时候其实就是把文件添加到了暂存区里边,然后git commit是从暂存区提交到分支版本库中。
git diff HEAD -- readme.txt # 查看工作区和版本库中readme.txt文件的差别
git checkout -- readme.txt # 当文件被修改,但是还未执行git add 和git commit,可以通过这个命令来回滚到和版本库一样的状态
git reset HEAD readme.txt # 当执行了git add,但是又不想commit了,想回滚回去,可以执行这个命令,清除暂存区。保持版本库和工作区的内容一样。
想删除文件,需要执行以下操作:
rm test.txt
git rm test.txt
git commit -m ‘rm test.txt‘
如果删除了文件,但是还没有commit,现在想恢复文件:
git reset HEAD test.txt
git checkout -- test.txt
添加远程库,并把当前目录推送到远程库:
git remote add origin git@github.com:yangruizeng/learngit.git
git push -u origin master # -u 把本地的master和远端的master联系起来,以后推送的时候命令就比较简单了
git checkout -b dev # 创建一个dev分支 -b表示创建,并切换
git branch dev #创建dev分支
git checkout dev #切换到dev checkeout 切换分支
git branch # 查看当前有哪些分支
git merge dev # 把dev分支的内容合并到master。
git branch -d dev # 删除分支
git log --graph --pretty=oneline --abbrev-commit # 查看分支合并图
在合并分支的时候,如果两个分支的文件有冲突,则必须要解决冲突才能完成合并。
合并分支的时候有两种模式:
Fast forward
--no-ff
第一种模式会把两个分支合并到一块儿,第二个模式会在合并的时候重新提交一个commit,这样,即使把分支删除了,也可以恢复回去。
git merge --no-ff -m "merge with no-ff" # 使用no-ff方式合并分支。
git stash # 保存当前工作区的状态,比如你正在开发代码,突然需要修复一个bug,这时就可以先stash保存一下当前的状态,然后去修改bug,然后再通过命令,切回来。
git stash list # 查看保存的状态列表,
git stash apply # 恢复保存的状态,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
git stash pop #恢复到保存的工作区的状态,而且还会把保存的状态删了。
解决bug,从master新建一个分支出去,解决问题后合并到master,然后删除分支。
新增加一个功能,从dev中新增一个分支,功能测试完毕后合并到dev中,然后删除分支。
git push origin master #把本地的分支,推送到远端的master
git push origin dev # 推送到远端的dev分支
git tag v0.9 6224937 # 打tag,把那个commit 绑定到tag
git tag v1.0 # 打tag,默认对应最近的一次commit。
git tag -a v0.1 -m "version 0.1 released" 3628164 # -a 指定标签名 -m 描述内容
git tag #查看所有标签
git show tagname #查看tag的信息
git push origin v1.0 #推送指定tag到远端
git push origin --tags # 推送所有tags到远端。
删除一个tag需要执行两个步骤:
git tag -d v1.0 #本地删除tag
git push origin :refs/tags/v1.0 #通过push,删除远端的tag
git config --global color.ui true #设置颜色,在git status的时候有一些颜色
忽略特殊文件:
在工作区的根目录下创建一个名为:.gitignore 的文件,把要忽略的文件写到里边就行了
如果git add test.txt失败,则有可能是在.gitignore文件中定义了忽略这个文件,强制添加可以使用git add -f
配置别名:
git config --global alias.st status
设置完成后: git st 就等于 git status
git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
git ci -m "bala bala bala..."
git config --global alias.unstage ‘reset HEAD‘
git unstage test.py
git config --global alias.lg "log --color --graph --pretty=format:‘%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset‘ --abbrev-commit"
每个仓库的Git配置文件都放在.git/config文件中
$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = git@github.com:michaelliao/learngit.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[alias]
last = log -1
而当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中:
$ cat .gitconfig
[alias]
co = checkout
ci = commit
br = branch
st = status
[user]
name = Your Name
email = your@email.com
标签:mode git reset 指针 epo app 远程 记录 comm 学习
原文地址:http://www.cnblogs.com/yangruizeng/p/7419543.html