您的位置:首页 > 其它

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.txt


git 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分支的合并和同步
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: