git学习笔记

来源:互联网 发布:虚拟主机软件 编辑:程序博客网 时间:2024/06/03 10:32

学习参考:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

1、本地创建了仓库gitlearn,要同步添加到远程

(1)   创建本地仓库,创建一个空目录gitlearn(路径名尽量不包含中文,以免引起不必要的麻烦),在Git Bashcd进入所建的空目录,输入git init,把这个目录变成git可以管理的仓库。

(2)      创建远程仓库,如在GitHub上创建一个新的仓库gitlearn,为了方便期间,最好同名(不同名不知是否可行?),创建好的远程仓库是空的。

(3)      在本地仓库gitlearn下运行命令:

git remote add origin git@github.com:yourGitHubNam/gitlearn.git

         添加后远程库的名字是origin,是git默认的叫法

(4)      把本地库的所有内容推送到远程库

git push –u origin master //把当前分支master推送到远程

第一次推送master分支时,加上-u参数还会把本地的master分支和远程的master分支关联起来,以后push和pull的时候就可以简化命令。

推送本地提交:git push origin master

(5)      本地新建的分支如果不推送到远程,对其他人就是不可见的;从本地推送分支,使用:git push origin branch-name  //把本地分支修改推送到远程分支对应的分支上

如果推送失败,先用git pull抓取远程的新提交;这样会把本地的分支和推送到远程的分支关联,并会把本地分支的提交推送到远程分支。

(6)      在本地创建和远程分支对应的分支,使用

git checkout -b branch-name origin/branch-name //本地和远程分支的名称最好一致;

建立本地分支和远程分支的关联,使用

git branch --set-upstream branch-name origin/branch-name;

从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

2、从远程库克隆

(1)      先建立一个远程仓

(2)      在本地电脑建立一个工作区目录,在Git Bash中进入到本地目录,运行命令:

git clone git@github.com:yourName/respositoryName.git

就把远程仓库克隆到了本地。Git支持多种协议,包括http,ssh支持的git协议克隆的速度比较快

3、安装和配置:

1Windows版的Gitmsysgit,从http://msysgit.github.io/下并安装后,在开始种会有Git BashGit Gui工具,Git Bashgit的命令行窗口,Git Gui为可视化git工具;

配置:打开GitBash做相应的配置:带global参数是对本机的所有用户有效

$ git config --global user.name "Your name"//在生成补丁、日志时使用

$ git config --global user.email "youremail"  //用户发送补丁

(2)本地仓库和远程如GitHub仓库之间的数据传输室SSH加密的,GitHub需要识别出你推送的提交确实是你推送的;在使用远程仓库之前需要做一些设置,首先创建SSH Key:

ssh-keygen -t rsa -C youremail@example.com

会在主目录生成.ssh目录,下面有文件id_rsa(私钥)和id_rsa.pub(公钥),私钥保证只能本机才能向gitHub中的仓库推送修改,公钥用于在SSH Key中,让别人都看到,确保能看到仓库中的代码。这属于不数据加密,为不对称加密应用。

在GitHub账户的SSH Keys页面添加SSH Key,在GitHub中,Account settings->SSH Keys中,添加SSH Key,title任意,在key文本里粘贴id_rsa.pub文件的内容,确认即可。

4、Git常用命令:

(1)      文件操作命令

git add filename  //把工作区的文件放到暂存区

git commit –m “some description”  //把暂存区的文件提交到当前分区

git status   //查看工作区的状态,告诉我们readme.txt被修改,还没有提交

git diff   //查看文件具体有哪些修改,显示为Unix通用的diff格式

git log   //查看每次的修改,--pretty=oneline可以简单显示变化

git log - -prettry=online - -abbrev-commit

git reset –-hard HEAD^  //回退到上一个版本

git reset –hard ID    //回退到版本号为ID的版本

git reflog   //查看所用过的命令记录

gitcheckout –filename  //撤销注工作区对文件所做的修改

git resetHEAD filename  //把暂存区的修改撤销

git rm test.txt   //从版本库删除文件,并git commit–m “remove test.txt”;

(3)      分支命令

git checkout –b dev  //(创建并切换到dev分支)=gitbranch dev+git checkout dev

git branch    //查看分支,*所在分支为当前分支

git merge dev  //(合并dev分支到master分支) Fastforward模式(默认的模式,删除分支后会丢掉分支信息)

git branch –d dev  //删除分支

git log –graph //查看分支合并图,但查看后页面后出现(end),不能返回正常命令行,输入q即可

Git merge - -no-ff -m “merge with no-off” dev  //-no-ff方式合并分支,还可以从分支历史上看出分支信息

git push origin branch-name //从本地推送分支

git pull    //抓取远程的新提交,若有冲突,需要处理冲突;

(4)      工作现场命令

git stash    //把当前工作现场存储起来

git stash list   //查看以前存储的工作现场

git stash apply  //恢复存储的工作现场

git stash drop  //删除stash内容

git stash pop   //恢复工作现场的同时会把内容删除了

git stash apply stash@{0} //恢复到指定的stash

(5)标签管理

为某个版本打上标签,以后就可以根据标签取得某个指定的版本,标签为指向某个commit的指针。

git tag v1.0  //给当前分支打标签,是最新提交的commit上

git tag  //查看所有标签

git log --pretty=oneline --abbrev-commit  //查看历史提交的commit id

git tag v0.9 commitID  //给指定的commitID打标签

git show v0.9  //查看标签信息

git tag –a v0.1 –m “description” commitID  //创建带有说明的标签

git push origin<tagname>  //推送一个本地标签;

git push origin –tags   //推送全部未推送过的本地标签;

git tag -d<tagname>   //删除一个本地标签;

git push origin:refs/tags/<tagname>   //删除一个远程标签,须先删除本地标签。

忽略某些文件时,需要编写.gitignore;GitHub准备的配置文件,见:

https://github.com/github/gitignore

.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!
0 0