git学习笔记
2017-10-25 09:30
211 查看
git常用命令示例说明
1. 回到指定版本
git reflog //查看命令历史,以便确定要回到未来的哪个版本 git reset --hard HEAD^ //在Git中,用HEAD表示当前版本 也就是最新的提交 上一个版本就是HEAD^ 上上一个版本就是HEAD^^ 往上100个版本HEAD~100 git reset --hard commit_id //具体的提交版本号 版本号没必要写全,前几位就可以了,Git会自动去找
2. 撤销修改
git checkout -- file //丢弃工作区的修改 如果已add暂存区,恢复至暂存区,否则恢复到最新版本 即恢复到最近一次git commit或git add时的状态 git reset HEAD file //暂存区的修改撤销掉(unstage),重新放回工作区
3. 删除文件
git rm file //确实要从版本库中删除该文件
4.工作现场“储藏”、“恢复”
git stash //将当前工作区储藏 再创建分支来修复bug git stash list //查看储藏的工作区列表 git stash apply //恢复储藏的工作区 git stash apply stash@{0} git stash drop //删除储藏的工作区 git stash pop //恢复的同时把stash内容也删了
5. 分支
git log --graph --pretty=oneline --abbrev-commit //graph可以看到分支合并图 git checkout -b [branch] //创建本地分支 //创建远程分支以当前的本地分支 git push origin [branch](本地指定分支) //创建远程分支映射到本地命名为local-branchname的一分支(已有关联) git checkout -b local-branchname origin/remote_branchname //从远程创建本地分支(已关联) git checkout --track origin/2.0.1.20120806 git branch -r //列出所有远程分支 git branch -a //列出所有本地分支和远程分支 git remote -v //显示所有远程仓库 git branch -d [branch] //删除分支 git branch -D [branch] //强行删除未合并的分支 git branch -dr [remote/branch] //删除远程分支 git push origin :branch-name //删除远程版本 git push origin --delete [branch-name] //删除远程分支 git merge [branch] //合并指定分支到当前分支 git merge --no-ff -m "merge with no-ff" dev //合并不用Fast forward
有冲突了先处理冲突,然后先add,再commit,即合并成功为最新的版本
6.推送、抓取分支
//指定本地dev分支与远程origin/dev分支的链接、关联 git branch --set-upstream [branch] [remote-branch] git branch --set-upstream-to=origin/dev git branch --unset-upstream master //取消对master的跟踪 git pull //同步远程分支origin/dev(与当前本地分支关联的远程分支)并合并 //表示把你的本地当前分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把本地当前分支更新 为最新的"origin"分支,最后把保存的这些补丁应用到本地当前分支上 git pull --rebase git pull [remote] [branch] //取回远程仓库的变化,并与本地分支合并 //一般当前如果不在该分支时,使用这种方式提交。如果当前在20120806 分支下,也可以直接提交git push | git pull git push origin 20120806:20120806 git push origin <local_branch_name>:<remote_branch_name> git remote add [shortname] git alias 配置" target=_blank> // 增加一个新的远程仓库,并命名[/code]7.创建远程分支
//创建远程分支以当前的本地分支(先在本地创建分支) git push origin [branch](本地指定分支) //指定本地dev分支与远程origin/dev分支的链接、关联 git branch --set-upstream [branch] [remote-branch] git branch --set-upstream dev origin/dev git branch --set-upstream-to=origin/dev git branch --unset-upstream master git push origin :[branch] //删除远程分支 git push origin --delete [branch] //删除远程分支 //推送指定本地分支到远程分支上 git push origin <local_branch_name>:<remote_branch_name>8.rebase衍合
//从上游分支获取最新commit信息,并有机的将当前分支和上游分支进行合并 git rebase [branch]9.文件忽略
经测试发现,若要忽略一个文件夹下的部分文件夹,应该一个一个的标示。可能有更好的方法。
若test下有多个文件和文件夹。若要ignore某些文件夹,应该这个配置.gitignore文件。若test下有test1,test2,test3文件。要track test3,则.gitignore文件为:
test/test1
test/test2
!test/test3
若为:
test/
!test/test3 ,则不能track test3。
Git 中的文件忽略
共享式忽略新建 .gitignore 文件,放在工程目录任意位置即可。.gitignore 文件可以忽略自己。忽略的文件,只针对未跟踪文件有效,对已加入版本库的文件无效。
独享式忽略针对具体版本库 :.git/info/exclude针对本地全局: git config --global core.excludefile ~/.gitignore
忽略的语法规则:
(#)表示注释
(*) 表示任意多个字符;
(?) 代表一个字符;
([abc]) 代表可选字符范围
如果名称最前面是路径分隔符 (/) ,表示忽略的该文件在此目录下。
如果名称的最后面是 (/) ,表示忽略整个目录,但同名文件不忽略。
通过在名称前面加 (!) ,代表不忽略。
例子如下:# 这行是注释 *.a # 忽略所有 .a 伟扩展名的文件 !lib.a # 但是 lib.a 不忽略,即时之前设置了忽略所有的 .a /TODO # 只忽略此目录下 TODO 文件,子目录的 TODO 不忽略 build/ # 忽略所有的 build/ 目录下文件 doc/*.txt # 忽略如 doc/notes.txt, 但是不忽略如 doc/server/arch.txtgit alias 配置
[url=http://blog.csdn.net/herohenu/article/details/45842587]git alias 配置[alias] co = checkout ci = commit br = branch st = status unstage = reset HEAD -- last = log -1 HEAD lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit hist = log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short co = checkout // 切换分支,或去到特定的commit ss = status cm = commit -m br = branch bm = branch -m // 修改当前分支的名称 bd = branch -D // 删除某个分支 cb = checkout -b // 新建一个和当前分支一样的分支,并切换过去 df = diff ls = log --stat // 查看每次提交修改了哪些文件, git ls -n, 只看最近的n次提交 lp = log -p // 查看每次提交修改了那些行,git lp -n, 只看最近n次提交 plo = pull origin pho = push origin ls = log --stat lp = log -p plo = pull origin plode = pull origin develop pho = push origin参考资料
[url=http://blog.csdn.net/column/details/jacky-git.html]这个零基础学Git的专栏也不错
廖雪峰写的Git教程,超赞
常用 Git 命令清单
git-rebase(认真看,分析很到位)
git rebase简介(基本篇)
git rebase:永远不要衍合那些已经推送到公共仓库的更新
远程分支创建、提交、拉取
SVN分支的合并和同步