git学习

来源:互联网 发布:multisim连线优化 编辑:程序博客网 时间:2024/05/22 13:32

一、安装(Install)

1.Linux系统


从git官网上下载源码,解压,依次输入: 1./config 2 make 3 sudo make install


2.Windows系统


从https://git-for-windows.github.io下载,直接安装即可。


在开始菜单中找到Git bash,即说明安装成功,这个时候还需要一步操作。双击Git bash,输入 


git config --global user.name ”Your name”,

git config --global user.email ”your email”。


your name和your email相当你在Github的唯一标识,config --global 指定全局的参数。


二、创建使用Git

创建一个空文件夹,进入目录,初始化git仓库。


1.Mkdir learngit    2.Cd learngit  3.Git init

Git init成功之后,会提示创建了一个空的git仓库,同时在目录下会多出一个.git的文件夹,.git的文件夹存储了仓库信息。创建版本库的时候,git会默认创建一个master主分支,以后的操作如果没指定其他的分支都是基于master主分支。


创建完版本库之后,就可以将文件添加到版本库里了,将文件添加到git仓库需要两步,第一步将文件从工作区添加到暂存区,第二步从暂存区提交到仓库当前分支。


1.Git add test.txt  2.Git commit -m “备注信息”。

可以一次add多个文件,然后一次commit。


三、操作命令

3.1状态

3.1.1 Git status

查看git仓库的状态,显示工作区和暂存区的状态,输出当前所处哪个分支。

3.1.2 Git diff

查看当前工作区和暂存区的区别,如果工作区已经提交到暂存区则没有差别。
Git diff HEAD -- file,可以查看工作区和当前版本库的区别。

3.1.3 Git log

查看历史记录,输出版本id,提交者以及提交时间还有提交时的备注信息,添加参数 --pretty=oneline,只输出版本Id以及备注信息。

3.1.4 Git reflog

查看所有操作记录命令,前面的一串就是版本id
d8c1284 HEAD@{0}: reset: moving to HEAD^
fce05e1 HEAD@{1}: commit: sec
d8c1284 HEAD@{2}: commit (initial): wrote a file




3.2 版本控制

3.2.1 Git reset --hard HEAD^

回退到上一个版本。


3.2.2 Git reset --hard commitid

回退到指定版本,commitid为版本id。


3.3 撤销操作

3.3.1 git checkout -- file

撤销工作区的修改

3.3.2 git reset HEAD file

撤销对于暂存区的修改。

3.4 删除操作

3.4.1 git rm file

从当前工作区和暂存区删除文件,但未提交版本库,git commit命令之后,才提交版本库。
如果想回退,先要让暂存区撤销删除,执行 git reset HEAD file,再撤销工作区的删除,git checkout  -- file。如果已经提交版本库,只能使用 git reset --hard commitid(指定版本id) 或者 git reset  --hard HEAD^回退到最新版本。


3.5 ssh密钥生成

3.5.1 ssh-keygen -t -rsa -C”yourEmail@”

生成ssh key,用于github远程仓库的使用。执行这个命令,一直回车就行,会在用户的文件夹下生成.ssh文件夹,其中包含id_rsa,id_rsa.pub,id_rsa是私钥,id_rsa.pub是公钥,用来在你的github账号的SSH and GPG keys里添加,这样就可以将本地文件推送到github上的远程仓库里。

3.6 远程仓库

3.6.1 git remote add origin git@github.com:huangyz1993/gittest.git

将本地仓库与远程仓库关联。

3.6.2 git push -u origin master

推送本地master分支的文件至远程仓库,第一次推送需要-u,以后推送不需要-u参数,直接git push  origin master。

3.6.3 git clone git@github.com:huangyz1993/gittest.git

从远程仓库克隆到本地。

3.6.4 git push origin branch-name

推送本地branch-name分支至远程仓库。

3.6.5 git pull

更新远程仓库至本地。

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

建立本地分支与远程分支的关系。

3.7 分支操作

3.7.1 Git branch

查看分支。

3.7.2 Git branch name

新建分支。

3.7.3 Git checkout name 

切换分支。

3.7.4 Git checkout -b name

新建并切换分支。

3.7.5 Git merge name

合并分支。

3.7.6 Git branch -d name

删除分支。

3.7.7 Git merge name

合并分支的时候,有冲突的时候,只能自己手动解决冲突,可以是用git status查看冲突文件。解决冲突后,在提交文件,试用Git status就可以看见工作区和暂存区都是干净的了。
因为直接试用git merge name命令会使用fast forward,而fast forward模式会丢失掉分支记录,所以做好采用禁止fast forward模式,将命令修改为Git merge --no--ff -m “comment” name。


3.7.8 Git log --graph

显示分支情况,添加--pretty=oneline参数信息只输出一行,添加--abbrev-commit参数不输出commitid。

3.8 工作现场操作

3.8.1 git stash

保存工作现场。

3.8.2 git stash list

查看所有工作现场列表。

3.8.3 git stash apply

恢复最近一次保存的工作现场stash,git stash apply stashid 恢复id为stashid的工作现场stash,但是不删除保存的工作现场stash。

3.8.4 git stash drop

删除最近保存的工作现场,git stash drop stashid删除指定工作现场。

3.8.5 git stash pop

恢复最近保存的工作现场并删除,git stash pop stashid恢复指定id的工作现场并删除。

3.9 标签操作

3.9.1 git tag tagId

给当前最新commit打标签,git tag tagIdcommitId给指定commit打标签,
Git tag -a “tagId” -m “explain” 给最新commit打标签,-a指定版本号,-m指定说明文字。

3.9.2 git tag -d tagId

删除指定标签。


3.9.3 git push origin tagName
推送tag到远程,git push origin --tags,推送所有tag到远程。已经推送到远程的tag,需要先删除本地tag,再执行git push origin :refs/tags/tagName,删除远程tag。