git学习笔记

来源:互联网 发布:华中科技大学网络与远程教育 编辑:程序博客网 时间:2024/05/22 05:27

推荐一个学习git的教程:
廖雪峰:
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000


1.本地搭建仓库

初始化建立新仓库:git init

关联一个远程仓库:git remote add origin git@server-name:path/repo-name.git

克隆远程仓库到本地:git clone (远程仓库地址)


2.分支操作

查看当前分支:git branch

创建新分支:git branch (分支名)

删除分支:git branch -d (分支名)

切换分支:git checkout (分支名)

创建并切换分支:git checkout -b (分支名)

合并指定分支到当前分支:git merge (分支名) (合并发生冲突时,手动解决发生冲突的文件)

使用–no-ff方式合并并提交:git merge --no-ff -m "message" dev

强行删除没有合并过的分支:git branch -D (分支名)


3.版本/修改操作

回退到以前版本:git reset --hard HEAD^

通过commit id版本回退:git reset --hard commit_id

丢弃工作区的修改,或误删文件时(版本库中没被删除时)恢复文件:git checkout -- (filename)

丢弃暂存区修改,把暂存区的最新一次修改撤销掉,重新放回工作区:git reset HEAD (filename)

工作区删除文件后,在版本库中也删除该文件:git rm (filename)


4.提交到本地仓库

将文件添加到暂存区:git add (filename) (可以用.表示所有都添加)

将暂存区所有内容提交到当前分支:git commit -m "this is a message about this commit"


5.和远程仓库操作

关联后,第一次推送到远程仓库:git push -u origin master

推送最新修改到远程仓库:git push origin master

抓取远程最新提交:git pull

本地分支和远程分支建立连接:git branch -set-upstream dev origin/dev

强制覆盖远程仓库:git push origin master --froce


6.储藏区

储存当前工作区:git stash

恢复stash:git stash apple

删除stash:git stash drop

恢复stash并删除stash:git stash pop


7.标签操作

给分支当前状态打标签:git tag (标签名)

给分支历史commit打标签:git tag (标签名) commit_id

创建带有说明的标签:git tag -a (标签名) -m "message" (commid_id)

删除标签:git tag -d (标签名)

将某个标签推送到远程:git push origin (标签名)

推送所有没推送到远程的标签:git push origin --tags

删除推送到远程的标签(先在本地删除该标签):git push origin :refs/tags/(标签名)


8.查看信息操作

查看工作区状态(有没有改变、改变有没有提交等):git status

查看文件修改内容:git diff (filename)

查看commit提交日志:git log

单行查看commit提交日志:git log --pretty=oneline

查看命令历史记录(可以通过此方法查看commit id):git reflog

查看当前分支:git branch

查看分支合并图:git log --graph

查看储藏列表:git stash list

查看远程仓库信息:git remote

查看远程仓库详细信息:git remote -v

查看所有标签,结果按字母排序:git tag

查看某个标签信息:git show (标签名)

查看两个节点的区别:git diff 版本号1 版本号2

查看两个节点具体文件的区别:git diff 版本号1 版本号2 文件/文件夹名


9.配置操作

配置全局用户名:git config --global user.name (用户名)

配置全局用户邮箱:git config --global user.email (用户邮箱)

生成ssh密钥:ssh-keygen -t rsa -C (用户邮箱)

配置每个字符串的别名:git config --global alias.(别名) (被替换的名)

删除别名:直接到.git/config文件中的[alias]下删除

不将某些文件加入到版本控制中:创建.gitignore文件,把要忽略的文件名写进去


10.注意

①合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。②在团队开发中,master分支应该是稳定的,仅用来发布新版本。干活都在dev分支上,团队的人都将自己的分支和dev分支合并,等到某个时候,dev再和master合并。③在开发中遇到bug要跳出当前分支去别的分支操作时,可以现在当前的工作区储藏起来④在多人合作时,当git push到远程仓库失败时,是因为远程仓库比你当前本地仓库要新,所以要先git pull,拉去远程仓库最新版到本地,如果如冲突要先解决冲突,然后再重新add、commit、push;如果提示“no tracking information”,则说明本地分支和远程分支的连接关系没有创建,要先将本地分支和远程分支建立连接。

小结

当多人合作时,你的开发流程:2017/1/4 更新① 假设项目仓库为A,fork一份到自己的仓库,为B② 将远程B仓库克隆到本地:git clone (远程仓库地址) ③ 进行修改,将修改添加到暂存区:git add (filename)或者git add ./④ 将暂存区的文件都提交:git commit -m "message"⑤ 检查本地仓库:git remote,你会发现有两个仓库origin是你自己的,upstream是你fork的即A⑥ 拉去一份A仓库最新版到本地:git pull upstream master,如果有冲突的话解决冲突,没有冲突就表示两个自动合并了⑦ 重新add和commit,即第③④步操作⑧ 将合并后的分支推送到远程分支:git push origin master⑨ 此时,代码被更新到你自己的仓库B,在github中发起一个pull request给仓库A⑩ 等待仓库A的所有者进行合并就完成了
2 0